1 #ifndef DEF_VARIATIONAL_COVARIANTSTEP 2 #define DEF_VARIATIONAL_COVARIANTSTEP 5 #include <NOX_Common.H> 7 #include <Teuchos_StandardCatchMacros.hpp> 11 template <
typename T_M,
16 CovariantStepInternals<T_M,T_Q,T_ALGEBRA>,
17 Abstract::LieProblem<T_M,T_Q,T_ALGEBRA>,
24 Teuchos::RCP<Teuchos::ParameterList> m_solverParametersPtr;
25 Teuchos::RCP<NOX::StatusTest::Combo> m_statusTests;
26 Teuchos::RCP<NOXGroup<T_ALGEBRA,1>> m_grp;
27 Teuchos::RCP<NOX::Solver::Generic> m_solver;
34 this->m_solverParametersPtr = Teuchos::rcp(
new Teuchos::ParameterList);
35 Teuchos::ParameterList& solverParameters = *m_solverParametersPtr;
37 solverParameters.set(
"Nonlinear Solver",
"Line Search Based");
38 Teuchos::ParameterList& lineSearchParameters = solverParameters.sublist(
"Line Search");
39 lineSearchParameters.set(
"Method",
"Full Step");
41 Teuchos::RCP<NOX::StatusTest::NormF> statusTestA = Teuchos::rcp(
new NOX::StatusTest::NormF(1.0e-8,NOX::StatusTest::NormF::Unscaled));
42 Teuchos::RCP<NOX::StatusTest::MaxIters> statusTestB = Teuchos::rcp(
new NOX::StatusTest::MaxIters(200));
43 this->m_statusTests = Teuchos::rcp(
new NOX::StatusTest::Combo(NOX::StatusTest::Combo::OR,statusTestA,statusTestB));
46 this->m_solver = NOX::Solver::buildSolver(this->m_grp,this->m_statusTests,this->m_solverParametersPtr);
53 setData (T_M h_var, T_Q q0_var, T_Q q1_var)
54 { this->m_internals->setData(h_var,q0_var,q1_var); }
67 m_solver->reset(this->m_internals->getInitialGuess());
68 NOX::StatusTest::StatusType status = m_solver->solve();
72 if (status != NOX::StatusTest::Converged)
75 T_Q solution = this->m_internals->q1()*(this->m_internals->h()*T_ALGEBRA(solnVec)).cay();
78 } TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
Definition: NOXGroup.hpp:14
Definition: Abstract_Step.hpp:12
Definition: Abstract_LieProblem.hpp:6
Definition: CovariantStep.hpp:14
Definition: Abstract_LieProblem.hpp:10
Definition: CovariantStepInternals.hpp:11
Definition: NOXVector.hpp:14