1 #ifndef DEF_VARIATIONAL_GALERKINSTEP 2 #define DEF_VARIATIONAL_GALERKINSTEP 5 #include <NOX_Common.H> 7 #include <Teuchos_StandardCatchMacros.hpp> 11 template <
typename T_M,
18 Teuchos::RCP<Teuchos::ParameterList> m_solverParametersPtr;
19 Teuchos::RCP<NOX::StatusTest::Combo> m_statusTests;
20 Teuchos::RCP<NOXGroup<T_Q,T_N_STEPS>> m_grp;
21 Teuchos::RCP<NOX::Solver::Generic> m_solver;
30 this->m_internals = internals;
33 this->m_solverParametersPtr = Teuchos::rcp(
new Teuchos::ParameterList);
34 Teuchos::ParameterList& solverParameters = *m_solverParametersPtr;
36 solverParameters.set(
"Nonlinear Solver",
"Line Search Based");
37 Teuchos::ParameterList& lineSearchParameters = solverParameters.sublist(
"Line Search");
38 lineSearchParameters.set(
"Method",
"Full Step");
40 Teuchos::RCP<NOX::StatusTest::NormF> statusTestA = Teuchos::rcp(
new NOX::StatusTest::NormF(1.0e-8,NOX::StatusTest::NormF::Unscaled));
41 Teuchos::RCP<NOX::StatusTest::MaxIters> statusTestB = Teuchos::rcp(
new NOX::StatusTest::MaxIters(10));
42 this->m_statusTests = Teuchos::rcp(
new NOX::StatusTest::Combo(NOX::StatusTest::Combo::OR,statusTestA,statusTestB));
45 this->m_solver = NOX::Solver::buildSolver(this->m_grp,this->m_statusTests,this->m_solverParametersPtr);
52 setData (T_M h_var, T_Q q0_var, T_Q q1_var)
67 Teuchos::RCP<NOX::Solver::Generic> solver = NOX::Solver::buildSolver(grp,this->m_statusTests,this->m_solverParametersPtr);
70 solver->reset(init->getInitialGuess());
71 NOX::StatusTest::StatusType status = solver->solve();
72 const NOXGroup<T_Q,T_N_STEPS-1>& solnGrp =
dynamic_cast<const NOXGroup<T_Q,T_N_STEPS-1
>&>(m_solver->getSolutionGroup());
73 const NOXVector<T_Q::DOF*(T_N_STEPS-1)>& solnVec =
dynamic_cast<const NOXVector<T_Q::DOF*(T_N_STEPS-1)
>&>(solnGrp.getX());
74 init->updateInitialPosition(solnVec);
76 if (status != NOX::StatusTest::Converged)
79 } TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
91 NOX::StatusTest::StatusType status = m_solver->solve();
96 if (status != NOX::StatusTest::Converged)
99 T_Q solution(solnVec.segment((T_N_STEPS-1)*T_Q::DOF,T_Q::DOF));
102 } TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
Definition: GalerkinStepInternals.hpp:484
Definition: Abstract_Problem.hpp:10
Definition: NOXGroup.hpp:14
Definition: Abstract_Step.hpp:12
Definition: Abstract_LieProblem.hpp:6
Definition: GalerkinStepInternals.hpp:118
Definition: GalerkinStep.hpp:15
Definition: NOXVector.hpp:14