45 #include "Epetra_SerialComm.h" 47 # include "Epetra_MpiComm.h" 49 #include "Epetra_Map.h" 50 #include "Epetra_CrsMatrix.h" 51 #include "Teuchos_as.hpp" 52 #include "Teuchos_Array.hpp" 53 #include "Teuchos_RCP.hpp" 54 #include "Teuchos_Comm.hpp" 55 #include "Teuchos_UnitTestHarness.hpp" 69 using Teuchos::outArg;
72 typedef Teuchos_Ordinal
Ordinal;
76 bool g_dumpAll =
false;
77 bool g_show_all_tests =
false;
82 Teuchos::UnitTestRepository::getCLP().setOption(
83 "local-dim", &
g_localDim,
"Local dimension of each vector." );
84 Teuchos::UnitTestRepository::getCLP().setOption(
85 "show-all-tests",
"no-show-all-tests", &g_show_all_tests,
86 "Set if all tests are shown or not." );
87 Teuchos::UnitTestRepository::getCLP().setOption(
88 "dump-all",
"no-dump-all", &g_dumpAll,
89 "Dump lots of data" );
93 RCP<const Epetra_Comm> getEpetraComm()
96 return rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
98 return rcp(
new Epetra_SerialComm());
103 void createEpetraVsAndMap(
const Thyra::Ordinal localDim_in,
104 const Ptr<RCP<
const Thyra::VectorSpaceBase<double> > > &vs,
105 const Ptr<RCP<const Epetra_Map> > &epetra_map,
106 const int emptyProcRootRank = -1
109 const RCP<const Epetra_Comm> epetra_comm = getEpetraComm();
110 const int procRank = epetra_comm->MyPID();
111 const Thyra::Ordinal localDim = (procRank == emptyProcRootRank ? 0 : localDim_in);
112 *epetra_map = rcp(
new Epetra_Map(-1, as<int>(localDim), 0, *epetra_comm));
117 RCP<Epetra_CrsMatrix> getEpetraMatrix(
int numRows,
int numCols,
double shift=0.0)
120 const RCP<const Epetra_Comm> comm = getEpetraComm();
122 const Epetra_Map rowMap(numRows, 0, *comm);
123 const Epetra_Map domainMap(numCols, numCols, 0, *comm);
125 const RCP<Epetra_CrsMatrix> epetraCrsM =
126 rcp(
new Epetra_CrsMatrix(Copy, rowMap, numCols));
128 Array<double> rowEntries(numCols);
129 Array<int> columnIndices(numCols);
130 for (
int j = 0; j < numCols; ++j) {
131 columnIndices[j] = j;
134 const int numLocalRows = rowMap.NumMyElements();
136 for (
int i = 0; i < numLocalRows; ++i) {
138 for (
int j = 0; j < numCols; ++j) {
139 rowEntries[j] = as<double>(i+1) + as<double>(j+1) / 10 + shift;
142 epetraCrsM->InsertMyValues( i, numCols, &rowEntries[0], &columnIndices[0] );
146 epetraCrsM->FillComplete(domainMap, rowMap);
RCP< const VectorSpaceBase< double > > create_VectorSpace(const RCP< const Epetra_Map > &epetra_map)
Create an VectorSpaceBase object given an Epetra_Map object.