int test_Matrix::serialtest2() { testData* testdata = new testData(localProc_, numProcs_); std::vector<int>& idTypes = testdata->idTypes; std::vector<int>& ids = testdata->ids; fei::SharedPtr<fei::VectorSpace> vspc(new fei::VectorSpace(comm_, "sU_Mat")); vspc->defineIDTypes(idTypes.size(), &idTypes[0]); fei::SharedPtr<fei::MatrixGraph> matgraph(new fei::MatrixGraph_Impl2(vspc, vspc, "sU_Mat")); int numIDs = ids.size(); int idType = idTypes[0]; int patternID = matgraph->definePattern(numIDs, idType); CHK_ERR( matgraph->initConnectivityBlock(0, 1, patternID) ); CHK_ERR( matgraph->initConnectivity(0, 0, &ids[0]) ); CHK_ERR( matgraph->initComplete() ); fei::SharedPtr<fei::FillableMat> ssmat(new fei::FillableMat), ssmatT(new fei::FillableMat); int localsize = matgraph->getRowSpace()->getNumIndices_Owned(); fei::Matrix* matrix = new fei::Matrix_Impl<fei::FillableMat>(ssmat, matgraph, localsize); fei::Matrix* matrixT = new fei::Matrix_Impl<fei::FillableMat>(ssmatT, matgraph, localsize); std::vector<int> indices(numIDs); CHK_ERR( matgraph->getConnectivityIndices(0, 0, numIDs, &indices[0], numIDs) ); std::vector<double> data1(numIDs*numIDs); std::vector<double*> data2d(numIDs); int i; for(i=0; i<numIDs; ++i) { data2d[i] = &(data1[i*numIDs]); } for(i=0; i<numIDs*numIDs; ++i) { data1[i] = 1.0*i; } CHK_ERR( matrix->sumIn(numIDs, &indices[0], numIDs, &indices[0], &data2d[0], 0) ); CHK_ERR( matrixT->sumIn(numIDs, &indices[0], numIDs, &indices[0], &data2d[0], 3) ); if (*ssmat != *ssmatT) { ERReturn(-1); } delete matrix; delete matrixT; delete testdata; return(0); }
Interactor* Builder::PannerPositionControls () { Tray* t = new Tray; Interactor* pannerLabel = PannerLabel(); t->HBox(t, pannerLabel); t->HBox(t, hspc(2), topleft, hspc(), topright, new HGlue, t); t->HBox(t, hspc(2), bottomleft, hspc(), bottomright, new HGlue, t); t->Align(Left, topleft, bottomleft); t->Align(Left, topright, bottomright); t->VBox(t, pannerLabel, vspc(), topleft, vspc(), bottomleft, t); t->Align(VertCenter, topleft, topright); t->Align(VertCenter, bottomleft, bottomright); return t; }
Interactor* Builder::ScrollerPositionControls () { Tray* t = new Tray; Interactor* scrollerLabel = ScrollerLabel(); Interactor* hscrollerPositions = HScrollerPositions(); Interactor* vscrollerPositions = VScrollerPositions(); t->HBox(t, scrollerLabel); t->HBox(t, hspc(2), horizontal, hspc(2), hscrollerPositions, new HGlue, t); t->HBox(t, hspc(2), vertical, hspc(2), vscrollerPositions, new HGlue, t); t->Align(Left, horizontal, vertical); t->Align(Left, hscrollerPositions, vscrollerPositions); t->VBox(t, scrollerLabel, vspc(), horizontal, vspc(), vertical, t); t->Align(VertCenter, horizontal, hscrollerPositions); t->Align(VertCenter, vertical, vscrollerPositions); return t; }
Interactor* Builder::TypeSizeControls () { Tray* t = new Tray; Interactor* typeLabel = TypeLabel(); Interactor* types = Types(); Interactor* sizeLabel = SizeLabel(); Interactor* sizes = Sizes(); t->HBox(t, typeLabel, hgap(), types, new HGlue, t); t->HBox(t, sizeLabel, hgap(), sizes, new HGlue, t); t->Align(Left, types, sizes); t->VBox(t, typeLabel, vspc(), sizeLabel, t); t->Align(VertCenter, typeLabel, types); t->Align(VertCenter, sizeLabel, sizes); return t; }
int test_Matrix::serialtest3() { testData* testdata = new testData(localProc_, numProcs_); std::vector<int>& fieldIDs = testdata->fieldIDs; std::vector<int>& fieldSizes = testdata->fieldSizes; std::vector<int>& idTypes = testdata->idTypes; std::vector<int>& ids = testdata->ids; fei::SharedPtr<fei::VectorSpace> vspc(new fei::VectorSpace(comm_, "sU_Mat3")); vspc->defineFields(fieldIDs.size(), &fieldIDs[0], &fieldSizes[0]); vspc->defineIDTypes(idTypes.size(), &idTypes[0]); fei::SharedPtr<fei::MatrixGraph> matgraph(new fei::MatrixGraph_Impl2(vspc, vspc, "sU_Mat3")); int numIDs = ids.size(); int fieldID = fieldIDs[0]; int idType = idTypes[0]; int patternID = matgraph->definePattern(numIDs, idType, fieldID); CHK_ERR( matgraph->initConnectivityBlock(0, 1, patternID) ); CHK_ERR( matgraph->initConnectivity(0, 0, &ids[0]) ); //set up a slave constraint that defines id 2, field 0 to be equal to //id 1, field 0. int offsetOfSlave = 1; int offsetIntoSlaveField = 0; std::vector<double> weights(2); weights[0] = 1.0; weights[1] = -1.0; double rhsValue = 0.0; std::vector<int> cr_idtypes(2, idTypes[0]); std::vector<int> cr_fieldIDs(2, fieldIDs[0]); CHK_ERR( matgraph->initSlaveConstraint(2, //numIDs &cr_idtypes[0], &ids[1], &cr_fieldIDs[0], offsetOfSlave, offsetIntoSlaveField, &weights[0], rhsValue) ); CHK_ERR( matgraph->initComplete() ); fei::SharedPtr<fei::FillableMat> ssmat(new fei::FillableMat); int localsize = matgraph->getRowSpace()->getNumIndices_Owned(); localsize -= 1;//subtract the slave fei::Matrix* matrix = new fei::Matrix_Impl<fei::FillableMat>(ssmat, matgraph, localsize); if (matrix == NULL) { ERReturn(-1); } std::vector<int> indices(numIDs); CHK_ERR( matgraph->getConnectivityIndices(0, 0, numIDs, &indices[0], numIDs) ); std::vector<double> data1(numIDs*numIDs); std::vector<double*> data2d(numIDs); int i; for(i=0; i<numIDs; ++i) { data2d[i] = &(data1[i*numIDs]); } for(i=0; i<numIDs*numIDs; ++i) { data1[i] = 1.0*i; } CHK_ERR( matrix->sumIn(numIDs, &indices[0], numIDs, &indices[0], &data2d[0], 0) ); CHK_ERR( matrix->sumIn(0, 0, &data2d[0], 0) ); delete matrix; delete testdata; return(0); }