47 #include "az_aztec_defs.h"
51 std::string _matrixFile
55 ,
double _maxSolutionError
56 ,
double _maxSlackErrorFrac
59 ,
double _maxPrecSolutionError
60 ,
double _maxPrecSlackErrorFrac
85 int main(
int argc,
char* argv[])
92 bool result, success =
true;
103 std::string matrixDir =
"";
104 int numRandomVectors = 1;
106 bool showAllTestsDetails =
false;
108 std::string aztecOutputLevel =
"freq";
109 int aztecOutputFreq = 0;
111 CommandLineProcessor clp(
false);
112 clp.setOption(
"matrix-dir", &matrixDir,
"Base directory for the test matrices" );
113 clp.setOption(
"num-random-vectors", &numRandomVectors,
"Number of times a test is performed with different random vectors." );
114 clp.setOption(
"verbose",
"quiet", &verbose,
"Set if output is printed or not." );
115 clp.setOption(
"show-all-tests",
"no-show-all-tests", &showAllTests,
"Set if all the tests are shown or not." );
116 clp.setOption(
"show-all-tests-details",
"no-show-all-tests-details", &showAllTestsDetails,
"Set if all the details of the tests are shown or not." );
117 clp.setOption(
"dump-all",
"no-dump-all", &dumpAll,
"Determines if vectors are printed or not." );
118 clp.setOption(
"aztec-output-level", &aztecOutputLevel,
"Aztec output level (freq,last,summary,warnings,all)" );
119 clp.setOption(
"aztec-output-freq", &aztecOutputFreq,
"Aztec output freqency (> 0)" );
120 CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
121 if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL )
return parse_return;
129 const int numTestMatrices = 9;
135 const MTP testMatrices[numTestMatrices] =
137 MTP(
"bcsstk01.mtx" ,1e-12, 40 , 1e-4, 0.6, 1.0, 20 , 1e-10, 0.5, 1.0)
138 ,MTP(
"bcsstk02.mtx" ,1e-12, 40 , 1e-3, 0.5, 1.0, 2 , 1e-10, 0.5, 1.0)
139 ,MTP(
"bcsstk04.mtx" ,1e-12, 80 , 1e-4, 0.999990, 1.0, 40 , 1e-10, 0.999990, 1.0)
140 ,MTP(
"Diagonal.mtx" ,1e-12, 4 , 1e-6, 1e-14, 1.0, 2 , 1e-10, 1e-14, 1.0)
141 ,MTP(
"FourByFour.mtx" ,1e-12, 4 , 1e-6, 1e-14, 1.0, 2 , 1e-10, 1e-14, 1.0)
142 ,MTP(
"KheadK.mtx" ,1e-12, 8 , 1e-6, 1e-14, 1.0, 2 , 1e-10, 1e-14, 1.0)
143 ,MTP(
"KheadSorted.mtx" ,1e-12, 8 , 1e-6, 1e-14, 1.0, 2 , 1e-10, 1e-14, 1.0)
144 ,MTP(
"nos1.mtx" ,1e-11, 200, 1e-4, 0.6, 1.0, 237, 1e-2, 5.0, 1.0)
145 ,MTP(
"nos5.mtx" ,1e-12, 468, 1e-5, 0.5, 1.0, 468, 1e-10, 0.5, 1.0)
150 for(
int matrix_i = 0; matrix_i < numTestMatrices; ++matrix_i ) {
152 mtp = testMatrices[matrix_i];
156 for(
int prec_i = 0; prec_i < 2; ++prec_i ) {
158 out << std::endl<<matrix_i<<
":"<<prec_i<<
": Testing, matrixFile=\'"<<mtp.
matrixFile<<
"\', ";
161 double maxSolutionError;
162 double maxSlackErrorFrac;
164 paramList(
"AztecOOLinearOpWithSolveFactory");
166 &fwdSolvePL = paramList.
sublist(
"Forward Solve"),
167 &adjSolvePL = paramList.
sublist(
"Adjoint Solve");
169 &fwdAztecOOPL = fwdSolvePL.
sublist(
"AztecOO"),
170 &adjAztecOOPL = adjSolvePL.sublist(
"AztecOO");
171 if( aztecOutputLevel !=
"freq" ) {
172 fwdAztecOOPL.
set(
"Output Frequency",aztecOutputLevel);
173 adjAztecOOPL.
set(
"Output Frequency",aztecOutputLevel);
176 fwdAztecOOPL.
set(
"Output Frequency",aztecOutputFreq);
177 adjAztecOOPL.
set(
"Output Frequency",aztecOutputFreq);
180 out <<
"no aztec preconditioning ... ";
181 fwdAztecOOPL.
set(
"Aztec Preconditioner",
"none");
182 testTranspose =
true;
190 out <<
"using aztec preconditioning ... ";
191 fwdAztecOOPL.
set(
"Aztec Preconditioner",
"ilu");
192 testTranspose =
false;
199 std::ostringstream oss;
202 Thyra::test_single_aztecoo_thyra_solver(
203 matrixDir+
"/"+mtp.
matrixFile,testTranspose,numRandomVectors
205 ,showAllTestsDetails,dumpAll,¶mList,&fancy_oss
207 if(!result) success =
false;
211 out << std::endl << oss.str();
213 out <<
" : passed!\n";
217 out << std::endl << oss.str();
219 out <<
" : failed!\n";
226 catch(
const std::exception &excpt ) {
227 std::cerr <<
"*** Caught standard exception : " << excpt.what() << std::endl;
231 std::cerr <<
"*** Caught an unknown exception\n";
236 if(success) out <<
"\nCongratulations! All of the tests checked out!\n";
237 else out <<
"\nOh no! At least one of the tests failed!\n";
240 return ( success ? 0 : 1 );
int main(int argc, char *argv[])
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
RCP< ParameterList > sublist(const RCP< ParameterList > ¶mList, const std::string &name, bool mustAlreadyExist=false, const std::string &docString="")
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
double maxPrecSolutionError
double maxPrecSlackErrorFrac
MatrixTestPacket(std::string _matrixFile, double _maxFwdError, int _maxIters, double _maxResid, double _maxSolutionError, double _maxSlackErrorFrac, int _maxPrecIters, double _maxPrecResid, double _maxPrecSolutionError, double _maxPrecSlackErrorFrac)
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)