#include "NLPInterfacePack_NLPFirstOrderThyraModelEvaluator.hpp"
#include "MoochoPack_MoochoThyraSolver.hpp"
#include "Stratimikos_DefaultLinearSolverBuilder.hpp"
#include "Thyra_EpetraModelEvaluator.hpp"
#include "Teuchos_GlobalMPISession.hpp"
#include "Teuchos_VerboseObject.hpp"
#include "Teuchos_CommandLineProcessor.hpp"
#include "Teuchos_StandardCatchMacros.hpp"
int main( int argc, char* argv[] )
{
typedef AbstractLinAlgPack::value_type Scalar;
bool dummySuccess = true;
try {
MoochoThyraSolver solver;
Scalar xt0 = 1.0;
Scalar xt1 = 1.0;
Scalar pt0 = 2.0;
Scalar pt1 = 0.0;
Scalar d = 10.0;
Scalar x00 = 1.0;
Scalar x01 = 1.0;
Scalar p00 = 2.0;
Scalar p01 = 0.0;
Scalar pL0 = -1e+50;
Scalar pL1 = -1e+50;
Scalar pU0 = +1e+50;
Scalar pU1 = +1e+50;
Scalar xL0 = -1e+50;
Scalar xL1 = -1e+50;
Scalar xU0 = +1e+50;
Scalar xU1 = +1e+50;
bool supportDerivs = true;
std::string extraXmlFile = "";
CommandLineProcessor clp(false);
solver.setupCLP(&clp);
clp.setOption( "xt0", &xt0 );
clp.setOption( "xt1", &xt1 );
clp.setOption( "pt0", &pt0 );
clp.setOption( "pt1", &pt1 );
clp.setOption( "d", &d );
clp.setOption( "x00", &x00 );
clp.setOption( "x01", &x01 );
clp.setOption( "p00", &p00 );
clp.setOption( "p01", &p01 );
clp.setOption( "pL0", &pL0 );
clp.setOption( "pL1", &pL1 );
clp.setOption( "pU0", &pU0 );
clp.setOption( "pU1", &pU1 );
clp.setOption( "xL0", &xL0 );
clp.setOption( "xL1", &xL1 );
clp.setOption( "xU0", &xU0 );
clp.setOption( "xU1", &xU1 );
clp.setOption( "support-derivs", "no-support-derivs", &supportDerivs );
clp.setOption("extra-xml-file",&extraXmlFile,"File with extra XML text that will modify the initial XML read in");
std::string line("");
if(extraXmlFile.length()) {
std::ifstream myfile(extraXmlFile.c_str());
if (myfile.is_open())
{
getline (myfile,line);
solver.extraParamsXmlStringOption(line);
std::cout << line << "\n";
myfile.close();
}
}
CommandLineProcessor::EParseCommandLineReturn
parse_return = clp.parse(argc,argv,&std::cerr);
if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL )
return parse_return;
solver.readParameters(out.
get());
epetraThyraModel->
initialize(epetraModel,lowsFactory);
solver.setModel(epetraThyraModel);
solver.readInitialGuess(out.
get());
const MoochoSolver::ESolutionStatus solution_status = solver.solve();
solver.writeFinalSolution(out.
get());
solver.writeParamsFile();
return solution_status;
}
return MoochoSolver::SOLVE_RETURN_EXCEPTION;
}