1#include "Epetra_Comm.h"
2#include "Teuchos_ParameterList.hpp"
4#include "Epetra_CrsMatrix.h"
6#include "Epetra_Vector.h"
7#include "Epetra_LinearProblem.h"
53 double &maxrelresidual,
57 std::string StringFilename = filename ;
58 bool ImpcolB = ( StringFilename.find(
"ImpcolB") < StringFilename.find(
"xdz_notaname_garbage") );
62 const Epetra_Comm& Comm = Amat->Comm();
68 bool MyVerbose = false ;
77 Teuchos::ParameterList ParamList ;
78 ParamList.set(
"Redistribute",
true );
79 ParamList.set(
"AddZeroToDiag",
true );
80 ParamList.set(
"AddToDiag", 1e2 );
81 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
82 SuperludistParams.set(
"ReuseSymbolic",
true );
83 SuperludistParams.set(
"MaxProcesses", 2 );
86 const int ExpectedError = 0 ;
104 std::cout <<
"Amesos_Superludist failed with error code " << Errors<< std::endl ;
108 NumErrors += Errors ;
109 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
110 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
119 Teuchos::ParameterList ParamList ;
120 ParamList.set(
"Redistribute",
true );
121 ParamList.set(
"AddZeroToDiag",
false );
122 ParamList.set(
"AddToDiag", 1e2 );
123 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
124 SuperludistParams.set(
"ReuseSymbolic",
true );
125 SuperludistParams.set(
"MaxProcesses", 2 );
144 std::cout <<
"Amesos_Superludist failed with error code " << Errors<< std::endl ;
148 NumErrors += Errors ;
149 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
150 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
159 Teuchos::ParameterList ParamList ;
160 ParamList.set(
"Redistribute",
true );
161 ParamList.set(
"AddZeroToDiag",
true );
162 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
163 SuperludistParams.set(
"ReuseSymbolic",
false );
164 SuperludistParams.set(
"MaxProcesses", 2 );
167 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
168 <<
" ParamList = " <<
169 ParamList << std::endl ;
182 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
183 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
190 Teuchos::ParameterList ParamList ;
191 ParamList.set(
"Redistribute",
true );
192 ParamList.set(
"AddZeroToDiag",
true );
193 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
194 SuperludistParams.set(
"ReuseSymbolic",
true );
195 SuperludistParams.set(
"MaxProcesses", 1 );
198 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
199 <<
" ParamList = " <<
200 ParamList << std::endl ;
213 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
214 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
222 Teuchos::ParameterList ParamList ;
223 ParamList.set(
"Redistribute",
true );
224 ParamList.set(
"AddZeroToDiag",
true );
225 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
226 SuperludistParams.set(
"ReuseSymbolic",
false );
227 SuperludistParams.set(
"MaxProcesses", 1 );
230 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
231 <<
" ParamList = " <<
232 ParamList << std::endl ;
245 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
246 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
256 Teuchos::ParameterList ParamList ;
257 ParamList.set(
"Redistribute",
true );
258 ParamList.set(
"AddZeroToDiag",
true );
259 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
260 SuperludistParams.set(
"ReuseSymbolic",
false );
261 SuperludistParams.set(
"MaxProcesses", 10 );
275 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
276 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
285 Teuchos::ParameterList ParamList ;
286 ParamList.set(
"Redistribute",
true );
287 ParamList.set(
"AddZeroToDiag",
false );
288 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
289 SuperludistParams.set(
"ReuseSymbolic",
true );
290 SuperludistParams.set(
"MaxProcesses", -1 );
293 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
294 <<
" ParamList = " <<
295 ParamList << std::endl ;
308 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
309 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
318 Teuchos::ParameterList ParamList ;
319 ParamList.set(
"Redistribute",
true );
320 ParamList.set(
"AddZeroToDiag",
false );
321 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
322 SuperludistParams.set(
"ReuseSymbolic",
true );
323 SuperludistParams.set(
"MaxProcesses", -2 );
326 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
327 <<
" ParamList = " <<
328 ParamList << std::endl ;
341 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
342 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
351 Teuchos::ParameterList ParamList ;
352 ParamList.set(
"Redistribute",
true );
353 ParamList.set(
"AddZeroToDiag",
false );
354 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
355 SuperludistParams.set(
"ReuseSymbolic",
false );
356 SuperludistParams.set(
"MaxProcesses", -3 );
359 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
360 <<
" ParamList = " <<
361 ParamList << std::endl ;
374 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
375 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
384 Teuchos::ParameterList ParamList ;
385 ParamList.set(
"Redistribute",
true );
386 ParamList.set(
"AddZeroToDiag",
false );
387 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
388 SuperludistParams.set(
"ReuseSymbolic",
false );
389 SuperludistParams.set(
"MaxProcesses", 4 );
392 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
393 <<
" ParamList = " <<
394 ParamList << std::endl ;
407 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
408 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
417 Teuchos::ParameterList ParamList ;
418 ParamList.set(
"AddZeroToDiag",
true );
419 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
420 SuperludistParams.set(
"ReuseSymbolic",
true );
421 SuperludistParams.set(
"MaxProcesses", 4 );
422 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
423 ParamList.set(
"Redistribute",
true );
425 ParamList.set(
"Redistribute",
false );
428 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
429 <<
" ParamList = " <<
430 ParamList << std::endl ;
443 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
444 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
452 Teuchos::ParameterList ParamList ;
453 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
454 ParamList.set(
"Redistribute",
true );
456 ParamList.set(
"Redistribute",
false );
457 ParamList.set(
"AddZeroToDiag",
true );
458 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
459 SuperludistParams.set(
"ReuseSymbolic",
true );
460 SuperludistParams.set(
"MaxProcesses", 4 );
463 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
464 <<
" ParamList = " <<
465 ParamList << std::endl ;
478 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
479 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
488 Teuchos::ParameterList ParamList ;
489 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
490 ParamList.set(
"Redistribute",
true );
492 ParamList.set(
"Redistribute",
false );
493 ParamList.set(
"AddZeroToDiag",
true );
494 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
495 SuperludistParams.set(
"ReuseSymbolic",
false );
496 SuperludistParams.set(
"MaxProcesses", 1 );
499 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
500 <<
" ParamList = " <<
501 ParamList << std::endl ;
514 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
515 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
524 Teuchos::ParameterList ParamList ;
525 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
526 ParamList.set(
"Redistribute",
true );
528 ParamList.set(
"Redistribute",
false );
529 ParamList.set(
"AddZeroToDiag",
true );
530 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
531 SuperludistParams.set(
"ReuseSymbolic",
false );
532 SuperludistParams.set(
"MaxProcesses", 2 );
535 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
536 <<
" ParamList = " <<
537 ParamList << std::endl ;
550 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
551 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
560 Teuchos::ParameterList ParamList ;
561 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
562 ParamList.set(
"Redistribute",
true );
564 ParamList.set(
"Redistribute",
false );
565 ParamList.set(
"AddZeroToDiag",
false );
566 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
567 SuperludistParams.set(
"ReuseSymbolic",
true );
568 SuperludistParams.set(
"MaxProcesses", 1 );
571 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
572 <<
" ParamList = " <<
573 ParamList << std::endl ;
586 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
587 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
596 Teuchos::ParameterList ParamList ;
597 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
598 ParamList.set(
"Redistribute",
true );
600 ParamList.set(
"Redistribute",
false );
601 ParamList.set(
"AddZeroToDiag",
false );
602 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
603 SuperludistParams.set(
"ReuseSymbolic",
true );
604 SuperludistParams.set(
"MaxProcesses", 2 );
607 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
608 <<
" ParamList = " <<
609 ParamList << std::endl ;
622 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
623 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
630 Teuchos::ParameterList ParamList ;
631 if ( Amat->RowMatrixRowMap().LinearMap() ==
false )
632 ParamList.set(
"Redistribute",
true );
634 ParamList.set(
"Redistribute",
false );
635 ParamList.set(
"AddZeroToDiag",
false );
636 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
637 SuperludistParams.set(
"ReuseSymbolic",
true );
638 SuperludistParams.set(
"Fact",
"SamePattern" );
639 SuperludistParams.set(
"MaxProcesses", 2 );
642 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
643 <<
" ParamList = " <<
644 ParamList << std::endl ;
657 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
658 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
667 Teuchos::ParameterList ParamList ;
668 ParamList.set(
"Redistribute",
true );
669 ParamList.set(
"AddZeroToDiag",
false );
670 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
671 SuperludistParams.set(
"ReuseSymbolic",
false );
672 SuperludistParams.set(
"RowPerm",
"NATURAL" );
673 SuperludistParams.set(
"MaxProcesses", 10 );
676 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
677 <<
" ParamList = " <<
678 ParamList << std::endl ;
691 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
692 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
701 Teuchos::ParameterList ParamList ;
702 ParamList.set(
"Redistribute",
true );
703 ParamList.set(
"AddZeroToDiag",
false );
704 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
705 SuperludistParams.set(
"ReuseSymbolic",
false );
706#if (SUPERLU_DIST_MAJOR_VERSION > 5) || ( SUPERLU_DIST_MAJOR_VERSION == 5 && SUPERLU_DIST_MINOR_VERSION > 3)
707 SuperludistParams.set(
"RowPerm",
"LargeDiag_MC64" );
709 SuperludistParams.set(
"RowPerm",
"LargeDiag" );
711 SuperludistParams.set(
"MaxProcesses", 10 );
714 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
715 <<
" ParamList = " <<
716 ParamList << std::endl ;
729 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
730 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
740 Teuchos::ParameterList ParamList ;
741 ParamList.set(
"Redistribute",
true );
742 ParamList.set(
"AddZeroToDiag",
false );
743 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
744 SuperludistParams.set(
"ReuseSymbolic",
true );
745 SuperludistParams.set(
"RowPerm",
"NATURAL" );
746 SuperludistParams.set(
"MaxProcesses", 10 );
749 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
750 <<
" ParamList = " <<
751 ParamList << std::endl ;
764 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
765 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
774 Teuchos::ParameterList ParamList ;
775 ParamList.set(
"Redistribute",
true );
776 ParamList.set(
"AddZeroToDiag",
false );
777 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
778 SuperludistParams.set(
"ReuseSymbolic",
true );
779#if (SUPERLU_DIST_MAJOR_VERSION > 5) || ( SUPERLU_DIST_MAJOR_VERSION == 5 && SUPERLU_DIST_MINOR_VERSION > 3)
780 SuperludistParams.set(
"RowPerm",
"LargeDiag_MC64" );
782 SuperludistParams.set(
"RowPerm",
"LargeDiag" );
784 SuperludistParams.set(
"MaxProcesses", 10 );
787 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
788 <<
" ParamList = " <<
789 ParamList << std::endl ;
802 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
803 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
811 Teuchos::ParameterList ParamList ;
812 ParamList.set(
"Redistribute",
true );
813 ParamList.set(
"AddZeroToDiag",
false );
814 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
815 SuperludistParams.set(
"ReuseSymbolic",
true );
816 SuperludistParams.set(
"ReplaceTinyPivot",
true );
817 SuperludistParams.set(
"MaxProcesses", 10 );
820 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
821 <<
" ParamList = " <<
822 ParamList << std::endl ;
835 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
836 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
844 Teuchos::ParameterList ParamList ;
845 ParamList.set(
"Redistribute",
true );
846 ParamList.set(
"AddZeroToDiag",
false );
847 Teuchos::ParameterList& SuperludistParams = ParamList.sublist(
"Superludist") ;
848 SuperludistParams.set(
"ReuseSymbolic",
true );
849 SuperludistParams.set(
"ReplaceTinyPivot",
false );
850 SuperludistParams.set(
"MaxProcesses", 10 );
853 if ( MyVerbose ) std::cout << __FILE__ <<
"::" << __LINE__
854 <<
" ParamList = " <<
855 ParamList << std::endl ;
868 maxrelerror = EPETRA_MAX( relerror, maxrelerror ) ;
869 maxrelresidual = EPETRA_MAX( relresidual, maxrelresidual ) ;
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)