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 con_[k]->update(x,flag,iter);
44 PV& cpv = Teuchos::dyn_cast<
PV>(c);
49 con_[k]->value(*(cpv.
get(k)),x,tol);
58 PV& jvpv = Teuchos::dyn_cast<
PV>(jv);
63 con_[k]->applyJacobian( *(jvpv.
get(k)), v, x, tol);
71 const PV& vpv = Teuchos::dyn_cast<
const PV>(v);
73 Teuchos::RCP<V> temp = ajv.
clone();
77 con_[k]->applyAdjointJacobian( *temp, *(vpv.
get(k)), x, tol);
86 const PV& upv = Teuchos::dyn_cast<
const PV>(u);
88 Teuchos::RCP<V> temp = ahuv.
clone();
92 con_[k]->applyAdjointHessian( *temp, *(upv.
get(k)), v, x, tol );
101 const PV& vpv = Teuchos::dyn_cast<
const PV>(v);
102 PV& pvpv = Teuchos::dyn_cast<
PV>(pv);
105 con_[k]->applyPreconditioner( *(pvpv.get(k)), *(vpv.
get(k)), x, g, tol );
115 con_[k]->setParameter(param);
122 Teuchos::RCP<EqualityConstraint<Real> >
125 using Teuchos::RCP;
using Teuchos::rcp;
128 typedef RCP<EqualityConstraint<Real> > RCPEC;
129 RCPEC con[] = { con1, con2 };
131 return rcp(
new ECP( std::vector<RCPEC>( con, con+2 ) ) );
135 Teuchos::RCP<EqualityConstraint<Real> >
139 using Teuchos::RCP;
using Teuchos::rcp;
142 typedef RCP<EqualityConstraint<Real> > RCPEC;
143 RCPEC con[] = { con1, con2, con3 };
145 return rcp(
new ECP( std::vector<RCPEC>( con, con+3 ) ) );
152 #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.
virtual void update(const Vector< Real > &x, bool flag=true, int iter=-1)
Update constraint functions. x is the optimization variable, flag = true if optimization variable is ...
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)
Teuchos::RCP< const Vector< Real > > get(size_type i) const
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)