1 #ifndef ROL_EQUALITYCONSTRAINT_PARTITIONED_H 2 #define ROL_EQUALITYCONSTRAINT_PARTITIONED_H 20 typedef typename std::vector<Real>::size_type
uint;
24 const std::vector<Teuchos::RCP<EC> >
con_;
38 PV& cpv = Teuchos::dyn_cast<
PV>(c);
43 con_[k]->value(*(cpv.
get(k)),x,tol);
52 PV& jvpv = Teuchos::dyn_cast<
PV>(jv);
57 con_[k]->applyJacobian( *(jvpv.
get(k)), v, x, tol);
65 const PV& vpv = Teuchos::dyn_cast<
const PV>(v);
67 Teuchos::RCP<V> temp = ajv.
clone();
71 con_[k]->applyAdjointJacobian( *temp, *(vpv.
get(k)), x, tol);
80 const PV& upv = Teuchos::dyn_cast<
const PV>(u);
82 Teuchos::RCP<V> temp = ahuv.
clone();
86 con_[k]->applyAdjointHessian( *temp, *(upv.
get(k)), v, x, tol );
95 const PV& vpv = Teuchos::dyn_cast<
const PV>(v);
96 PV& pvpv = Teuchos::dyn_cast<
PV>(pv);
99 con_[k]->applyPreconditioner( *(pvpv.get(k)), *(vpv.
get(k)), x, g, tol );
109 con_[k]->setParameter(param);
116 Teuchos::RCP<EqualityConstraint<Real> >
119 using Teuchos::RCP;
using Teuchos::rcp;
122 typedef RCP<EqualityConstraint<Real> > RCPEC;
123 RCPEC con[] = { con1, con2 };
125 return rcp(
new ECP( std::vector<RCPEC>( con, con+2 ) ) );
129 Teuchos::RCP<EqualityConstraint<Real> >
133 using Teuchos::RCP;
using Teuchos::rcp;
136 typedef RCP<EqualityConstraint<Real> > RCPEC;
137 RCPEC con[] = { con1, con2, con3 };
139 return rcp(
new ECP( std::vector<RCPEC>( con, con+3 ) ) );
146 #endif // ROL_PARTITIONEQUALITYCONSTRAINT_H virtual void applyPreconditioner(Vector< Real > &pv, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &g, Real &tol)
Apply a constraint preconditioner at , , to vector . Ideally, this preconditioner satisfies the follo...
virtual void applyJacobian(Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply the constraint Jacobian at , , to vector .
virtual void plus(const Vector &x)=0
Compute , where .
std::vector< Real >::size_type uint
Defines the linear algebra of vector space on a generic partitioned vector.
PartitionedVector< Real > PV
Allows composition of equality constraints.
Teuchos::RCP< const Vector< Real > > get(size_type i) const
virtual void setParameter(const std::vector< Real > ¶m)
virtual void applyAdjointHessian(Vector< Real > &ahuv, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply the derivative of the adjoint of the constraint Jacobian at to vector in direction ...
virtual Teuchos::RCP< Vector > clone() const =0
Clone to make a new (uninitialized) vector.
virtual void zero()
Set to zero vector.
Defines the linear algebra or vector space interface.
virtual ~EqualityConstraint_Partitioned()
Teuchos::RCP< EqualityConstraint< Real > > CreateEqualityConstraintPartitioned(const Teuchos::RCP< EqualityConstraint< Real > > &con1, const Teuchos::RCP< EqualityConstraint< Real > > &con2)
Defines the equality constraint operator interface.
void setParameter(const std::vector< Real > ¶m)
const std::vector< Teuchos::RCP< EC > > con_
EqualityConstraint< Real > EC
virtual void value(Vector< Real > &c, const Vector< Real > &x, Real &tol)
Evaluate the constraint operator at .
virtual void applyAdjointJacobian(Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply the adjoint of the the constraint Jacobian at , , to vector .
EqualityConstraint_Partitioned(const std::vector< Teuchos::RCP< EqualityConstraint< Real > > > &con)