1 #ifndef DEF_RKMK_DIAGONALSTEP 2 #define DEF_RKMK_DIAGONALSTEP 5 #include <NOX_Common.H> 7 #include <Teuchos_StandardCatchMacros.hpp> 22 template <
typename T_LIE_ALGEBRA,
23 int T_N_INTERNAL_STAGES,
24 typename T_M =
double>
28 Teuchos::RCP<Teuchos::ParameterList> m_solverParametersPtr;
29 Teuchos::RCP<NOX::StatusTest::Combo> m_statusTests;
30 Teuchos::RCP<NOXGroup<NOXVector<T_LIE_ALGEBRA::DOF>,T_N_INTERNAL_STAGES>>
32 Teuchos::RCP<NOX::Solver::Generic> m_solver;
41 this->m_internals = internals;
44 this->m_solverParametersPtr = Teuchos::rcp(
new Teuchos::ParameterList);
45 Teuchos::ParameterList& solverParameters = *m_solverParametersPtr;
46 solverParameters.set(
"Nonlinear Solver",
"Tensor Based");
48 Teuchos::ParameterList& directionParameters = solverParameters.sublist(
"Direction");
49 directionParameters.set(
"Method",
"Tensor");
51 Teuchos::ParameterList& globalStrategyParameters = solverParameters.sublist(
"Line Search");
52 globalStrategyParameters.set(
"Method",
"Curvilinear");
54 Teuchos::ParameterList& lineSearchParameters = globalStrategyParameters.sublist(globalStrategyParameters.get(
"Method",
"Curvilinear"));
55 lineSearchParameters.set(
"Lambda Selection",
"Halving");
56 lineSearchParameters.set(
"Max Iters",20);
58 Teuchos::RCP<NOX::StatusTest::NormF> statusTestA = Teuchos::rcp(
new NOX::StatusTest::NormF(1.0e-8,NOX::StatusTest::NormF::Unscaled));
59 Teuchos::RCP<NOX::StatusTest::MaxIters> statusTestB = Teuchos::rcp(
new NOX::StatusTest::MaxIters(50));
60 this->m_statusTests = Teuchos::rcp(
new NOX::StatusTest::Combo(NOX::StatusTest::Combo::OR,statusTestA,statusTestB));
65 this->m_solver = NOX::Solver::buildSolver(this->m_grp,this->m_statusTests,this->m_solverParametersPtr);
79 for (
int i=0; i<T_N_INTERNAL_STAGES; i++) {
82 NOX::StatusTest::StatusType status = m_solver->solve();
87 if (status != NOX::StatusTest::Converged)
89 } TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
92 success &= this->m_internals->computeSolution();
93 *Y1 = this->m_internals->reconstruct();
Definition: DiagonalStepInternals.hpp:14
Definition: Abstract_Problem.hpp:10
Definition: NOXGroup.hpp:14
Definition: Abstract_Integrator.hpp:4
Definition: DiagonalStep.hpp:25
Definition: Abstract_Step.hpp:18