44 #ifndef ROL_NONLINEARLEASTSQUARESOBJECTIVE_SIMOPT_H 45 #define ROL_NONLINEARLEASTSQUARESOBJECTIVE_SIMOPT_H 73 class EqualityConstraint_SimOpt;
78 const Teuchos::RCP<EqualityConstraint_SimOpt<Real> >
con_;
95 const bool GNH =
false)
96 : con_(con), GaussNewtonHessian_(GNH) {
99 z_ = zvec.
clone(); z_->set(zvec);
100 cdual_ = cvec.
dual().clone();
101 udual_ = uvec.
dual().clone();
105 Real tol = std::sqrt(ROL_EPSILON<Real>());
106 con_->update_1(u,flag,iter);
107 con_->value(*c1_,u,*z_,tol);
108 cdual_->set(c1_->dual());
113 return half*(c1_->dot(*cdual_));
117 con_->applyAdjointJacobian_1(g,*cdual_,u,*z_,tol);
121 con_->applyJacobian_1(*c2_,v,u,*z_,tol);
122 con_->applyAdjointJacobian_1(hv,c2_->
dual(),u,*
z_,tol);
123 if ( !GaussNewtonHessian_ ) {
124 con_->applyAdjointHessian_11(*udual_,*cdual_,v,u,*z_,tol);
130 con_->applyInverseAdjointJacobian_1(*cdual_,v,u,*z_,tol);
131 con_->applyInverseJacobian_1(pv,cdual_->
dual(),u,*
z_,tol);
138 con_->setParameter(param);
const Teuchos::RCP< EqualityConstraint_SimOpt< Real > > con_
Provides the interface to evaluate objective functions.
virtual void plus(const Vector &x)=0
Compute , where .
void update(const Vector< Real > &u, bool flag=true, int iter=-1)
Update objective function.
const bool GaussNewtonHessian_
Contains definitions of custom data types in ROL.
virtual Teuchos::RCP< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
Apply Hessian approximation to vector.
Provides the interface to evaluate nonlinear least squares objective functions.
Defines the linear algebra or vector space interface.
NonlinearLeastSquaresObjective_SimOpt(const Teuchos::RCP< EqualityConstraint_SimOpt< Real > > &con, const Vector< Real > &uvec, const Vector< Real > &zvec, const Vector< Real > &cvec, const bool GNH=false)
Constructor.
Defines the equality constraint operator interface for simulation-based optimization.
virtual const Vector & dual() const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
void gradient(Vector< Real > &g, const Vector< Real > &u, Real &tol)
Compute gradient.
Teuchos::RCP< Vector< Real > > c1_
Teuchos::RCP< Vector< Real > > udual_
Teuchos::RCP< Vector< Real > > z_
void precond(Vector< Real > &pv, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
Apply preconditioner to vector.
Teuchos::RCP< Vector< Real > > c2_
virtual void setParameter(const std::vector< Real > ¶m)
Teuchos::RCP< Vector< Real > > cdual_
void setParameter(const std::vector< Real > ¶m)
Real value(const Vector< Real > &x, Real &tol)
Compute value.