10 #ifndef ROL_INACTIVE_SET_VECTOR_HPP
11 #define ROL_INACTIVE_SET_VECTOR_HPP
34 template<
typename Real>
50 const Ptr<V>& scaling_vec,
52 const Ptr<Bnd>& bnd ) :
58 Real
dot(
const V& x )
const override {
66 bnd_->pruneActive( *y, *
x_ );
72 return makePtr<Primal>( this->
getVector()->clone(),
77 Ptr<V>
basis(
const int i )
const override {
78 return makePtr<Primal>( this->
getVector()->basis(i),
83 void const V&
dual()
const override {
85 auto dual_vec = w.copy( this->
getVector() );
98 template<
typename Real>
99 class InactiveSet_DualVector :
public DualScaledVector<Real> {
114 const Ptr<V>& scaling_vec,
116 const Ptr<Bnd>& bnd ) :
121 Real
dot(
const V& x )
const override {
128 bnd_->pruneActive( *y, *
x_ );
130 return y->dot( *this->getVector() );
134 return makePtr<Primal>( this->getVector()->clone(),
139 Ptr<V>
basis(
const int i )
const override {
140 return makePtr<Primal>( this->getVector()->basis(i),
145 void const V&
dual()
const override {
147 auto dual_vec = w.copy( this->getVector() );
148 this->multiply( dual_vec );
166 #endif // ROL_INACTIVE_SET_VECTOR_HPP
const Ptr< V > & getIterateVector()
const Ptr< V > & getScalingVector()
VectorWorkspace< Real > & getWorkspace() const
void const V & dual() const override
void multiply_scaling(const Ptr< V > &y) const
Defines the a Vector which has a diagonally scaled dot product that neglects active set elements Used...
const Ptr< V > & getIterateVector()
Defines the linear algebra or vector space interface.
const Ptr< V > & getVector()
const Ptr< const V > & getIterateVector() const
Provides the implementation of the ROL::Vector interface that handles scalings in the inner product...
Defines the a Vector which has a diagonally scaled dot product that neglects active set elements Used...
void const V & dual() const override
InactiveSet_DualVector(const Ptr< V > &vec, const Ptr< V > &scaling_vec, const Ptr< V > &x, const Ptr< Bnd > &bnd)
virtual ~InactiveSet_PrimalVector()
Ptr< V > basis(const int i) const override
virtual ~InactiveSet_PrimalVector()
VectorWorkspace< Real > & getWorkspace() const
Ptr< V > basis(const int i) const override
Real dot(const V &x) const override
const Ptr< V > & getScalingVector()
Provides the interface to apply upper and lower bound constraints.
Ptr< V > clone() const override
void divide_scaling(const < V > &y) const
const Ptr< const V > & getIterateVector() const
InactiveSet_PrimalVector(const Ptr< V > &vec, const Ptr< V > &scaling_vec, const Ptr< V > &x, const Ptr< Bnd > &bnd)
Real dot(const V &x) const override
void setIterateVector(const Ptr< V > &x) const
Ptr< V > clone() const override
void setIterateVector(const Ptr< V > &x) const