1 #ifndef DEF_VARIATIONAL_STEP 2 #define DEF_VARIATIONAL_STEP 5 #include <NOX_Common.H> 7 #include <Teuchos_StandardCatchMacros.hpp> 11 template <
typename T_M,
17 Teuchos::RCP<Teuchos::ParameterList> m_solverParametersPtr;
18 Teuchos::RCP<NOX::StatusTest::Combo> m_statusTests;
19 Teuchos::RCP<NOXGroup<T_Q,1>> m_grp;
20 Teuchos::RCP<NOX::Solver::Generic> m_solver;
29 this->m_internals = internals;
32 this->m_solverParametersPtr = Teuchos::rcp(
new Teuchos::ParameterList);
33 Teuchos::ParameterList& solverParameters = *m_solverParametersPtr;
34 solverParameters.set(
"Nonlinear Solver",
"Tensor Based");
36 Teuchos::ParameterList& directionParameters
37 = solverParameters.sublist(
"Direction");
38 directionParameters.set(
"Method",
"Tensor");
40 Teuchos::ParameterList& globalStrategyParameters
41 = solverParameters.sublist(
"Line Search");
42 globalStrategyParameters.set(
"Method",
"Curvilinear");
44 Teuchos::ParameterList& lineSearchParameters
45 = globalStrategyParameters.sublist(globalStrategyParameters.get(
"Method",
"Curvilinear"));
46 lineSearchParameters.set(
"Lambda Selection",
"Halving");
47 lineSearchParameters.set(
"Max Iters",20);
49 Teuchos::RCP<NOX::StatusTest::NormF> statusTestA
50 = Teuchos::rcp(
new NOX::StatusTest::NormF(1.0e-8,NOX::StatusTest::NormF::Unscaled));
51 Teuchos::RCP<NOX::StatusTest::MaxIters> statusTestB
52 = Teuchos::rcp(
new NOX::StatusTest::MaxIters(50));
53 this->m_statusTests = Teuchos::rcp(
new NOX::StatusTest::Combo(NOX::StatusTest::Combo::OR,statusTestA,statusTestB));
59 this->m_solver = NOX::Solver::buildSolver(this->m_grp,this->m_statusTests,this->m_solverParametersPtr);
74 NOX::StatusTest::StatusType status = m_solver->solve();
78 if (status != NOX::StatusTest::Converged)
80 } TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success);
82 success &= this->m_internals->computeSolution();
Definition: Abstract_Problem.hpp:10
Definition: NOXGroup.hpp:14
Definition: Abstract_Step.hpp:12
Definition: Abstract_LieProblem.hpp:6
Definition: NOXVector.hpp:14