65int main(
int argc,
char *argv[]) {
73 MPI_Init(&argc,&argv);
76 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
86#ifdef HAVE_EPETRA_TEUCHOS
87 Teuchos::RCP<Teuchos::FancyOStream>
88 fancyOut = Teuchos::VerboseObjectBase::getDefaultOStream();
90 fancyOut->setShowProcRank(
true);
91 fancyOut->setOutputToRootOnly(-1);
93 std::ostream &out = *fancyOut;
95 std::ostream &out = std::cout;
102 if (argc>1)
if (argv[1][0]==
'-' && argv[1][1]==
'v') verbose =
true;
109 int MyPID = Comm.
MyPID();
112 if (verbose && MyPID==0)
115 if (verbose) out << Comm <<endl;
117 bool verbose1 = verbose;
120 if (verbose && rank!=0) verbose =
false;
122 int NumMyElements = 10000;
123 int NumMyElements1 = NumMyElements;
124 int NumGlobalElements = NumMyElements*NumProc+
EPETRA_MIN(NumProc,3);
125 if (MyPID < 3) NumMyElements++;
132 if (verbose) out <<
"\n*********************************************************" << endl;
133 if (verbose) out <<
"Checking Epetra_LocalMap(NumMyElements1, IndexBase, Comm)" << endl;
134 if (verbose) out <<
" and Epetra_BlockMap(NumGlobalElements, ElementSize, IndexBase, Comm)" << endl;
135 if (verbose) out <<
"*********************************************************" << endl;
148 if (verbose) out <<
"\n*********************************************************" << endl;
149 if (verbose) out <<
"Checking Epetra_BlockMap(NumGlobalElements, NumMyElements, ElementSize, IndexBase, Comm)" << endl;
150 if (verbose) out <<
"*********************************************************" << endl;
152 BlockMap =
new Epetra_BlockMap(NumGlobalElements, NumMyElements, ElementSize, IndexBase, Comm);
163 int * MyGlobalElements =
new int[NumMyElements];
164 int MaxMyGID = (Comm.
MyPID()+1)*NumMyElements-1+IndexBase;
165 if (Comm.
MyPID()>2) MaxMyGID+=3;
166 for (i = 0; i<NumMyElements; i++) MyGlobalElements[i] = MaxMyGID-i;
168 if (verbose) out <<
"\n*********************************************************" << endl;
169 if (verbose) out <<
"Checking Epetra_BlockMap(NumGlobalElements, NumMyElements, MyGlobalElements, ElementSize, IndexBase, Comm)" << endl;
170 if (verbose) out <<
"*********************************************************" << endl;
172 BlockMap =
new Epetra_BlockMap(NumGlobalElements, NumMyElements, MyGlobalElements, ElementSize,
180 int * ElementSizeList =
new int[NumMyElements];
181 int NumMyEquations = 0;
182 int NumGlobalEquations = 0;
183 for (i = 0; i<NumMyElements; i++)
185 ElementSizeList[i] = i%6+2;
186 NumMyEquations += ElementSizeList[i];
189 NumGlobalEquations = Comm.
NumProc()*NumMyEquations;
195 NumGlobalEquations += 3*((NumMyElements)%6+2);
197 NumGlobalEquations -= (Comm.
NumProc()-3)*((NumMyElements-1)%6+2);
200 if (verbose) out <<
"\n*********************************************************" << endl;
201 if (verbose) out <<
"Checking Epetra_BlockMap(NumGlobalElements, NumMyElements, MyGlobalElements, ElementSizeList, IndexBase, Comm)" << endl;
202 if (verbose) out <<
"*********************************************************" << endl;
204 BlockMap =
new Epetra_BlockMap(NumGlobalElements, NumMyElements, MyGlobalElements, ElementSizeList,
212 if (verbose) out <<
"\n*********************************************************" << endl;
213 if (verbose) out <<
"Checking Epetra_BlockMap(*BlockMap)" << endl;
214 if (verbose) out <<
"*********************************************************" << endl;
222 delete [] ElementSizeList;
223 delete [] MyGlobalElements;
230 if (verbose) out <<
"\n*********************************************************" << endl;
231 if (verbose) out <<
"Checking Epetra_Map(NumGlobalElements, IndexBase, Comm)" << endl;
232 if (verbose) out <<
"*********************************************************" << endl;
243 if (verbose) out <<
"\n*********************************************************" << endl;
244 if (verbose) out <<
"Checking Epetra_Map(NumGlobalElements, NumMyElements, IndexBase, Comm)" << endl;
245 if (verbose) out <<
"*********************************************************" << endl;
247 Map =
new Epetra_Map(NumGlobalElements, NumMyElements, IndexBase, Comm);
258 MyGlobalElements =
new int[NumMyElements];
259 MaxMyGID = (Comm.
MyPID()+1)*NumMyElements-1+IndexBase;
260 if (Comm.
MyPID()>2) MaxMyGID+=3;
261 for (i = 0; i<NumMyElements; i++) MyGlobalElements[i] = MaxMyGID-i;
263 if (verbose) out <<
"\n*********************************************************" << endl;
264 if (verbose) out <<
"Checking Epetra_Map(NumGlobalElements, NumMyElements, MyGlobalElements, IndexBase, Comm)" << endl;
265 if (verbose) out <<
"*********************************************************" << endl;
267 Map =
new Epetra_Map(NumGlobalElements, NumMyElements, MyGlobalElements,
275 if (verbose) out <<
"\n*********************************************************" << endl;
276 if (verbose) out <<
"Checking Epetra_Map(*Map)" << endl;
277 if (verbose) out <<
"*********************************************************" << endl;
285 delete [] MyGlobalElements;
301 const char* VecLabel = A.
Label();
302 const char* VecLabel1 =
"Epetra::Vector";
303 if (verbose) out << endl << endl <<
"This should say " << VecLabel1 <<
": " << VecLabel << endl << endl << endl;
305 if (verbose) out <<
"Testing Assignment operator" << endl;
307 double tmp1 = 1.00001* (double) (MyPID+1);
311 out <<
"On PE "<< MyPID <<
" A[1] should equal = " << tmp1;
312 if (tmp1==tmp2) out <<
" and it does!" << endl;
313 else out <<
" but it equals " << tmp2;
317 if (verbose) out << endl << endl <<
"Testing MFLOPs" << endl;
321 C.
Multiply(
'T',
'N', 0.5, A, B, 0.0);
323 double Multiply_flops = C.
Flops();
324 if (verbose) out <<
"\n\nTotal FLOPs = " << Multiply_flops << endl;
325 if (verbose) out <<
"Total Time = " << Multiply_time << endl;
326 if (verbose) out <<
"MFLOPs = " << Multiply_flops/Multiply_time/1000000.0 << endl;
334 double * Dp =
new double[100];
335 for (i=0; i<100; i++)
339 if (verbose) out <<
"\n\nTesting ostream operator: Multivector should be 100-by-2 and print i,j indices"
343 if (verbose) out <<
"Traceback Mode value = " << D.
GetTracebackMode() << endl;
int main(int argc, char *argv[])