44 #ifndef OPTIPACK_UNCONSTRAINED_OPT_MERIT_FUNC_1D_DEF_HPP
45 #define OPTIPACK_UNCONSTRAINED_OPT_MERIT_FUNC_1D_DEF_HPP
48 #include "OptiPack_Types.hpp"
49 #include "OptiPack_LineSearchPointEvaluatorBase.hpp"
50 #include "Thyra_ModelEvaluatorHelpers.hpp"
51 #include "Thyra_VectorStdOps.hpp"
52 #include "GlobiPack_MeritFunc1DBase.hpp"
53 #include "Teuchos_Assert.hpp"
62 template<
typename Scalar>
69 template<
typename Scalar>
73 const int responseIndex
77 model.assert_not_null();
78 TEUCHOS_ASSERT_IN_RANGE_UPPER_EXCLUSIVE( paramIndex, 0, model->Np() );
79 TEUCHOS_ASSERT_IN_RANGE_UPPER_EXCLUSIVE( responseIndex, 0, model->Ng() );
82 paramIndex_ = paramIndex;
83 responseIndex_ = responseIndex;
87 template<
typename Scalar>
90 const RCP<Thyra::VectorBase<Scalar> > &p,
91 const RCP<Thyra::VectorBase<Scalar> > &g_vec,
92 const RCP<Thyra::VectorBase<Scalar> > &g_grad_vec
96 pointEvaluator.assert_not_null();
98 g_vec.assert_not_null();
101 pointEvaluator_ = pointEvaluator;
104 g_grad_vec_ = g_grad_vec;
111 template<
typename Scalar>
114 return !is_null(g_grad_vec_);
118 template<
typename Scalar>
120 const ScalarMag &alpha,
const Ptr<ScalarMag> &phi,
121 const Ptr<ScalarMag> &Dphi )
const
123 typedef Thyra::ModelEvaluatorBase MEB;
124 using Thyra::get_ele;
126 using Thyra::eval_g_DgDp;
127 pointEvaluator_->computePoint(alpha, p_.ptr());
128 if (!is_null(g_grad_vec_)) {
129 TEUCHOS_TEST_FOR_EXCEPT_MSG(
true,
130 "Error, g_grad_vec has not been implemented yet!.");
134 TEUCHOS_ASSERT(is_null(Dphi));
136 eval_g( *model_, paramIndex_, *p_, responseIndex_, g_vec_.ptr() );
137 *phi = get_ele(*g_vec_, 0);
145 #endif // OPTIPACK_UNCONSTRAINED_OPT_MERIT_FUNC_1D_DEF_HPP