44#ifndef ROL_RANGE_SPACE_OPERATOR_H
45#define ROL_RANGE_SPACE_OPERATOR_H
61 const Ptr<Constraint<Real>>
con_;
62 const Ptr<Vector<Real>>
x_;
64 mutable Ptr<Vector<Real>>
b1_;
65 mutable Ptr<Vector<Real>>
b2_;
66 mutable Ptr<Vector<Real>>
mul_;
73 :
con_(con),
x_(dom->clone()) {
75 b1_ = dom->dual().clone();
77 mul_ = ran->dual().clone();
Defines the general constraint operator interface.
Provides the interface to apply a linear operator.
Projects on to the null space of a linear constraint.
void applyAdjoint(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply adjoint of linear operator.
const Ptr< Vector< Real > > x_
Ptr< Vector< Real > > b1_
virtual ~RangeSpaceOperator()
Ptr< Vector< Real > > b2_
virtual void apply(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply linear operator.
virtual void update(const Vector< Real > &x, bool flag=true, int iter=-1)
Update linear operator.
Ptr< Vector< Real > > mul_
const Ptr< Constraint< Real > > con_
void applyAdjointInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply adjoint of the inverse linear operator.
RangeSpaceOperator(const Ptr< Constraint< Real > > &con, const Ptr< const Vector< Real > > &dom, const Ptr< const Vector< Real > > &ran)
void applyInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply inverse of linear operator.
Defines the linear algebra or vector space interface.