Amesos Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TestAllClasses.cpp
Go to the documentation of this file.
1 #include "Epetra_Comm.h"
2 #include "Epetra_Map.h"
3 #include "Epetra_CrsMatrix.h"
4 #include "TestAllClasses.h"
5 #include "TestOtherClasses.h"
6 #include "TestSuperludist.h"
7 #include "TestScalapack.h"
8 #include "TestKlu.h"
9 #include "Amesos.h"
10 
11 int TestAllClasses( const std::vector<std::string> AmesosClasses,
12  int EpetraMatrixType,
13  const std::vector<bool> AmesosClassesInstalled,
14  Epetra_CrsMatrix *& Amat,
15  const bool transpose,
16  const bool verbose,
17  const bool symmetric,
18  const int Levels,
19  const double Rcond,
20  int Diagonal,
21  int ReindexRowMap,
22  int ReindexColMap,
23  int RangeMapType,
24  int DomainMapType,
25  bool distribute,
26  const char *filename,
27  double &maxrelerror,
28  double &maxrelresidual,
29  int &NumTests ) {
30 
31  assert( NumTests == 0 ) ;
32 
33  bool RowMapEqualsColMap = ( ReindexColMap == 0 ) ;
34 
35 
36  std::string StringFilename = filename ;
37  bool bcsstk04 = ( StringFilename.find("bcsstk04") < StringFilename.find("xdz_notaname_garbage") );
38  bool Khead = ( StringFilename.find("Khead") < StringFilename.find("xdz_notaname_garbage") );
39  bool Superlu_rua = ( StringFilename.find("Superlu") < StringFilename.find("xdz_notaname_garbage") );
40  bool ImpcolB = ( StringFilename.find("ImpcolB") < StringFilename.find("xdz_notaname_garbage") );
41  bool a662_bus_out = ( StringFilename.find("662_bus_out") < StringFilename.find("xdz_notaname_garbage") );
42  bool MissingADiagonal = ( StringFilename.find("MissingADiagonal") < StringFilename.find("xdz_notaname_garbage") ) ||
43  ( StringFilename.find("ImpcolB.rua") < StringFilename.find("xdz_notaname_garbage") );
44  bool FileIsDiagonal = ( StringFilename.find("Diagonal") < StringFilename.find("xdz_notaname_garbage") ) &&
45  ! MissingADiagonal ;
46 
47  bool NumericallySingular = ( StringFilename.find("NumericallySingular") < StringFilename.find("xdz_notaname_garbage") );
48  bool StructurallySingular = ( StringFilename.find("StructurallySingular") < StringFilename.find("xdz_notaname_garbage") );
49 
50  int ExpectedError = 0;
51  if ( NumericallySingular ) ExpectedError = NumericallySingularMatrixError ;
52  if ( StructurallySingular ) ExpectedError = StructurallySingularMatrixError ;
53 
54  const Epetra_Map& row_map = Amat->RowMap() ;
55 
56  const int NumAmesosClasses = AmesosClasses.size();
57  int errors = 0 ;
58 
59  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) && EpetraMatrixType == 1 )
60  return 0 ; // Can't reindex a RowMatrix because we don't know the indices up front
61 
62 
63 
64  bool ReIndex = ReindexRowMap || ReindexColMap ;
65 
66  for (int i=0; i < NumAmesosClasses; i++ ) {
67  if ( AmesosClassesInstalled[i] ) {
68  int Errors = 0 ;
69  int NumTheseTests = 0 ;
70  if ( Amat->Comm().MyPID() == 0 ) {
71  if ( verbose && ( ! ReIndex ) ) {
72 
73  std::cout << "TestAllClasses.cpp::" << __LINE__
74  << " Perhaps about to test "
75  << AmesosClasses[i] << " "
76  << " EMT=" << EpetraMatrixType
77  << " tr=" << transpose
78  << " sym=" << symmetric
79  << " L=" << Levels
80  << " D=" << Diagonal
81  << " RRM= " << ReindexRowMap
82  << " RCM= " << ReindexColMap
83  << " DMT= " << DomainMapType
84  << " RMT= " << RangeMapType
85  << " d=" << distribute
86  << " fn= " << filename
87  << std::endl ;
88  }
89  }
90  if ( AmesosClasses[i] == "Amesos_Scalapack") {
91  bool RunScalapackTest = true;
92  if ( ExpectedError != 0 ) RunScalapackTest = false ; // Bug #1227
93  if ( ReindexRowMap || ReindexColMap ) RunScalapackTest = false ; // Bug #969
94  if ( ( RangeMapType != 0 || DomainMapType != 0 ) )
95  RunScalapackTest = false ; // Bug #1403
96  if ( RunScalapackTest && verbose) std::cout << " Testing SCALAPACK " << std::endl ;
97  if ( RunScalapackTest ) Errors = TestScalapack( Amat,
98  EpetraMatrixType,
99  transpose,
100  verbose,
101  Levels,
102  Rcond,
103  maxrelerror,
104  maxrelresidual,
105  NumTheseTests ) ;
106 
107  } else if ( AmesosClasses[i] == "Amesos_Umfpack" ) {
108  bool RunUmfpackTest = true;
109  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) && row_map.DistributedGlobal() )
110  RunUmfpackTest = false ; // Bug #969
111  if ( ( RangeMapType != 0 || DomainMapType != 0 ) )
112  RunUmfpackTest = false ; // Bug #1403
113  if ( ExpectedError != 0 ) RunUmfpackTest = false ; // Bug #1227
114 
115  if ( RunUmfpackTest && verbose) std::cout << " Testing UMFPACK " << std::endl ;
116 
117  if ( RunUmfpackTest ) Errors = TestOtherClasses("Amesos_Umfpack",
118  EpetraMatrixType,
119  Amat,
120  transpose,
121  verbose,
122  Levels,
123  Rcond,
124  RowMapEqualsColMap,
125  false,
126  ExpectedError,
127  maxrelerror,
128  maxrelresidual,
129  NumTheseTests ) ;
130 #if 0
131 
132  Calling TestOtherClasses to test Amesos_Klu, ought to work, but it crashes
133 
134  } else if ( AmesosClasses[i] == "Amesos_Klu" ) {
135  bool RunKluTest = true;
136  // We only test reindexing on klu and paraklete
137  if ( ( verbose && ( ReIndex ) ) {
138 
139  std::cout << __FILE__ << "::" << __LINE__
140  << " Perhaps about to test "
141  << AmesosClasses[i] << " "
142  << " EpetraMatrixType = " << EpetraMatrixType
143  << " transpose = " << transpose
144  << " symmetric = " << symmetric
145  << " Levels = " << Levels
146  << " Diagonal = " << Diagonal
147  << " ReindexRowMap = " << ReindexRowMap
148  << " ReindexColMap = " << ReindexColMap
149  << " DomainMapType = " << DomainMapType
150  << " RangeMapType = " << RangeMapType
151  << " distribute = " << distribute
152  << " filename = " << filename
153  << std::endl ;
154  }
155  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) && row_map.DistributedGlobal() )
156  RunKluTest = false ; // Bug #969
157  if ( ( ReindexColMap != 0 ) ) // Bug #969
158  RunKluTest = false ; // Bug #969
159  if ( ( RangeMapType != 0 || DomainMapType != 0 ) )
160  RunKluTest = false ; // Bug #1403
161  if ( ExpectedError != 0 ) RunUmfpackTest = false ; // Bug #1227
162 
163 
164 
165 
166  if ( RunKluTest && verbose) std::cout << " Testing KLU " << std::endl ;
167 
168  if ( RunKluTest ) Errors = TestOtherClasses("Amesos_Klu",
169  EpetraMatrixType,
170  Amat,
171  transpose,
172  verbose,
173  Levels,
174  Rcond,
175  RowMapEqualsColMap,
176  false,
177  ExpectedError,
178  maxrelerror,
179  maxrelresidual,
180  NumTheseTests ) ;
181 #endif
182  } else if ( AmesosClasses[i] == "Amesos_Lapack" ) {
183  bool RunLapackTest = true;
184  if ( ExpectedError == NumericallySingularMatrixError ) RunLapackTest = false ; // Bug #1227
185  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) && row_map.DistributedGlobal() )
186  RunLapackTest = false ; // Bug #969
187 
188  if ( RunLapackTest && verbose) std::cout << " Testing LAPACK " << std::endl ;
189 
190  if ( RunLapackTest ) Errors = TestOtherClasses("Amesos_Lapack",
191  EpetraMatrixType,
192  Amat,
193  transpose,
194  verbose,
195  Levels,
196  Rcond,
197  RowMapEqualsColMap,
198  false,
199  ExpectedError,
200  maxrelerror,
201  maxrelresidual,
202  NumTheseTests ) ;
203  } else if ( AmesosClasses[i] == "Amesos_Taucs" ) {
204  bool RunTaucsTest = true;
205  if ( ExpectedError != 0 ) RunTaucsTest = false ; // Bug #1227
206  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) )
207  RunTaucsTest = false ; // Bug #969
208  if ( ( RangeMapType != 0 || DomainMapType != 0 ) )
209  RunTaucsTest = false ; // Bug #1403
210  // if ( MissingADiagonal ) RunTaucsTest = false ; // Bug #1449
211  // if ( transpose ) RunTaucsTest = false ; // Bug #1579
212  if ( a662_bus_out) RunTaucsTest = false ; // Bug #1449
213  if ( ! symmetric ) RunTaucsTest = false ;
214  if ( Khead ) RunTaucsTest = false ; // Bug #1449
215 
216  if ( RunTaucsTest && verbose) std::cout << " Testing TAUCS " << std::endl ;
217 
218 
219  if ( RunTaucsTest ) Errors = TestOtherClasses("Amesos_Taucs",
220  EpetraMatrixType,
221  Amat,
222  transpose,
223  verbose,
224  Levels,
225  Rcond,
226  RowMapEqualsColMap,
227  false,
228  ExpectedError,
229  maxrelerror,
230  maxrelresidual,
231  NumTheseTests ) ;
232 
233  } else if ( AmesosClasses[i] == "Amesos_Pardiso" ) {
234  bool RunPardisoTest = true;
235  if ( ExpectedError != 0 ) RunPardisoTest = false ; // Bug #1227
236  if ( ReindexRowMap != 0 || ReindexColMap != 0 ) // Bug #969
237  RunPardisoTest = false ; // Bug #969
238  if ( ( RangeMapType != 0 || DomainMapType != 0 ) )
239  RunPardisoTest = false ; // Bug #1403
240  if ( bcsstk04 ) RunPardisoTest = false ; // Bug #1916
241  if ( a662_bus_out ) RunPardisoTest = false ; // Bug #1916
242  if ( transpose ) RunPardisoTest = false ; // Bug #1992
243  if ( MissingADiagonal ) RunPardisoTest = false ; // Bug #1916
244  if ( Khead ) RunPardisoTest = false ; // Bug #1916
245  if ( EpetraMatrixType == 1 ) RunPardisoTest = false ; // Bug #1994
246  if ( distribute ) RunPardisoTest = false ; // Bug #1995
247  if ( RunPardisoTest && verbose) std::cout << " Testing PARDISO " << std::endl ;
248  if ( Amat->Comm().NumProc() > 1 ) RunPardisoTest = false ;
249 
250  if ( RunPardisoTest ) Errors = TestOtherClasses("Amesos_Pardiso",
251  EpetraMatrixType,
252  Amat,
253  transpose,
254  verbose,
255  Levels,
256  Rcond,
257  RowMapEqualsColMap,
258  false,
259  ExpectedError,
260  maxrelerror,
261  maxrelresidual,
262  NumTheseTests ) ;
263 
264  } else if ( AmesosClasses[i] == "Amesos_Mumps" ) {
265  bool RunMumpsTest = true;
266  if ( ExpectedError != 0 ) RunMumpsTest = false ; // Bug #1227
267  if ( ( ReindexRowMap || ReindexColMap ) )
268  RunMumpsTest = false ; // Bug #969
269  if ( ( RangeMapType != 0 || DomainMapType != 0 ) ) RunMumpsTest = false ; // Bug #1403
270  if ( MissingADiagonal ) RunMumpsTest = false ; // Bug #1435
271  if ( distribute ) RunMumpsTest = false ; // Bug #
272  if ( RunMumpsTest && verbose) std::cout << " Testing MUMPS " << std::endl ;
273 
274  if ( RunMumpsTest ) Errors = TestOtherClasses("Amesos_Mumps",
275  EpetraMatrixType,
276  Amat,
277  transpose,
278  verbose,
279  Levels,
280  Rcond,
281  RowMapEqualsColMap,
282  false,
283  ExpectedError,
284  maxrelerror,
285  maxrelresidual,
286  NumTheseTests ) ;
287 
288  } else if ( AmesosClasses[i] == "Amesos_Klu" ) {
289  bool RunKluTest = true;
290  if ( ( ReindexColMap != 0 ) ) // Bug #969
291  RunKluTest = false ; // Bug #969
292 
293  // if ( ( RangeMapType != 0 || DomainMapType != 0 ) ) RunKluTest = false ; // Bug #1403
294 
295  Teuchos::ParameterList ParamList;
296  if ( ReindexRowMap != 0 ) ParamList.set( "Reindex", true );
297  if ( ( RangeMapType != 0 || DomainMapType != 0 || distribute ) )
298  ParamList.set( "DontTrustMe", true );
299 #ifndef HAVE_AMESOS_EPETRAEXT
300  if ( ( ReindexRowMap || ReindexColMap ) )
301  RunKluTest = false ;
302 #endif
303  if ( ImpcolB ) RunKluTest = false ; // See bug #1928
304  if ( ( RangeMapType ==2 && DomainMapType == 1 && distribute == 1 && EpetraMatrixType == 2 && transpose == 0 && Superlu_rua ) ) RunKluTest = false ; // Bug #2000
305 
306  if ( RunKluTest && verbose) std::cout << " Testing KLU " << std::endl ;
307  if ( RunKluTest && verbose) std::cout << " Testing KLU ExpectedError = "
308  << ExpectedError << std::endl ;
309 
310  if ( RunKluTest ) Errors = TestKlu( Amat,
311  EpetraMatrixType,
312  transpose,
313  verbose,
314  Levels,
315  Rcond,
316  ParamList,
317  RowMapEqualsColMap,
318  false,
319  ExpectedError,
320  maxrelerror,
321  maxrelresidual,
322  NumTheseTests ) ;
323 
324  if ( Amat->Comm().MyPID() == 0 && Errors )
325  std::cout << " FAILURE in "
326  << __FILE__ << "::" << __LINE__
327  << " Amesos_Klu"
328  << " EpetraMatrixType = " << EpetraMatrixType
329  << " transpose = " << transpose
330  << " symmetric = " << symmetric
331  << " Levels = " << Levels
332  << " Diagonal = " << Diagonal
333  << " ReindexRowMap = " << ReindexRowMap
334  << " ReindexColMap = " << ReindexColMap
335  << " DomainMapType = " << DomainMapType
336  << " RangeMapType = " << RangeMapType
337  << " distribute = " << distribute
338  << " filename = " << filename
339  << " NumTheseTests = " << NumTheseTests
340  << " Errors = " << Errors << std::endl ;
341 
342  } else if ( AmesosClasses[i] == "Amesos_Superlu" ) {
343  bool RunSuperluTest = true;
344  if ( ExpectedError != 0 ) RunSuperluTest = false ; // Bug #1227
345  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) && Amat->Comm().NumProc() > 1 ) // Bug #969
346  RunSuperluTest = false ; // Bug #969
347  if ( MissingADiagonal ) RunSuperluTest = false ; // Bug #1404
348  if ( ( RangeMapType != 0 || DomainMapType != 0 ) ) RunSuperluTest = false ; // Bug #1403
349  if ( bcsstk04 && transpose ) RunSuperluTest = false ; // Bug #1927
350  if ( a662_bus_out && transpose ) RunSuperluTest = false ; // Bug #1927
351  if ( Khead ) RunSuperluTest= false ; // Bug #1927
352 
353  if ( RunSuperluTest ) {
354  if ( verbose) std::cout << " Testing SUPERLU " << std::endl ;
355  Errors = TestOtherClasses("Amesos_Superlu",
356  EpetraMatrixType,
357  Amat,
358  transpose,
359  verbose,
360  Levels,
361  Rcond,
362  RowMapEqualsColMap,
363  false,
364  ExpectedError,
365  maxrelerror,
366  maxrelresidual,
367  NumTheseTests ) ;
368  }
369  if ( Amat->Comm().MyPID() == 0 && Errors )
370  std::cout << " FAILURE in "
371  << __FILE__ << "::" << __LINE__
372  << " Amesos_Superlu"
373  << " EpetraMatrixType = " << EpetraMatrixType
374  << " transpose = " << transpose
375  << " symmetric = " << symmetric
376  << " Levels = " << Levels
377  << " Diagonal = " << Diagonal
378  << " ReindexRowMap = " << ReindexRowMap
379  << " ReindexColMap = " << ReindexColMap
380  << " DomainMapType = " << DomainMapType
381  << " RangeMapType = " << RangeMapType
382  << " distribute = " << distribute
383  << " filename = " << filename
384  << " NumTheseTests = " << NumTheseTests
385  << " Errors = " << Errors << std::endl ;
386 
387  } else if ( AmesosClasses[i] == "Amesos_Paraklete" ) {
388 
389  // We only test reindexing on klu and paraklete
390  if ( verbose && ( ReIndex ) ) {
391 
392  std::cout << __FILE__ << "::" << __LINE__
393  << " Perhaps about to test "
394  << AmesosClasses[i] << " "
395  << " EpetraMatrixType = " << EpetraMatrixType
396  << " transpose = " << transpose
397  << " symmetric = " << symmetric
398  << " Levels = " << Levels
399  << " Diagonal = " << Diagonal
400  << " ReindexRowMap = " << ReindexRowMap
401  << " ReindexColMap = " << ReindexColMap
402  << " DomainMapType = " << DomainMapType
403  << " RangeMapType = " << RangeMapType
404  << " distribute = " << distribute
405  << " filename = " << filename
406  << std::endl ;
407  }
408  bool RunParakleteTest = true;
409  if ( ExpectedError != 0 ) RunParakleteTest = false ; // Bug #1227
410  if ( ( ReindexColMap != 0 ) ) // Bug #969
411  RunParakleteTest = false ; // Bug #969
412 
413  if ( ( RangeMapType != 0 || DomainMapType != 0 ) ) RunParakleteTest = false ; // Bug #1403
414  Teuchos::ParameterList ParamList;
415  if ( ReindexRowMap != 0 ) ParamList.set( "Reindex", true );
416  if ( ( RangeMapType != 0 || DomainMapType != 0 || distribute ) )
417  ParamList.set( "DontTrustMe", true );
418 #ifdef HAVE_AMESOS_EPETRAEXT
419  if ( ! transpose && EpetraMatrixType != 0 ) RunParakleteTest = false ; // Paraklete can't handle non-transposed Row Matrices // this prevents others tests from executing - see bug #2279
420 #else
421  if ( ! transpose ) RunParakleteTest = false ; // Amesos_Parakleter requires EpetraExt in order to perform non-transpose solves
422 #endif
423 #ifndef HAVE_AMESOS_EPETRAEXT
424  if ( ( ReindexRowMap || ReindexColMap ) )
425  RunParakleteTest = false ;
426 #endif
427  if ( FileIsDiagonal )
428  RunParakleteTest = false ; // bogus bug doit fixthis fixit
429  // if ( ImpcolB ) RunParakleteTest = false ; // See bug #1928
430 
431  if ( RunParakleteTest ) {
432  if ( verbose) std::cout << " Testing Paraklete " << std::endl ;
433  Errors = TestOtherClasses("Amesos_Paraklete",
434  EpetraMatrixType,
435  Amat,
436  transpose,
437  verbose,
438  Levels,
439  Rcond,
440  RowMapEqualsColMap,
441  false,
442  ExpectedError,
443  maxrelerror,
444  maxrelresidual,
445  NumTheseTests ) ;
446  }
447  } else if ( AmesosClasses[i] == "Amesos_Dscpack" ) {
448  //
449  // A quick sanity check - make sure symmetric is the same on all processes
450  //
451  const int sym_int = symmetric?0:1 ;
452  int sym_int_out = sym_int;
453  Amat->Comm().Broadcast( &sym_int_out, 1, 0 ) ;
454  assert( sym_int == sym_int_out ) ;
455 
456  bool RunDscpackTest = true;
457  if ( ExpectedError != 0 ) RunDscpackTest = false ; // Bug #1227
458  if ( ! symmetric ) RunDscpackTest = false ;
459  if ( ( ReindexRowMap != 0 || ReindexColMap != 0 ) ) // Bug #969
460  RunDscpackTest = false ; // Bug #969
461  if ( ( RangeMapType != 0 || DomainMapType != 0 ) ) RunDscpackTest = false ; // Bug #1403
462  if ( Khead ) RunDscpackTest = false ; // Bug #1234
463 
464 
465  if ( RunDscpackTest ) {
466  if ( verbose) std::cout << " Testing DSCPACK " << std::endl ;
467 
468  Errors = TestOtherClasses("Amesos_Dscpack",
469  EpetraMatrixType,
470  Amat,
471  transpose,
472  verbose,
473  Levels,
474  Rcond,
475  RowMapEqualsColMap,
476  false,
477  ExpectedError,
478  maxrelerror,
479  maxrelresidual,
480  NumTheseTests ) ;
481  }
482  } else if ( AmesosClasses[i] == "Amesos_Superludist" ) {
483  bool RunSuperludistTest = true;
484  if ( ExpectedError != 0 ) RunSuperludistTest = false ; // Bug #1227
485  if ( transpose ) {
486  RunSuperludistTest = false ; // Bug #822
487  }
488  if ( ReindexRowMap || ReindexColMap ) RunSuperludistTest = false ; // Bug #969
489  if ( ( RangeMapType != 0 || DomainMapType != 0 ) ) RunSuperludistTest = false ; // Bug #1403
490  // if ( MissingADiagonal ) RunSuperludistTest = false ; // Bug #1404 NOT
491  if ( Khead ) RunSuperludistTest= false ; // Bug #368
492  if ( RunSuperludistTest ) {
493  if ( verbose) std::cout << " Testing Superludist " << std::endl ;
494 
495  Errors = TestSuperludist(Amat,
496  EpetraMatrixType,
497  transpose,
498  verbose,
499  Levels,
500  Rcond,
501  maxrelerror,
502  maxrelresidual,
503  filename,
504  NumTheseTests ) ;
505  }
506  }
507  if ( Amat->Comm().MyPID() == 0 ) {
508  if ( Errors || ( verbose && NumTheseTests > 0 ) ) {
509  if ( Errors ) {
510  std::cout << " FAILURE in " ;
511  } else {
512  std::cout << " NO FAILURE in " ;
513  }
514 
515  std::cout << "TestAllClasses.cpp::" << __LINE__
516  << AmesosClasses[i] << " "
517  << " EMT=" << EpetraMatrixType
518  << " tr=" << transpose
519  << " sym=" << symmetric
520  << " L=" << Levels
521  << " D=" << Diagonal
522  << " RRM= " << ReindexRowMap
523  << " RCM= " << ReindexColMap
524  << " DMT= " << DomainMapType
525  << " RMT= " << RangeMapType
526  << " d=" << distribute
527  << " fn= " << filename
528  << std::endl ;
529  }
530  }
531  errors += Errors ;
532  NumTests += NumTheseTests ;
533  }
534  }
535 
536  if ( verbose) std::cout << " TestAllClasses errors = " << errors << std::endl ;
537 
538  return errors;
539 }
540 
Amesos_Klu: A serial, unblocked code ideal for getting started and for very sparse matrices...
Definition: Amesos_Klu.h:117
bool DistributedGlobal() const
static bool verbose
Definition: Amesos.cpp:70
ParameterList & set(std::string const &name, T &&value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
virtual int MyPID() const =0
const Epetra_Map & RowMap() const
int TestAllClasses(const std::vector< std::string > AmesosClasses, int EpetraMatrixType, const std::vector< bool > AmesosClassesInstalled, Epetra_CrsMatrix *&Amat, const bool transpose, const bool verbose, const bool symmetric, const int Levels, const double Rcond, int Diagonal, int ReindexRowMap, int ReindexColMap, int RangeMapType, int DomainMapType, bool distribute, const char *filename, double &maxrelerror, double &maxrelresidual, int &NumTests)
virtual int Broadcast(double *MyVals, int Count, int Root) const =0
int NumAmesosClasses
Definition: TestOptions.cpp:79
virtual int NumProc() const =0
void test()
const int NumericallySingularMatrixError
int TestSuperludist(Epetra_CrsMatrix *&Amat, int EpetraMatrixType, bool transpose, bool verbose, int Levels, const double Rcond, double &maxrelerror, double &maxrelresidual, const char *filename, int &NumTests)
const int StructurallySingularMatrixError
int TestKlu(Epetra_CrsMatrix *&Amat, int EpetraMatrixType, const bool transpose, const bool verbose, const int Levels, const double Rcond, Teuchos::ParameterList ParamList, bool RowMapEqualsColMap, bool TestAddZeroToDiag, int ExpectedError, double &maxrelerror, double &maxrelresidual, int &NumTests)
Definition: TestKlu.cpp:21
int TestScalapack(Epetra_CrsMatrix *&Amat, int EpetraMatrixType, bool transpose, bool verbose, int Levels, const double Rcond, double &maxrelerror, double &maxrelresidual, int &NumTests)
const Epetra_Comm & Comm() const
int TestOtherClasses(const char *AmesosClass, int EpetraMatrixType, Epetra_CrsMatrix *&Amat, const bool transpose, const bool verbose, const int Levels, const double Rcond, bool RowMapEqualsColMap, bool TestAddZeroToDiag, int ExpectedError, double &maxrelerror, double &maxrelresidual, int &NumTests)
std::vector< string > AmesosClasses
Definition: TestOptions.cpp:77