10#ifndef ROL_CHAIN_RULE_CONSTRAINT_HPP
11#define ROL_CHAIN_RULE_CONSTRAINT_HPP
29template<
typename Real>
38 y_(lag_inner.dual().clone()),
39 Jiv_(lag_inner.dual().clone()),
40 aJol_(lag_inner.dual().clone()),
66 Real& tol )
override {
74 Real& tol )
override {
83 Real& tol )
override {
93 Real& tol )
override {
107 Ptr<Vector<Real>>
y_;
ChainRuleConstraint(const Ptr< Constraint< Real > > &outer_con, const Ptr< Constraint< Real > > &inner_con, const Vector< Real > &x, const Vector< Real > &lag_inner)
const Ptr< Constraint< Real > > inner_con_
virtual void value(Vector< Real > &c, const Vector< Real > &x, Real &tol) override
virtual void applyJacobian(Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
virtual ~ChainRuleConstraint()=default
const Ptr< Constraint< Real > > outer_con_
Ptr< Vector< Real > > HolJiv_
virtual void update(const Vector< Real > &x, UpdateType type, int iter=-1)
virtual void applyAdjointJacobian(Vector< Real > &ajl, const Vector< Real > &l, const Vector< Real > &x, Real &tol) override
virtual void update(const Vector< Real > &x, bool flag, int iter=-1)
Ptr< Vector< Real > > aJol_
Ptr< Vector< Real > > Jiv_
virtual void applyAdjointHessian(Vector< Real > &ahlv, const Vector< Real > &l, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Ptr< Vector< Real > > HiaJol_
Defines the linear algebra or vector space interface.
virtual void plus(const Vector &x)=0
Compute , where .