Amesos Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
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
11int 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
static bool verbose
Definition: Amesos.cpp:67
const int NumericallySingularMatrixError
const int StructurallySingularMatrixError
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)
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 NumAmesosClasses
Definition: TestOptions.cpp:79
std::vector< string > AmesosClasses
Definition: TestOptions.cpp:77
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)
int TestScalapack(Epetra_CrsMatrix *&Amat, int EpetraMatrixType, bool transpose, bool verbose, int Levels, const double Rcond, double &maxrelerror, double &maxrelresidual, int &NumTests)
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)
Amesos_Klu: A serial, unblocked code ideal for getting started and for very sparse matrices,...
Definition: Amesos_Klu.h:116