5 #include "Epetra_MpiComm.h" 7 #include "Epetra_SerialComm.h" 9 #include "Epetra_Util.h" 10 #include "Epetra_Map.h" 11 #include "Epetra_Vector.h" 12 #include "Epetra_CrsMatrix.h" 13 #include "Epetra_LinearProblem.h" 14 #include "Epetra_Export.h" 16 #include "Teuchos_ParameterList.hpp" 17 #include "Teuchos_RCP.hpp" 18 #include "Galeri_ReadHB.h" 24 int main(
int argc,
char *argv[])
27 MPI_Init(&argc, &argv);
28 Epetra_MpiComm Comm(MPI_COMM_WORLD);
30 Epetra_SerialComm Comm;
44 Epetra_CrsMatrix* readA;
47 Epetra_Vector* readxexact;
50 std::string matrix_file=
"bcsstm05_ns.rua";
53 Galeri::ReadHB(matrix_file.c_str(), Comm, readMap,
54 readA, readx, readb, readxexact);
58 std::cout <<
"Caught exception, maybe file name is incorrect" << std::endl;
71 Epetra_Map* mapPtr = 0;
72 if(readMap->GlobalIndicesInt())
73 mapPtr =
new Epetra_Map((
int) readMap->NumGlobalElements(), 0, Comm);
74 else if(readMap->GlobalIndicesLongLong())
75 mapPtr =
new Epetra_Map(readMap->NumGlobalElements(), 0, Comm);
79 Epetra_Map& map = *mapPtr;
82 Epetra_CrsMatrix A(Copy, map, 0);
84 const Epetra_Map &OriginalMap = readA->RowMatrixRowMap() ;
85 assert (OriginalMap.SameAs(*readMap));
86 Epetra_Export exporter(OriginalMap, map);
90 Epetra_Vector xexact(map);
93 x.Export(*readx, exporter, Add);
94 b.Export(*readb, exporter, Add);
95 xexact.Export(*readxexact, exporter, Add);
96 A.Export(*readA, exporter, Add);
108 Epetra_LinearProblem problem(&A,&x,&b);
118 std::string solverType =
"Klu";
119 Teuchos::RCP<Amesos_BaseSolver> solver = Teuchos::rcp( factory.
Create(solverType, problem) );
122 int symRet = solver->SymbolicFactorization();
124 std::cout <<
"Processor "<< map.Comm().MyPID() <<
" : Symbolic factorization did not complete!" << std::endl;
128 int numRet = solver->NumericFactorization();
130 std::cout <<
"Processor "<< map.Comm().MyPID() <<
" : Numeric factorization did not complete!" << std::endl;
135 Comm.MinAll( &numRet, &minRet, 1 );
139 std::cout << std::endl <<
"End Result: TEST FAILED" << std::endl;
143 std::cout << std::endl <<
"End Result: TEST PASSED" << std::endl;
int main(int argc, char *argv[])
Factory for binding a third party direct solver to an Epetra_LinearProblem.
Amesos_BaseSolver * Create(const char *ClassType, const Epetra_LinearProblem &LinearProblem)
Amesos Create method.
const int NumericallySingularMatrixError