本文整理汇总了C++中CommandLineProcessor类的典型用法代码示例。如果您正苦于以下问题:C++ CommandLineProcessor类的具体用法?C++ CommandLineProcessor怎么用?C++ CommandLineProcessor使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CommandLineProcessor类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseOptions
/// \brief Parse command-line options for this test
///
/// \param argc [in] As usual in C(++)
/// \param argv [in] As usual in C(++)
/// \param allowedToPrint [in] Whether this (MPI) process is allowed
/// to print to stdout/stderr. Different per (MPI) process.
/// \param printedHelp [out] Whether this (MPI) process printed the
/// "help" display (summary of command-line options)
///
/// \return Encapsulation of command-line options
static CombineTestParameters
parseOptions (int argc,
char* argv[],
const bool allowedToPrint,
bool& printedHelp)
{
using std::cerr;
using std::endl;
printedHelp = false;
// Command-line parameters, set to their default values.
CombineTestParameters params;
try {
using Teuchos::CommandLineProcessor;
CommandLineProcessor cmdLineProc (/* throwExceptions=*/ true,
/* recognizeAllOptions=*/ true);
cmdLineProc.setDocString (docString);
cmdLineProc.setOption ("verify",
"noverify",
¶ms.verify,
"Test accuracy");
cmdLineProc.setOption ("benchmark",
"nobenchmark",
¶ms.benchmark,
"Test performance");
cmdLineProc.setOption ("debug",
"nodebug",
¶ms.debug,
"Print debugging information");
cmdLineProc.setOption ("nrows",
¶ms.numRows,
"Number of rows in the test matrix");
cmdLineProc.setOption ("ncols",
¶ms.numCols,
"Number of columns in the test matrix");
cmdLineProc.setOption ("ntrials",
¶ms.numTrials,
"Number of trials (only used when \"--benchmark\"");
#ifdef HAVE_TSQR_COMPLEX
cmdLineProc.setOption ("complex",
"nocomplex",
¶ms.testComplex,
"Test complex arithmetic, as well as real");
#endif // HAVE_TSQR_COMPLEX
cmdLineProc.parse (argc, argv);
}
catch (Teuchos::CommandLineProcessor::UnrecognizedOption& e) {
if (allowedToPrint)
cerr << "Unrecognized command-line option: " << e.what() << endl;
throw e;
}
catch (Teuchos::CommandLineProcessor::HelpPrinted& e) {
printedHelp = true;
return params; // Don't verify parameters in this case
}
// Validate. TODO (mfh 08 Jul 2010) Figure out how to do this with
// ParameterList validators.
if (params.numRows <= 0)
throw std::invalid_argument ("Number of rows must be positive");
else if (params.numCols <= 0)
throw std::invalid_argument ("Number of columns must be positive");
else if (params.numRows < params.numCols)
throw std::invalid_argument ("Number of rows must be >= number of columns");
else if (params.benchmark && params.numTrials < 1)
throw std::invalid_argument ("Benchmark requires numTrials >= 1");
return params;
}
示例2: main
int main(int argc, char *argv[])
{
Teuchos::GlobalMPISession mpiSession(&argc, &argv);
int status = 0;
// Parse the command line
using Teuchos::CommandLineProcessor;
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
bool verbose = false;
clp.setOption( "v", "disable-verbosity", &verbose, "Enable verbosity" );
CommandLineProcessor::EParseCommandLineReturn
parse_return = clp.parse(argc,argv,&std::cerr);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL )
return parse_return;
if (verbose)
std::cout << "Verbosity Activated" << std::endl;
else
std::cout << "Verbosity Disabled" << std::endl;
// Create a communicator for Epetra objects
#ifdef HAVE_MPI
Epetra_MpiComm Comm( MPI_COMM_WORLD );
#else
Epetra_SerialComm Comm;
#endif
// Check we have only one processor since this problem doesn't work
// for more than one proc
if (Comm.NumProc() > 1) {
std::cerr << "Error! Problem can only be run with at most 1 processor!"
<< std::endl;
return -1;
}
// Create the model evaluator object
double d = 10.0;
double p0 = 2.0;
double p1 = 0.0;
double x00 = 0.0;
double x01 = 1.0;
Teuchos::RCP<ModelEvaluator2DSim<double> > thyraModel =
Teuchos::rcp(new ModelEvaluator2DSim<double>(Teuchos::rcp(&Comm,false),
d,p0,p1,x00,x01));
// Create the linear solver type with Stratimikos
//Teuchos::RCP<Thyra::LinearOpWithSolveFactoryBase<double> >
//lowsFactory = rcp(new Thyra::AmesosLinearOpWithSolveFactory());
::Stratimikos::DefaultLinearSolverBuilder builder;
Teuchos::RCP<Teuchos::ParameterList> p =
Teuchos::rcp(new Teuchos::ParameterList);
p->set("Linear Solver Type", "AztecOO");
p->set("Preconditioner Type", "Ifpack");
//p->set("Enable Delayed Solver Construction", true);
builder.setParameterList(p);
Teuchos::RCP< ::Thyra::LinearOpWithSolveFactoryBase<double> >
lowsFactory = builder.createLinearSolveStrategy("");
thyraModel->set_W_factory(lowsFactory);
// Create the initial guess
Teuchos::RCP< ::Thyra::VectorBase<double> >
initial_guess = thyraModel->getNominalValues().get_x()->clone_v();
// Create the NOX::Thyra::Group
Teuchos::RCP<NOX::Thyra::Group> nox_group =
Teuchos::rcp(new NOX::Thyra::Group(*initial_guess, thyraModel));
// nox_group->computeF();
// std::cout << "ComputedF!" << std::endl;
// const NOX::Thyra::Vector& t_vec =
// dynamic_cast<const NOX::Thyra::Vector&>(nox_group->getF());
// t_vec.print(std::cout);
// exit(0);
// Create the NOX status tests and the solver
// Create the convergence tests
Teuchos::RCP<NOX::StatusTest::NormF> absresid =
Teuchos::rcp(new NOX::StatusTest::NormF(1.0e-8));
Teuchos::RCP<NOX::StatusTest::NormWRMS> wrms =
Teuchos::rcp(new NOX::StatusTest::NormWRMS(1.0e-2, 1.0e-8));
Teuchos::RCP<NOX::StatusTest::Combo> converged =
Teuchos::rcp(new NOX::StatusTest::Combo(NOX::StatusTest::Combo::AND));
converged->addStatusTest(absresid);
converged->addStatusTest(wrms);
Teuchos::RCP<NOX::StatusTest::MaxIters> maxiters =
Teuchos::rcp(new NOX::StatusTest::MaxIters(20));
Teuchos::RCP<NOX::StatusTest::FiniteValue> fv =
Teuchos::rcp(new NOX::StatusTest::FiniteValue);
//.........这里部分代码省略.........
示例3: parseOptions
/// \brief Parse command-line options for this test
///
/// \param argc [in] As usual in C(++)
/// \param argv [in] As usual in C(++)
/// \param allowedToPrint [in] Whether this (MPI) process is allowed
/// to print to stdout/stderr. Different per (MPI) process.
/// \param printedHelp [out] Whether this (MPI) process printed the
/// "help" display (summary of command-line options)
///
/// \return Encapsulation of command-line options
static LapackTestParameters
parseOptions (int argc,
char* argv[],
const bool allowedToPrint,
bool& printedHelp)
{
using std::cerr;
using std::endl;
printedHelp = false;
// Command-line parameters, set to their default values.
LapackTestParameters params;
try {
using Teuchos::CommandLineProcessor;
CommandLineProcessor cmdLineProc (/* throwExceptions=*/ true,
/* recognizeAllOptions=*/ true);
cmdLineProc.setDocString (docString);
cmdLineProc.setOption ("verify",
"noverify",
¶ms.verify,
"Test accuracy");
cmdLineProc.setOption ("benchmark",
"nobenchmark",
¶ms.benchmark,
"Test performance");
cmdLineProc.setOption ("nrows",
¶ms.numRows,
"Number of rows in the test matrix");
cmdLineProc.setOption ("ncols",
¶ms.numCols,
"Number of columns in the test matrix");
cmdLineProc.setOption ("ntrials",
¶ms.numTrials,
"Number of trials (only used when \"--benchmark\"");
#ifdef HAVE_KOKKOSCLASSIC_TSQR_COMPLEX
cmdLineProc.setOption ("complex",
"nocomplex",
¶ms.testComplex,
"Test complex arithmetic, as well as real");
#endif // HAVE_KOKKOSCLASSIC_TSQR_COMPLEX
cmdLineProc.setOption ("field-names",
¶ms.additionalFieldNames,
"Any additional field name(s) (comma-delimited "
"string) to add to the benchmark output. Empty "
"by default. Good for things known when invoking "
"the benchmark executable, but not (easily) known "
"inside the benchmark -- e.g., environment "
"variables.");
cmdLineProc.setOption ("output-data",
¶ms.additionalData,
"Any additional data to add to the output, "
"corresponding to the above field name(s). "
"Empty by default.");
cmdLineProc.setOption ("print-field-names",
"no-print-field-names",
¶ms.printFieldNames,
"Print field names for benchmark output (including "
"any arguments to --field-names).");
cmdLineProc.setOption ("print-trilinos-test-stuff",
"no-print-trilinos-test-stuff",
¶ms.printTrilinosTestStuff,
"Print output that makes the Trilinos test "
"framework happy (but makes benchmark results "
"parsing scripts unhappy)");
cmdLineProc.setOption ("human-readable",
"machine-readable",
¶ms.humanReadable,
"If set, make output easy to read by humans "
"(but hard to parse)");
cmdLineProc.setOption ("debug",
"nodebug",
¶ms.debug,
"Print debugging information");
cmdLineProc.parse (argc, argv);
}
catch (Teuchos::CommandLineProcessor::UnrecognizedOption& e) {
if (allowedToPrint)
cerr << "Unrecognized command-line option: " << e.what() << endl;
throw e;
}
catch (Teuchos::CommandLineProcessor::HelpPrinted& e) {
printedHelp = true;
return params; // Don't verify parameters in this case
}
// Validate command-line options. We provide default values
// for unset options, so we don't have to validate those.
//.........这里部分代码省略.........
示例4: main
int main(int argc, char *argv[])
{
using std::endl;
typedef double Scalar;
// typedef double ScalarMag; // unused
typedef Teuchos::ScalarTraits<Scalar> ST;
using Teuchos::describe;
using Teuchos::Array;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::outArg;
using Teuchos::rcp_implicit_cast;
using Teuchos::rcp_dynamic_cast;
using Teuchos::as;
using Teuchos::ParameterList;
using Teuchos::CommandLineProcessor;
typedef Teuchos::ParameterList::PrintOptions PLPrintOptions;
typedef Thyra::ModelEvaluatorBase MEB;
bool result, success = true;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
RCP<Epetra_Comm> epetra_comm;
#ifdef HAVE_MPI
epetra_comm = rcp( new Epetra_MpiComm(MPI_COMM_WORLD) );
#else
epetra_comm = rcp( new Epetra_SerialComm );
#endif // HAVE_MPI
RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// Read commandline options
//
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
std::string paramsFileName = "";
clp.setOption( "params-file", ¶msFileName,
"File name for XML parameters" );
double t_final = 1e-3;
clp.setOption( "final-time", &t_final,
"Final integration time (initial time is 0.0)" );
int numTimeSteps = 10;
clp.setOption( "num-time-steps", &numTimeSteps,
"Number of (fixed) time steps. If <= 0.0, then variable time steps are taken" );
double maxStateError = 1e-14;
clp.setOption( "max-state-error", &maxStateError,
"Maximum relative error in the integrated state allowed" );
Teuchos::EVerbosityLevel verbLevel = Teuchos::VERB_DEFAULT;
setVerbosityLevelOption( "verb-level", &verbLevel,
"Top-level verbosity level. By default, this gets deincremented as you go deeper into numerical objects.",
&clp );
Teuchos::EVerbosityLevel solnVerbLevel = Teuchos::VERB_DEFAULT;
setVerbosityLevelOption( "soln-verb-level", &solnVerbLevel,
"Solution verbosity level",
&clp );
CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL ) return parse_return;
//
*out << "\nA) Get the base parameter list ...\n";
//
RCP<ParameterList>
paramList = Teuchos::parameterList();
if (paramsFileName.length())
updateParametersFromXmlFile( paramsFileName, paramList.ptr() );
paramList->validateParameters(*getValidParameters());
const Scalar t_init = 0.0;
const Rythmos::TimeRange<Scalar> fwdTimeRange(t_init, t_final);
const Scalar delta_t = t_final / numTimeSteps;
*out << "\ndelta_t = " << delta_t;
//
*out << "\nB) Create the Stratimikos linear solver factory ...\n";
//
// This is the linear solve strategy that will be used to solve for the
// linear system with the W.
//
Stratimikos::DefaultLinearSolverBuilder linearSolverBuilder;
linearSolverBuilder.setParameterList(sublist(paramList,Stratimikos_name));
RCP<Thyra::LinearOpWithSolveFactoryBase<Scalar> >
//.........这里部分代码省略.........
示例5: main
/// \fn main
/// \brief Benchmark driver for (Mat)OrthoManager subclasses
int
main (int argc, char *argv[])
{
using Belos::OrthoManager;
using Belos::OrthoManagerFactory;
using Belos::OutputManager;
using Teuchos::CommandLineProcessor;
using Teuchos::ParameterList;
using Teuchos::parameterList;
using Teuchos::RCP;
using Teuchos::rcp;
Tpetra::ScopeGuard tpetraScope (&argc, &argv);
bool success = false;
bool verbose = false; // Verbosity of output
try {
RCP<const Teuchos::Comm<int> > pComm = Tpetra::getDefaultComm();
// This factory object knows how to make a (Mat)OrthoManager
// subclass, given a name for the subclass. The name is not the
// same as the class' syntactic name: e.g., "TSQR" is the name of
// TsqrOrthoManager.
OrthoManagerFactory<scalar_type, MV, OP> factory;
// The name of the (Mat)OrthoManager subclass to instantiate.
std::string orthoManName (factory.defaultName());
// For SimpleOrthoManager: the normalization method to use. Valid
// values: "MGS", "CGS".
std::string normalization ("CGS");
// Name of the Harwell-Boeing sparse matrix file from which to read
// the inner product operator matrix. If name is "" or not provided
// at the command line, use the standard Euclidean inner product.
std::string filename;
bool debug = false; // Whether to print debugging-level output
// Whether or not to run the benchmark. If false, we let this
// "test" pass trivially.
bool benchmark = false;
// Whether to display benchmark results compactly (in a CSV format),
// or in a human-readable table.
bool displayResultsCompactly = false;
// Default _local_ (per MPI process) number of rows. This will
// change if a sparse matrix is loaded in as an inner product
// operator. Regardless, the number of rows per MPI process must be
// no less than numCols*numBlocks in order for TSQR to work. To
// ensure that the test always passes with default parameters, we
// scale by the number of processes. The default value below may be
// changed by a command-line parameter with a corresponding name.
int numRowsPerProcess = 100;
// The OrthoManager is benchmarked with numBlocks multivectors of
// width numCols each, for numTrials trials. The values below are
// defaults and may be changed by the corresponding command-line
// arguments.
int numCols = 10;
int numBlocks = 5;
int numTrials = 3;
CommandLineProcessor cmdp (false, true);
cmdp.setOption ("benchmark", "nobenchmark", &benchmark,
"Whether to run the benchmark. If not, this \"test\" "
"passes trivially.");
cmdp.setOption ("verbose", "quiet", &verbose,
"Print messages and results.");
cmdp.setOption ("debug", "nodebug", &debug,
"Print debugging information.");
cmdp.setOption ("compact", "human", &displayResultsCompactly,
"Whether to display benchmark results compactly (in a "
"CSV format), or in a human-readable table.");
cmdp.setOption ("filename", &filename,
"Filename of a Harwell-Boeing sparse matrix, used as the "
"inner product operator by the orthogonalization manager."
" If not provided, no matrix is read and the Euclidean "
"inner product is used.");
{
std::ostringstream os;
const int numValid = factory.numOrthoManagers();
const bool plural = numValid > 1 || numValid == 0;
os << "OrthoManager subclass to benchmark. There ";
os << (plural ? "are " : "is ") << numValid << (plural ? "s: " : ": ");
factory.printValidNames (os);
os << ". If none is provided, the test trivially passes.";
cmdp.setOption ("ortho", &orthoManName, os.str().c_str());
}
cmdp.setOption ("normalization", &normalization,
"For SimpleOrthoManager (--ortho=Simple): the normalization "
"method to use. Valid values: \"MGS\", \"CGS\".");
cmdp.setOption ("numRowsPerProcess", &numRowsPerProcess,
"Number of rows per MPI process in the test multivectors. "
"If an input matrix is given, this value is ignored, since "
"the vectors must be commensurate with the dimensions of "
"the matrix.");
cmdp.setOption ("numCols", &numCols,
//.........这里部分代码省略.........
示例6: main
int main( int argc, char* argv[] )
{
using Teuchos::rcp;
using Teuchos::RCP;
using Teuchos::OSTab;
using MoochoPack::MoochoSolver;
using MoochoPack::MoochoThyraSolver;
using Teuchos::CommandLineProcessor;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
const int numProcs = mpiSession.getNProc();
Teuchos::Time timer("");
bool dummySuccess = true;
Teuchos::RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
// Create the solver object
GLpApp::AdvDiffReactOptModelCreator advDiffReacModelCreator;
Stratimikos::DefaultLinearSolverBuilder lowsfCreator;
MoochoThyraSolver solver;
//
// Get options from the command line
//
std::string matchingVecFile = "";
bool showMoochoThyraParams = false;
bool showMoochoThyraParamsWithDoc = true;
bool showMoochoThyraParamsXML = false;
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
advDiffReacModelCreator.setupCLP(&clp);
lowsfCreator.setupCLP(&clp);
solver.setupCLP(&clp);
clp.setOption(
"q-vec-file", &matchingVecFile
,"Base file name to read the objective state matching "
"vector q (i.e. ||x-q||_M in the objective)."
);
clp.setOption(
"only-print-moocho-thyra-solver-params", "no-print-moocho-thyra-solver-params"
,&showMoochoThyraParams
,"Only print the parameters accepted by MoochoPack::MoochoThyraSolver and stop."
);
clp.setOption(
"show-doc", "hide-doc", &showMoochoThyraParamsWithDoc
,"Show MoochoPack::MocohoThyraSolver parameters with documentation or not."
);
clp.setOption(
"xml-format", "readable-format", &showMoochoThyraParamsXML
,"Show MoochoPack::MoochoThyraSolver parameters in XML or human-readable format."
);
CommandLineProcessor::EParseCommandLineReturn
parse_return = clp.parse(argc,argv,&std::cerr);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL )
return parse_return;
lowsfCreator.readParameters( !showMoochoThyraParams ? out.get() : NULL );
solver.readParameters( !showMoochoThyraParams ? out.get() : NULL );
if(showMoochoThyraParams) {
typedef Teuchos::ParameterList::PrintOptions PLPrintOptions;
if(showMoochoThyraParamsXML)
Teuchos::writeParameterListToXmlOStream(
*solver.getValidParameters()
,*out
);
else
solver.getValidParameters()->print(
*out,PLPrintOptions().indent(2).showTypes(true).showDoc(showMoochoThyraParamsWithDoc)
);
return 0;
}
//
// Setup the output streams
//
Teuchos::RCP<Teuchos::FancyOStream>
journalOut = Teuchos::rcp(
new Teuchos::FancyOStream(
solver.getSolver().generate_output_file("MoochoJournal")
," "
)
);
journalOut->copyAllOutputOptions(*out);
//.........这里部分代码省略.........
示例7: main
int main( int argc, char* argv[] )
{
using Teuchos::rcp;
using Teuchos::RCP;
using Teuchos::OSTab;
using MoochoPack::MoochoSolver;
using MoochoPack::MoochoThyraSolver;
using Teuchos::CommandLineProcessor;
Teuchos::GlobalMPISession mpiSession(&argc, &argv);
Teuchos::Time timer("");
bool dummySuccess = true;
Teuchos::RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// A) Create the solver objects that will insert their command-line
// options
//
MoochoThyraSolver solver;
//
// B) Get options from the command line
//
int localDim = 4;
double pt = 0.0;
double p0 = 0.1;
double scale = 0.1;
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
clp.setOption("local-dim", &localDim);
clp.setOption("pt", &pt);
clp.setOption("p0", &p0);
clp.setOption("scale", &scale);
solver.setupCLP(&clp);
CommandLineProcessor::EParseCommandLineReturn
parse_return = clp.parse(argc,argv,&std::cerr);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL )
return parse_return;
solver.readParameters( out.get() );
Teuchos::RCP<Epetra_Comm> comm = Teuchos::null;
#ifdef HAVE_MPI
MPI_Comm mpiComm = MPI_COMM_WORLD;
comm = Teuchos::rcp(new Epetra_MpiComm(mpiComm));
#else
comm = Teuchos::rcp(new Epetra_SerialComm());
#endif
//
// C) Create the Thyra::ModelEvaluator object
//
*out << "\nCreate EpetraExt::DiagonalQuadraticResponseOnlyModelEvaluator object ...\n";
Teuchos::RCP<EpetraExt::DiagonalQuadraticResponseOnlyModelEvaluator>
epetraModel = EpetraExt::diagonalQuadraticResponseOnlyModelEvaluator(
comm, localDim, pt, p0, scale);
*out << "\nCreate the Thyra::EpetraModelEvaluator wrapper object ...\n";
Teuchos::RCP<Thyra::EpetraModelEvaluator>
epetraThyraModel(new Thyra::EpetraModelEvaluator()); // Sets default options!
epetraThyraModel->initialize(epetraModel, Teuchos::null);
//
// D) Solve the NLP
//
// Set the model
solver.setModel(epetraThyraModel);
// Read the initial guess if one exists
solver.readInitialGuess(out.get());
// Solve the NLP
const MoochoSolver::ESolutionStatus solution_status = solver.solve();
// Write the solution to file
solver.writeFinalSolution(out.get());
// Write the final parameters to file
solver.writeParamsFile();
//
//.........这里部分代码省略.........
示例8: main
//
// Main driver program for epetra implementation of the power method.
//
int main(int argc, char *argv[])
{
using Teuchos::outArg;
using Teuchos::CommandLineProcessor;
using Teuchos::RCP;
bool success = true;
bool result;
//
// (A) Setup and get basic MPI info
//
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
#ifdef HAVE_MPI
MPI_Comm mpiComm = MPI_COMM_WORLD;
#endif
//
// (B) Setup the output stream (do output only on root process!)
//
Teuchos::RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// (C) Read in commandline options
//
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
int globalDim = 500;
clp.setOption( "global-dim", &globalDim, "Global dimension of the linear system." );
bool dumpAll = false;
clp.setOption( "dump-all", "no-dump", &dumpAll, "Determines if quantities are dumped or not." );
CommandLineProcessor::EParseCommandLineReturn
parse_return = clp.parse(argc,argv);
if (parse_return != CommandLineProcessor::PARSE_SUCCESSFUL)
return parse_return;
TEST_FOR_EXCEPTION( globalDim < 2, std::logic_error, "Error, globalDim=" << globalDim << " < 2 is not allowed!" );
*out << "\n***\n*** Running power method example using Epetra implementation\n***\n" << std::scientific;
//
// (D) Setup the operator and run the power method!
//
//
// (1) Setup the initial tridiagonal operator
//
// [ 2 -1 ]
// [ -1 2 -1 ]
// A = [ . . . ]
// [ -1 2 -1 ]
// [ -1 2 ]
//
*out << "\n(1) Constructing tridagonal Epetra matrix A of global dimension = " << globalDim << " ...\n";
RCP<Epetra_Operator>
A_epetra = createTridiagEpetraLinearOp(
globalDim,
#ifdef HAVE_MPI
mpiComm,
#endif
1.0, true, *out
);
// Wrap in an Thyra::EpetraLinearOp object
RCP<Thyra::LinearOpBase<double> >
A = Thyra::nonconstEpetraLinearOp(A_epetra);
//
if (dumpAll) *out << "\nA =\n" << *A; // This works even in parallel!
//
// (2) Run the power method ANA
//
*out << "\n(2) Running the power method on matrix A ...\n";
double lambda = 0.0;
double tolerance = 1e-3;
int maxNumIters = 10*globalDim;
result = sillyPowerMethod<double>(*A, maxNumIters, tolerance, outArg(lambda), *out);
if(!result) success = false;
*out << "\n Estimate of dominate eigenvalue lambda = " << lambda << std::endl;
//
// (3) Increase dominance of first eigenvalue
//
*out << "\n(3) Scale the diagonal of A by a factor of 10 ...\n";
scaleFirstDiagElement( 10.0, &*A );
//.........这里部分代码省略.........
示例9: main
int main(int argc, char **argv)
{
// Initialize Tpetra (MPI and Kokkos nodes)
Tpetra::initialize(&argc, &argv);
// Get global communicator
COMM_ptr_t comm = Tpetra::getDefaultComm();
// obtain the rank of current process and the size of communicator
int myRank = comm->getRank();
int procNum = comm->getSize();
// set up fancy output, which can be used by Trilinos objects
Teuchos::oblackholestream blackHole;
std::ostream &out = (myRank == 0) ? std::cout : blackHole;
// setup the domain and descritization information
int Nx = 100;
CommandLineProcessor CLP;
CLP.setDocString("Trilinos MVM test.");
CLP.setOption("Nx", &Nx, "Number of grid points on x direction. (Ny = Nx)");
CLP.parse(argc, argv);
out << "Final value of Nx: " << Nx << std::endl;
int N = Nx * Nx;
// create a Map and obtain the number of nodes contained in current process
MAP_ptr_t map = rcp(new MAP_t(N, 0, comm, Tpetra::GloballyDistributed));
// number of local entries
LO_t localN = map->getNodeNumElements();
// definition of all variables
RCP<MV_t> x, y;
RCP<SPM_t> A;
// set x and y coordinates
x = rcp(new MV_t(map, 1));
y = rcp(new MV_t(map, 1));
comm->barrier();
// set sparse matrix A, a fully Neumann BC Poisson problem
A = rcp(new SPM_t(map, 5, Tpetra::StaticProfile));
A->setObjectLabel("coefficient matrix");
generateA(map, A, Nx);
comm->barrier();
A->fillComplete();
// initialize a timer
RCP<Time> MVMTime = TimeMonitor::getNewCounter("Wall-time of MVM");
for(int i=0; i<10; ++i)
{
x->randomize();
y->randomize();
comm->barrier();
TimeMonitor localTimer(*MVMTime);
// Matrix-Vector Multiplication
A->apply(*x, *y);
comm->barrier();
}
TimeMonitor::summarize(comm.ptr(), out, true, true, true,
Teuchos::Intersection, "", false);
Tpetra::finalize();
return 0;
}
示例10: main
int main( int argc, char* argv[] ) {
using Teuchos::CommandLineProcessor;
using Teuchos::RCP;
bool success = true;
bool verbose = true;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// Read options from command-line
//
int n = 4;
int numBlocks = 4;
bool showAllTests = true;
bool dumpAll = false;
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
clp.setOption( "verbose", "quiet", &verbose, "Set if output is printed or not." );
clp.setOption( "n", &n, "Number of elements in each constituent vector." );
clp.setOption( "num-blocks", &numBlocks, "blocks to create." );
clp.setOption( "dump-all", "no-dump-all", &dumpAll, "Determines if vectors are printed or not." );
clp.setOption( "show-all-tests", "no-show-all-tests", &showAllTests, "Determines if all tests are printed or not." );
CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL ) return parse_return;
//
// Run the tests
//
#ifdef HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_product_space_tests<float>(n,numBlocks,float(1e-5),showAllTests,dumpAll,verbose?&*out:NULL) ) success = false;
#endif // HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_product_space_tests<double>(n,numBlocks,double(1e-13),showAllTests,dumpAll,verbose?&*out:NULL) ) success = false;
#if defined(HAVE_THYRA_COMPLEX)
#ifdef THYRA_TEUCHOS_BLASFLOAT
if( !run_product_space_tests<std::complex<float> >(n,numBlocks,float(1e-5),showAllTests,dumpAll,verbose?&*out:NULL) ) success = false;
#endif // HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_product_space_tests<std::complex<double> >(n,numBlocks,double(1e-12),showAllTests,dumpAll,verbose?&*out:NULL) ) success = false;
#endif // defined(HAVE_THYRA_COMPLEX)
#ifdef HAVE_TEUCHOS_GNU_MP
//if( !run_product_space_tests<mpf_class>(n,numBlocks,mpf_class(1e-13),showAllTests,dumpAll,verbose?&*out:NULL) ) success = false;
// Above commented out code will not compile because its ScalarTraits specialization does not support eps()
#endif // HAVE_TEUCHOS_GNU_MP
} // end try
TEUCHOS_STANDARD_CATCH_STATEMENTS(true,*out,success)
if(verbose) {
if(success)
*out << "\nAll of the tests seem to have run successfully!\n";
else
*out << "\nOh no! at least one of the test failed!\n";
}
return success ? 0 : 1;
} // end main() [Doxygen looks for this!]
示例11: main
int main(int argc, char* argv[])
{
using Teuchos::CommandLineProcessor;
bool success = true;
bool verbose = true;
Teuchos::GlobalMPISession mpiSession(&argc, &argv);
Teuchos::RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// Read options from command-line
//
std::string matrixFile = "";
bool testTranspose = false;
bool usePreconditioner = false;
int numRhs = 1;
int numRandomVectors = 1;
double maxFwdError = 1e-14;
int maxIterations = 400;
int outputFrequency = 10;
bool outputMaxResOnly = true;
double maxResid = 1e-6;
double maxSolutionError = 1e-6;
bool showAllTests = false;
bool dumpAll = false;
double weightCutoff = 1e-4;
int mcCheckFrequency = 1024;
int mcBufferSize = 1024;
bool reproducibleMC = true;
int overlapSize = 0;
int numSets = 1;
double sampleRatio = 10.0;
std::string mcType = "Adjoint";
int blockSize = 1;
std::string solverType = "MCSA";
std::string precType = "Point Jacobi";
double dropTol = 1.0e-2;
double fillLevel = 1.5;
double richardsonRelax = 1.0;
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
clp.setOption( "matrix-file", &matrixFile, "Matrix input file [Required]." );
clp.setOption( "test-transpose", "no-test-transpose", &testTranspose, "Test the transpose solve or not." );
clp.setOption( "use-preconditioner", "no-use-preconditioner", &usePreconditioner, "Use the preconditioner or not." );
clp.setOption( "num-rhs", &numRhs, "Number of RHS in linear solve." );
clp.setOption( "num-random-vectors", &numRandomVectors, "Number of times a test is performed with different random vectors." );
clp.setOption( "max-fwd-error", &maxFwdError, "The maximum relative error in the forward operator." );
clp.setOption( "max-iters", &maxIterations, "The maximum number of linear solver iterations to take." );
clp.setOption( "output-frequency", &outputFrequency, "Number of linear solver iterations between output" );
clp.setOption( "output-max-res-only", "output-all-res", &outputMaxResOnly,
"Determines if only the max residual is printed or if all residuals are printed per iteration." );
clp.setOption( "max-resid", &maxResid, "The maximum relative error in the residual." );
clp.setOption( "max-solution-error", &maxSolutionError, "The maximum relative error in the solution of the linear system." );
clp.setOption( "verbose", "quiet", &verbose, "Set if output is printed or not." );
clp.setOption( "show-all-tests", "no-show-all-tests", &showAllTests, "Set if all the tests are shown or not." );
clp.setOption( "dump-all", "no-dump-all", &dumpAll, "Determines if vectors are printed or not." );
clp.setOption( "mc-type", &mcType, "Determines underlying MC type in solver." );
clp.setOption( "mc-cutoff", &weightCutoff, "Determines underlying MC history weight cutoff." );
clp.setOption( "mc-frequency", &mcCheckFrequency, "Determines the frequency of MC communications." );
clp.setOption( "mc-buffer-size", &mcBufferSize, "Determines the size of MC history buffers." );
clp.setOption( "mc-reproduce", "reproducible", &reproducibleMC,
"Determines whether or not to communicate RNG with MC histories." );
clp.setOption( "mc-overlap", &overlapSize, "Determines the size of overlap in MC problem." );
clp.setOption( "mc-sets", &numSets, "Determines the number of sets in the MC problem." );
clp.setOption( "mc-sample-ratio", &sampleRatio, "Determines the number of histories in the MC problem." );
clp.setOption( "block-size", &blockSize, "Block Jacobi preconditioning block size." );
clp.setOption( "solver-type", &solverType, "Determines MCLS solver." );
clp.setOption( "prec-type", &precType, "Determines MCLS preconditioner." );
clp.setOption( "drop-tol", &dropTol, "ILUT drop tolerance." );
clp.setOption( "fill-level", &fillLevel, "ILUT level-of-fill." );
clp.setOption( "rich-relax", &richardsonRelax, "Richardson relaxation parameter." );
CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL ) return parse_return;
TEUCHOS_TEST_FOR_EXCEPT( matrixFile == "" );
Teuchos::ParameterList mclsLOWSFPL;
mclsLOWSFPL.set("Solver Type", solverType);
Teuchos::ParameterList& mclsLOWSFPL_solver =
mclsLOWSFPL.sublist("Solver Types");
Teuchos::ParameterList& mclsLOWSFPL_mcsa =
mclsLOWSFPL_solver.sublist("MCSA");
mclsLOWSFPL_mcsa.set("Maximum Iterations",int(maxIterations));
mclsLOWSFPL_mcsa.set("Convergence Tolerance",double(maxResid));
mclsLOWSFPL_mcsa.set("MC Type",std::string(mcType));
mclsLOWSFPL_mcsa.set("Iteration Print Frequency",int(outputFrequency));
mclsLOWSFPL_mcsa.set("Weight Cutoff",double(weightCutoff));
mclsLOWSFPL_mcsa.set("MC Check Frequency",int(mcCheckFrequency));
//.........这里部分代码省略.........
示例12: main
int main(int argc, char *argv[])
{
using std::endl;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::ParameterList;
using Teuchos::CommandLineProcessor;
bool result, success = true;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
RCP<Epetra_Comm> epetra_comm;
#ifdef HAVE_MPI
epetra_comm = rcp( new Epetra_MpiComm(MPI_COMM_WORLD) );
#else
epetra_comm = rcp( new Epetra_SerialComm );
#endif // HAVE_MPI
RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// Read commandline options
//
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
Teuchos::EVerbosityLevel verbLevel = Teuchos::VERB_DEFAULT;
setVerbosityLevelOption( "verb-level", &verbLevel,
"Top-level verbosity level. By default, this gets deincremented as you go deeper into numerical objects.",
&clp );
bool dumpFinalSolutions = false;
clp.setOption(
"dump-final-solutions", "no-dump-final-solutions", &dumpFinalSolutions,
"Determine if the final solutions are dumpped or not." );
CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL ) return parse_return;
if ( Teuchos::VERB_DEFAULT == verbLevel )
verbLevel = Teuchos::VERB_LOW;
const Teuchos::EVerbosityLevel
solnVerbLevel = ( dumpFinalSolutions ? Teuchos::VERB_EXTREME : verbLevel );
//
// Get the base parameter list that all other parameter lists will be read
// from.
//
RCP<ParameterList>
paramList = Teuchos::parameterList();
//
// Create the underlying EpetraExt::ModelEvaluator
//
RCP<LorenzModel>
lorenzModel = rcp(new LorenzModel( epetra_comm, *paramList ));
//
// Create the Thyra-wrapped ModelEvaluator
//
RCP<Thyra::ModelEvaluator<double> >
thyraLorenzModel = Thyra::epetraModelEvaluator(lorenzModel,Teuchos::null);
//
// Create the Rythmos GAASP ErrorEstimator
//
RCP<Rythmos::GAASPErrorEstimator> gaaspEE = rcp(new Rythmos::GAASPErrorEstimator);
gaaspEE->setModel(thyraLorenzModel);
//gaaspEE->setQuantityOfInterest( AVERAGE_ERROR_QTY ); // Not passed through yet.
Teuchos::RCP<Teuchos::ParameterList> pl = Teuchos::parameterList();
pl->sublist("GAASP Interface Parameters").set<double>("eTime",1.0);
pl->sublist("GAASP Interface Parameters").set<double>("timeStep",0.1);
//pl->sublist("GAASP Interface Parameters").set<double>("timeStep",0.5);
gaaspEE->setParameterList(pl);
//RCP<const Rythmos::ErrorEstimateBase<double> > error = gaaspEE->getErrorEstimate();
//double uTOL = 1.0e-8;
double uTOL = 1.0e-2;
RCP<const Rythmos::ErrorEstimateBase<double> > error = gaaspEE->controlGlobalError(uTOL);
double err = error->getTotalError();
out->precision(15);
*out << "err = " << err << std::endl;
}
TEUCHOS_STANDARD_CATCH_STATEMENTS(true,*out,success);
//.........这里部分代码省略.........
示例13: main
int main(int argc, char *argv[])
{
using std::endl;
typedef double Scalar;
typedef double ScalarMag;
using Teuchos::describe;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::rcp_implicit_cast;
using Teuchos::rcp_dynamic_cast;
using Teuchos::as;
using Teuchos::ParameterList;
using Teuchos::CommandLineProcessor;
typedef Teuchos::ParameterList::PrintOptions PLPrintOptions;
typedef Thyra::ModelEvaluatorBase MEB;
using Thyra::createMember;
using Thyra::createMembers;
bool success = true;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
RCP<Epetra_Comm> epetra_comm;
#ifdef HAVE_MPI
epetra_comm = rcp( new Epetra_MpiComm(MPI_COMM_WORLD) );
#else
epetra_comm = rcp( new Epetra_SerialComm );
#endif // HAVE_MPI
RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
//
// A) Read commandline options
//
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
std::string paramsFileName = "";
clp.setOption( "params-file", ¶msFileName,
"File name for XML parameters" );
std::string extraParamsString = "";
clp.setOption( "extra-params", &extraParamsString,
"Extra XML parameter string" );
Teuchos::EVerbosityLevel verbLevel = Teuchos::VERB_DEFAULT;
setVerbosityLevelOption( "verb-level", &verbLevel,
"Top-level verbosity level. By default, this gets deincremented as you go deeper into numerical objects.",
&clp );
double finalTime = 1.0;
clp.setOption( "final-time", &finalTime, "Final time (the inital time)" );
int numTimeSteps = 2;
clp.setOption( "num-time-steps", &numTimeSteps, "Number of time steps" );
bool dumpFinalSolutions = false;
clp.setOption(
"dump-final-solutions", "no-dump-final-solutions", &dumpFinalSolutions,
"Determine if the final solutions are dumpped or not." );
double maxStateError = 1e-6;
clp.setOption( "max-state-error", &maxStateError,
"The maximum allowed error in the integrated state in relation to the exact state solution" );
// ToDo: Read in more parameters
CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL ) return parse_return;
if ( Teuchos::VERB_DEFAULT == verbLevel )
verbLevel = Teuchos::VERB_LOW;
const Teuchos::EVerbosityLevel
solnVerbLevel = ( dumpFinalSolutions ? Teuchos::VERB_EXTREME : verbLevel );
//
// B) Get the base parameter list that all other parameter lists will be
// read from.
//
RCP<ParameterList> paramList = Teuchos::parameterList();
if (paramsFileName.length())
updateParametersFromXmlFile( paramsFileName, &*paramList );
if (extraParamsString.length())
updateParametersFromXmlString( extraParamsString, &*paramList );
paramList->validateParameters(*getValidParameters());
//
// C) Create the Stratimikos linear solver factories.
//
// Get the linear solve strategy that will be used to solve for the linear
//.........这里部分代码省略.........
示例14: main
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
MPI_Init(&argc,&argv);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
CommandLineProcessor CLP;
int n = 10;
int m = (int)pow((double)Comm.NumProc(), 0.3334);
double DampingFactor = 1.333;
std::string AggregationScheme = "Uncoupled";
int NPA = 16;
int MaxLevels = 5;
CLP.setOption("l", &MaxLevels, "number of levels");
CLP.setOption("n", &n, "number of nodes along each axis");
CLP.setOption("damp", &DampingFactor, "prolongator damping factor");
CLP.setOption("aggr", &AggregationScheme, "aggregation scheme");
CLP.setOption("npa", &NPA, "nodes per aggregate (if supported by the aggregation scheme)");
CLP.throwExceptions(false);
CLP.parse(argc,argv);
if (m * m * m != Comm.NumProc()) {
if (Comm.MyPID() == 0)
{
std::cout << "Number of processes must be a perfect cube." << std::endl;
std::cout << "Please re-run with --help option for details." << std::endl;
}
#ifdef HAVE_MPI
MPI_Finalize();
#endif
exit(EXIT_SUCCESS);
}
n *= m;
Laplace3D A(Comm, n, n, n, m, m, m, true);
Epetra_Vector LHS(A.OperatorDomainMap());
Epetra_Vector RHS(A.OperatorDomainMap());
LHS.Random();
RHS.PutScalar(0.0);
Epetra_LinearProblem Problem(&A, &LHS, &RHS);
// Construct a solver object for this problem
AztecOO solver(Problem);
// create a parameter list for ML options
ParameterList MLList;
// set defaults for classic smoothed aggregation
ML_Epetra::SetDefaults("SA",MLList);
// overwrite some parameters. Please refer to the user's guide
// for more information
MLList.set("max levels",MaxLevels);
MLList.set("increasing or decreasing","increasing");
MLList.set("aggregation: type", AggregationScheme);
MLList.set("aggregation: damping factor", DampingFactor);
MLList.set("aggregation: nodes per aggregate", NPA);
MLList.set("smoother: type","symmetric Gauss-Seidel");
MLList.set("smoother: pre or post", "both");
MLList.set("coarse: max size", 512);
MLList.set("coarse: type","Amesos-KLU");
MLList.set("analyze memory", true);
MLList.set("repartition: enable", true);
MLList.set("repartition: max min ratio", 1.1);
MLList.set("repartition: min per proc", 512);
MLList.set("low memory usage", true);
MLList.set("x-coordinates", (double*) A.XCoord());
MLList.set("y-coordinates", (double*) A.YCoord());
MLList.set("z-coordinates", (double*) A.ZCoord());
// create the preconditioner object and compute hierarchy
MultiLevelPreconditioner* MLPrec = new MultiLevelPreconditioner(A, MLList);
// tell AztecOO to use this preconditioner, then solve
solver.SetPrecOperator(MLPrec);
solver.SetAztecOption(AZ_solver, AZ_cg_condnum);
solver.SetAztecOption(AZ_output, 1);
solver.Iterate(500, 1e-10);
delete MLPrec;
double norm;
LHS.Norm2(&norm);
if (Comm.MyPID() == 0)
std::cout << "Norm of the error = " << norm << std::endl;
#ifdef HAVE_MPI
MPI_Finalize() ;
#endif
//.........这里部分代码省略.........
示例15: main
int main( int argc, char* argv[] ) {
using Teuchos::CommandLineProcessor;
bool success = true;
bool verbose = true;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
Teuchos::RCP<Teuchos::FancyOStream>
out = Teuchos::VerboseObjectBase::getDefaultOStream();
try {
const Teuchos::RCP<const Teuchos::Comm<Thyra::Ordinal> >
comm = Teuchos::DefaultComm<Thyra::Ordinal>::getComm();
//
// Read options from command-line
//
int n = 4;
bool useSpmd = true;
bool dumpAll = false;
CommandLineProcessor clp;
clp.throwExceptions(false);
clp.addOutputSetupOptions(true);
clp.setOption( "verbose", "quiet", &verbose, "Set if output is printed or not." );
clp.setOption( "local-dim", &n, "Local number of elements in each constituent vector." );
clp.setOption( "use-spmd", "use-serial", &useSpmd, "Determines if MPI or serial vector space is used." );
clp.setOption( "dump-all", "no-dump-all", &dumpAll, "Determines if vectors are printed or not." );
CommandLineProcessor::EParseCommandLineReturn parse_return = clp.parse(argc,argv);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL ) return parse_return;
//
// Run the tests
//
#ifdef HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_composite_linear_ops_tests<float>(comm,n,useSpmd,float(1e-4),dumpAll,verbose?&*out:NULL) ) success = false;
#endif // HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_composite_linear_ops_tests<double>(comm,n,useSpmd,double(1e-12),dumpAll,verbose?&*out:NULL) ) success = false;
#if defined(HAVE_THYRA_COMPLEX)
#ifdef HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_composite_linear_ops_tests<std::complex<float> >(comm,n,useSpmd,float(1e-4),dumpAll,verbose?&*out:NULL) ) success = false;
#endif // HAVE_THYRA_TEUCHOS_BLASFLOAT
if( !run_composite_linear_ops_tests<std::complex<double> >(comm,n,useSpmd,double(1e-12),dumpAll,verbose?&*out:NULL) ) success = false;
#endif
#if defined(HAVE_TEUCHOS_GNU_MP) && !defined(USE_MPI) // mpf_class can not be used with MPI yet!
if( !run_composite_linear_ops_tests<mpf_class>(comm,n,useSpmd,mpf_class(1e-12),dumpAll,verbose?&*out:NULL) ) success = false;
#endif
if( verbose ) {
if(success) *out << "\nAll of the tests seem to have run successfully!\n";
else *out << "\nOh no! at least one of the tests failed!\n";
}
} // end try
TEUCHOS_STANDARD_CATCH_STATEMENTS(true,*out,success)
return success ? EXIT_SUCCESS : EXIT_FAILURE;
} // end main() [Doxygen looks for this!]