44 #ifndef ROL_SLACKLESSOBJECTIVE_DEF_HPP
45 #define ROL_SLACKLESSOBJECTIVE_DEF_HPP
49 template<
typename Real>
52 template<
typename Real>
57 template<
typename Real>
59 obj_->update( *getOpt(x), type, iter );
62 template<
typename Real>
64 obj_->update( *getOpt(x), flag, iter );
67 template<
typename Real>
69 return obj_->value( *getOpt(x), tol );
72 template<
typename Real>
74 return obj_->dirDeriv(*getOpt(x),*getOpt(d),tol);
77 template<
typename Real>
80 obj_->gradient(*getOpt(g),*getOpt(x),tol);
83 template<
typename Real>
86 obj_->hessVec(*getOpt(hv),*getOpt(v),*getOpt(x),tol);
89 template<
typename Real>
91 obj_->invHessVec( *getOpt(ihv), *getOpt(v), *getOpt(x), tol );
94 const int nvec =
static_cast<int>(vp.
numVectors());
95 for (
int i = 1; i < nvec; ++i) {
96 Pvp.
get(i)->set(vp.
get(i)->dual());
100 template<
typename Real>
102 obj_->precond( *getOpt(Pv), *getOpt(v), *getOpt(x), tol );
105 const int nvec =
static_cast<int>(vp.
numVectors());
106 for (
int i = 1; i < nvec; ++i) {
107 Pvp.
get(i)->set(vp.
get(i)->dual());
111 template<
typename Real>
114 obj_->setParameter(param);
117 template<
typename Real>
122 template<
typename Real>
127 template<
typename Real>
131 const int nvec =
static_cast<int>(xpv.
numVectors());
132 for (
int i = 1; i < nvec; ++i) {
139 #endif // ROL__SLACKLESSOBJECTIVE_HPP
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol) override
Compute gradient.
Real dirDeriv(const Vector< Real > &x, const Vector< Real > &d, Real &tol) override
Compute directional derivative.
Provides the interface to evaluate objective functions.
void setParameter(const std::vector< Real > ¶m) override
size_type numVectors() const
ROL::Ptr< const Vector< Real > > get(size_type i) const
Defines the linear algebra of vector space on a generic partitioned vector.
void update(const Vector< Real > &x, UpdateType type, int iter=-1) override
Update objective function.
void zeroSlack(Vector< Real > &x) const
Defines the linear algebra or vector space interface.
void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Apply Hessian approximation to vector.
void precond(Vector< Real > &Pv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Apply preconditioner to vector.
Real value(const Vector< Real > &x, Real &tol) override
Compute value.
Ptr< Vector< Real > > getOpt(Vector< Real > &xs) const
virtual void setParameter(const std::vector< Real > ¶m)
SlacklessObjective(const Ptr< Objective< Real >> &obj)
Ptr< Objective< Real > > getObjective(void) const
void invHessVec(Vector< Real > &ihv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Apply inverse Hessian approximation to vector.