55#include "Trilinos_Util_CrsMatrixGallery.h"
57using namespace Trilinos_Util;
62int main(
int argc,
char *argv[])
64 int ierr = 0, i, forierr = 0;
71 MPI_Init(&argc,&argv);
74 MPI_Comm_size(MPI_COMM_WORLD, &size);
75 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
89 if (argc>1)
if (argv[1][0]==
'-' && argv[1][1]==
'v') verbose =
true;
96 int MyPID = Comm.
MyPID();
99 if(verbose && MyPID==0)
102 if (verbose) cout <<
"Processor "<<MyPID<<
" of "<< NumProc
103 <<
" is alive."<<endl;
106 CrsMatrixGallery laplace_2d(
"laplace_2d", Comm);
109 if (verbose) cout <<
"Orig matrix = " << *laplace_2d_matrix << endl;
110 const Epetra_Map * origRowMap = laplace_2d.GetMap();
115 int numNewRowGids = 0;
117 newRowMapGids[numNewRowGids++] = origGids[i];
126 if (verbose) cout <<
"Sub matrix (every other row/column) = " << subA << endl;
130 (*laplace_2d_matrix)[0][0] = 12.0;
131 if (verbose) cout <<
"Orig matrix = " << *laplace_2d_matrix << endl;
132 subMatrixTransform.
fwd();
133 assert(subA[0][0]==12.0);
134 if (verbose) cout <<
"Sub matrix (every other row/column) = " << subA << endl;
139 if (verbose) cout <<
"Sub matrix (every other row/column) = " << subA << endl;
140 subMatrixTransform.
rvs();
141 assert((*laplace_2d_matrix)[0][0]==24.0);
142 if (verbose) cout <<
"Orig matrix = " << *laplace_2d_matrix << endl;
144 if (Comm.
MyPID()==0) cout <<
"EpetraExt::CrsMatrix_SubCopy tests passed." << endl;
std::string Epetra_Version()
Generates a sub-block view of a Epetra_CrsMatrix.
bool fwd()
Forward transfer of data from orig object input in the operator() method call to the new object creat...
bool rvs()
Reverse transfer of data from new object created in the operator() method call to the orig object inp...
int MyGlobalElements(int *MyGlobalElementList) const
const Epetra_Comm & Comm() const
int NumMyElements() const
int main(int argc, char *argv[])