46 #include "Epetra_MpiComm.h" 
   48 #include "Epetra_SerialComm.h" 
   50 #include "Epetra_CrsMatrix.h" 
   51 #include "Epetra_Vector.h" 
   52 #include "Epetra_LinearProblem.h" 
   53 #include "Epetra_Map.h" 
   54 #include "Epetra_Import.h" 
   55 #include "Epetra_Time.h" 
   56 #include "Galeri_Maps.h" 
   57 #include "Galeri_CrsMatrices.h" 
   58 #include "Teuchos_ParameterList.hpp" 
   59 #include "Teuchos_RefCountPtr.hpp" 
   64 int main(
int argc, 
char *argv[])
 
   67   MPI_Init(&argc,&argv);
 
   78     cout << 
"Test `TestOverlappingRowMatrix.exe' passed!" << endl;
 
   84   GaleriList.
set(
"n", nx * nx);
 
   85   GaleriList.
set(
"nx", nx);
 
   86   GaleriList.
set(
"ny", nx);
 
   87   Teuchos::RefCountPtr<Epetra_Map> Map = 
Teuchos::rcp( Galeri::CreateMap64(
"Linear", Comm, GaleriList) );
 
   88   Teuchos::RefCountPtr<Epetra_CrsMatrix> 
A = 
Teuchos::rcp( Galeri::CreateCrsMatrix(
"Laplace2D", &*Map, GaleriList) );
 
  100   if (Comm.
MyPID() == 0)
 
  101     cout << 
"Time to create B = " << Time.
ElapsedTime() << endl;
 
  108   for (
int i = 0 ; i < A->NumMyRows() ; ++i)
 
  109     X[i] = 1.0* A->RowMatrixRowMap().GID64(i);
 
  114   ExtY_B.PutScalar(0.0);
 
  122   if (Comm.
MyPID() == 0)
 
  123     cout << 
"Norm of Y using B = " << Norm_B << endl;
 
  131   if (Comm.
MyPID() == 0)
 
  132     cout << 
"Time to create C = " << Time.
ElapsedTime() << endl;
 
  137   if (NumGlobalRowsB != NumGlobalRowsC) {
 
  138     std::ostringstream os;
 
  139     os << 
"NumGlobalRowsB = " << NumGlobalRowsB
 
  140        << 
" != NumGlobalRowsC = " << NumGlobalRowsC << 
".";
 
  141     throw std::logic_error (os.str ());
 
  143   if (NumGlobalNonzerosB != NumGlobalNonzerosC) {
 
  144     std::ostringstream os;
 
  145     os << 
"NumGlobalNonzerosB = " << NumGlobalNonzerosB
 
  146        << 
" != NumGlobalNonzerosC = " << NumGlobalNonzerosC << 
".";
 
  147     throw std::logic_error (os.str ());
 
  152   ExtY_C.PutScalar(0.0);
 
  159   if (Comm.
MyPID() == 0)
 
  160     cout << 
"Norm of Y using C = " << Norm_C << endl;
 
  175   if (Comm.
MyPID() == 0)
 
  176     cout << 
"Test `TestOverlappingRowMatrix.exe' passed!" << endl;
 
  178   return(EXIT_SUCCESS);
 
long long NumGlobalRows64() const 
virtual long long NumGlobalNonzeros64() const 
Returns the number of nonzero entries in the global matrix. 
int Multiply(bool TransA, const Epetra_Vector &x, Epetra_Vector &y) const 
double ElapsedTime(void) const 
const Epetra_Map & RowMatrixRowMap() const 
ParameterList & set(std::string const &name, T &&value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Epetra_CrsMatrix * Ifpack_CreateOverlappingCrsMatrix(const Epetra_RowMatrix *Matrix, const int OverlappingLevel)
Creates an overlapping Epetra_CrsMatrix. Returns 0 if OverlappingLevel is 0. 
long long NumGlobalNonzeros64() const 
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const 
Returns the result of a Epetra_RowMatrix multiplied by a Epetra_MultiVector X in Y. 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Ifpack_OverlappingRowMatrix: matrix with ghost rows, based on Epetra_RowMatrix. 
Ifpack_LocalFilter a class for light-weight extraction of the submatrix corresponding to local rows a...
int main(int argc, char *argv[])
virtual long long NumGlobalRows64() const 
Returns the number of global matrix rows. 
virtual const Epetra_Map & RowMatrixRowMap() const 
Returns the Epetra_Map object associated with the rows of this matrix. 
int ImportMultiVector(const Epetra_MultiVector &X, Epetra_MultiVector &OvX, Epetra_CombineMode CM=Insert)
int ExportMultiVector(const Epetra_MultiVector &OvX, Epetra_MultiVector &X, Epetra_CombineMode CM=Add)
#define IFPACK_CHK_ERR(ifpack_err)
void ResetStartTime(void)