44#ifndef ROL_AUGMENTED_SYSTEM_OPERATOR_H
45#define ROL_AUGMENTED_SYSTEM_OPERATOR_H
62 const Ptr<Constraint<Real>>
con_;
63 const Ptr<const Vector<Real>>
x_;
70 const Real delta = 0.0)
77 Ptr<Vector<Real>> h1 = Hvp.
get(0)->dual().clone();
78 con_->applyAdjointJacobian(*h1, *(vp.
get(1)), *
x_, tol);
83 con_->applyJacobian(*(Hvp.
get(1)), *(vp.
get(0)), *
x_, tol);
84 if (
delta_ >
static_cast<Real
>(0) ) {
Apply the augmented system operator.
virtual ~AugmentedSystemOperator()
AugmentedSystemOperator(const Ptr< Constraint< Real > > &con, const Ptr< const Vector< Real > > &x, const Real delta=0.0)
void applyAdjointInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply adjoint of the inverse linear operator.
const Ptr< const Vector< Real > > x_
void apply(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply linear operator.
const Ptr< Constraint< Real > > con_
void applyAdjoint(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply adjoint of linear operator.
void applyInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply inverse of linear operator.
Defines the general constraint operator interface.
Provides the interface to apply a linear operator.
Defines the linear algebra of vector space on a generic partitioned vector.
ROL::Ptr< const Vector< Real > > get(size_type i) const
const V & dual(void) const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis,...
Defines the linear algebra or vector space interface.