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;
103 long long NumGlobalRowsB =
B.NumGlobalRows64();
104 long long NumGlobalNonzerosB =
B.NumGlobalNonzeros64();
108 for (
int i = 0 ; i <
A->NumMyRows() ; ++i)
109 X[i] = 1.0*
A->RowMatrixRowMap().GID64(i);
122 if (Comm.
MyPID() == 0)
123 cout <<
"Norm of Y using B = " << Norm_B << endl;
132 if (Comm.
MyPID() == 0)
133 cout <<
"Time to create C = " << Time.
ElapsedTime() << endl;
136 long long NumGlobalRowsC =
C.NumGlobalRows64();
137 long long NumGlobalNonzerosC =
C.NumGlobalNonzeros64();
138 if (NumGlobalRowsB != NumGlobalRowsC) {
139 std::ostringstream os;
140 os <<
"NumGlobalRowsB = " << NumGlobalRowsB
141 <<
" != NumGlobalRowsC = " << NumGlobalRowsC <<
".";
142 throw std::logic_error (os.str ());
144 if (NumGlobalNonzerosB != NumGlobalNonzerosC) {
145 std::ostringstream os;
146 os <<
"NumGlobalNonzerosB = " << NumGlobalNonzerosB
147 <<
" != NumGlobalNonzerosC = " << NumGlobalNonzerosC <<
".";
148 throw std::logic_error (os.str ());
160 if (Comm.
MyPID() == 0)
161 cout <<
"Norm of Y using C = " << Norm_C << endl;
176 if (Comm.
MyPID() == 0)
177 cout <<
"Test `TestOverlappingRowMatrix.exe' passed!" << endl;
179 return(EXIT_SUCCESS);