44 #ifndef OPTIPACK_NONLINEAR_CG_DECL_HPP
45 #define OPTIPACK_NONLINEAR_CG_DECL_HPP
48 #include "OptiPack_Types.hpp"
49 #include "Thyra_ModelEvaluator.hpp"
50 #include "GlobiPack_LineSearchBase.hpp"
51 #include "Teuchos_Describable.hpp"
52 #include "Teuchos_VerboseObject.hpp"
53 #include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
54 #include "Teuchos_ParameterEntryValidator.hpp"
60 namespace NonlinearCGUtils {
66 SOLVE_LINSEARCH_FAILURE,
67 SOLVE_MAX_ITERS_EXCEEDED
87 template<
typename Scalar>
89 :
public Teuchos::Describable,
90 public Teuchos::VerboseObject<NonlinearCG<Scalar> >,
91 public Teuchos::ParameterListAcceptorDefaultBase
96 typedef typename ScalarTraits<Scalar>::magnitudeType
ScalarMag;
107 const int paramIndex,
108 const int responseIndex,
172 NonlinearCGUtils::ESolveReturn
174 const Ptr<Thyra::VectorBase<Scalar> > &p,
175 const Ptr<ScalarMag> &g_opt,
176 const Ptr<const ScalarMag> &g_reduct_tol = Teuchos::null,
177 const Ptr<const ScalarMag> &g_grad_tol = Teuchos::null,
178 const Ptr<const ScalarMag> &alpha_init = Teuchos::null,
179 const Ptr<int> &numIters = Teuchos::null
189 RCP<const Thyra::ModelEvaluator<Scalar> > model_;
192 RCP<GlobiPack::LineSearchBase<Scalar> > linesearch_;
194 NonlinearCGUtils::ESolverTypes solverType_;
197 bool and_conv_tests_;
204 mutable int numIters_;
206 static RCP<Teuchos::ParameterEntryValidator>
207 solverType_validator_;
216 template<
typename Scalar>
217 const RCP<NonlinearCG<Scalar> >
228 template<
typename Scalar>
229 const RCP<NonlinearCG<Scalar> >
232 const int paramIndex,
233 const int responseIndex,
237 const RCP<NonlinearCG<Scalar> > solver =
239 solver->initialize(model, paramIndex, responseIndex, linesearch);
247 namespace NonlinearCGUtils {
249 const std::string solverType_name =
"Solver Type";
250 const std::string solverType_default =
"FR";
251 const ESolverTypes solverType_default_integral_val = NONLINEAR_CG_FR;
253 const std::string alpha_init_name =
"Initial Linesearch Step Length";
254 const double alpha_init_default = 1.0;
256 const std::string alpha_reinit_name =
"Reinitlaize Linesearch Step Length";
257 const bool alpha_reinit_default =
false;
259 const std::string and_conv_tests_name =
"AND Convergence Tests";
260 const bool and_conv_tests_default =
false;
262 const std::string minIters_name =
"Min Num Iterations";
263 const int minIters_default = 0;
265 const std::string maxIters_name =
"Max Num Iterations";
266 const int maxIters_default = 20;
268 const std::string g_reduct_tol_name =
"Objective Reduction Tol";
269 const double g_reduct_tol_default = 1e-5;
271 const std::string g_grad_tol_name =
"Objective Gradient Tol";
272 const double g_grad_tol_default = 1e-5;
274 const std::string g_mag_name =
"Objective Magnitude";
275 const double g_mag_default = 1.0;
294 #endif // OPTIPACK_NONLINEAR_CG_DECL_HPP