ROL
Public Member Functions | Private Attributes | List of all members
ROL::Constraint_DynamicState< Real > Class Template Reference

#include <ROL_Constraint_DynamicState.hpp>

+ Inheritance diagram for ROL::Constraint_DynamicState< Real >:

Public Member Functions

 Constraint_DynamicState (const Ptr< DynamicConstraint< Real >> &con, const Ptr< const Vector< Real >> &uo, const Ptr< const Vector< Real >> &z, const Ptr< const TimeStamp< Real >> &ts)
 
void value (Vector< Real > &c, const Vector< Real > &u, Real &tol)
 Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\). More...
 
void applyJacobian (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
 Apply the constraint Jacobian at \(x\), \(c'(x) \in L(\mathcal{X}, \mathcal{C})\), to vector \(v\). More...
 
void applyAdjointJacobian (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
 Apply the adjoint of the the constraint Jacobian at \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\). More...
 
void applyAdjointHessian (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, Real &tol)
 Apply the derivative of the adjoint of the constraint Jacobian at \(x\) to vector \(u\) in direction \(v\), according to \( v \mapsto c''(x)(v,\cdot)^*u \). More...
 
void update (const Vector< Real > &u, bool flag=true, int iter=-1)
 Update constraint functions.
x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count. More...
 
void applyPreconditioner (Vector< Real > &pv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &g, Real &tol)
 Apply a constraint preconditioner at \(x\), \(P(x) \in L(\mathcal{C}, \mathcal{C}^*)\), to vector \(v\). Ideally, this preconditioner satisfies the following relationship: More...
 
- Public Member Functions inherited from ROL::Constraint< Real >
virtual ~Constraint (void)
 
 Constraint (void)
 
virtual void update (const Vector< Real > &x, UpdateType type, int iter=-1)
 Update constraint function. More...
 
virtual void applyAdjointJacobian (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &dualv, Real &tol)
 Apply the adjoint of the the constraint Jacobian at \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\). More...
 
virtual std::vector< Real > solveAugmentedSystem (Vector< Real > &v1, Vector< Real > &v2, const Vector< Real > &b1, const Vector< Real > &b2, const Vector< Real > &x, Real &tol)
 Approximately solves the augmented system More...
 
void activate (void)
 Turn on constraints. More...
 
void deactivate (void)
 Turn off constraints. More...
 
bool isActivated (void)
 Check if constraints are on. More...
 
virtual std::vector< std::vector< Real > > checkApplyJacobian (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &jv, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference check for the constraint Jacobian application. More...
 
virtual std::vector< std::vector< Real > > checkApplyJacobian (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &jv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference check for the constraint Jacobian application. More...
 
virtual std::vector< std::vector< Real > > checkApplyAdjointJacobian (const Vector< Real > &x, const Vector< Real > &v, const Vector< Real > &c, const Vector< Real > &ajv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS)
 Finite-difference check for the application of the adjoint of constraint Jacobian. More...
 
virtual Real checkAdjointConsistencyJacobian (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &x, const bool printToStream=true, std::ostream &outStream=std::cout)
 
virtual Real checkAdjointConsistencyJacobian (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &x, const Vector< Real > &dualw, const Vector< Real > &dualv, const bool printToStream=true, std::ostream &outStream=std::cout)
 
virtual std::vector< std::vector< Real > > checkApplyAdjointHessian (const Vector< Real > &x, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &hv, const std::vector< Real > &step, const bool printToScreen=true, std::ostream &outStream=std::cout, const int order=1)
 Finite-difference check for the application of the adjoint of constraint Hessian. More...
 
virtual std::vector< std::vector< Real > > checkApplyAdjointHessian (const Vector< Real > &x, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &hv, const bool printToScreen=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 Finite-difference check for the application of the adjoint of constraint Hessian. More...
 
virtual void setParameter (const std::vector< Real > &param)
 

Private Attributes

const Ptr< DynamicConstraint< Real > > con_
 
const Ptr< const Vector< Real > > uo_
 
const Ptr< const Vector< Real > > z_
 
const Ptr< const TimeStamp< Real > > ts_
 
Ptr< Vector< Real > > ijv_
 
bool isInit_
 

Additional Inherited Members

- Protected Member Functions inherited from ROL::Constraint< Real >
const std::vector< Real > getParameter (void) const
 

Detailed Description

template<class Real>
class ROL::Constraint_DynamicState< Real >

Definition at line 53 of file ROL_Constraint_DynamicState.hpp.

Constructor & Destructor Documentation

◆ Constraint_DynamicState()

template<class Real >
ROL::Constraint_DynamicState< Real >::Constraint_DynamicState ( const Ptr< DynamicConstraint< Real >> &  con,
const Ptr< const Vector< Real >> &  uo,
const Ptr< const Vector< Real >> &  z,
const Ptr< const TimeStamp< Real >> &  ts 
)
inline

Definition at line 64 of file ROL_Constraint_DynamicState.hpp.

Member Function Documentation

◆ value()

template<class Real >
void ROL::Constraint_DynamicState< Real >::value ( Vector< Real > &  c,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\).

Parameters
[out]cis the result of evaluating the constraint operator at x; a constraint-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{c} = c(x)\), where \(\mathsf{c} \in \mathcal{C}\), \(\mathsf{x} \in \mathcal{X}\).


Implements ROL::Constraint< Real >.

Definition at line 70 of file ROL_Constraint_DynamicState.hpp.

References ROL::Constraint_DynamicState< Real >::con_, ROL::Constraint_DynamicState< Real >::ts_, ROL::Constraint_DynamicState< Real >::uo_, and ROL::Constraint_DynamicState< Real >::z_.

◆ applyJacobian()

template<class Real >
void ROL::Constraint_DynamicState< Real >::applyJacobian ( Vector< Real > &  jv,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply the constraint Jacobian at \(x\), \(c'(x) \in L(\mathcal{X}, \mathcal{C})\), to vector \(v\).

Parameters
[out]jvis the result of applying the constraint Jacobian to v at x; a constraint-space vector
[in]vis an optimization-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{jv} = c'(x)v\), where \(v \in \mathcal{X}\), \(\mathsf{jv} \in \mathcal{C}\).

The default implementation is a finite-difference approximation.


Reimplemented from ROL::Constraint< Real >.

Definition at line 74 of file ROL_Constraint_DynamicState.hpp.

References ROL::Constraint_DynamicState< Real >::con_, ROL::Constraint_DynamicState< Real >::ts_, ROL::Constraint_DynamicState< Real >::uo_, and ROL::Constraint_DynamicState< Real >::z_.

◆ applyAdjointJacobian()

template<class Real >
void ROL::Constraint_DynamicState< Real >::applyAdjointJacobian ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply the adjoint of the the constraint Jacobian at \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\).

Parameters
[out]ajvis the result of applying the adjoint of the constraint Jacobian to v at x; a dual optimization-space vector
[in]vis a dual constraint-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{ajv} = c'(x)^*v\), where \(v \in \mathcal{C}^*\), \(\mathsf{ajv} \in \mathcal{X}^*\).

The default implementation is a finite-difference approximation.


Reimplemented from ROL::Constraint< Real >.

Definition at line 79 of file ROL_Constraint_DynamicState.hpp.

References ROL::Constraint_DynamicState< Real >::con_, ROL::Constraint_DynamicState< Real >::ts_, ROL::Constraint_DynamicState< Real >::uo_, and ROL::Constraint_DynamicState< Real >::z_.

◆ applyAdjointHessian()

template<class Real >
void ROL::Constraint_DynamicState< Real >::applyAdjointHessian ( Vector< Real > &  ahuv,
const Vector< Real > &  u,
const Vector< Real > &  v,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

Apply the derivative of the adjoint of the constraint Jacobian at \(x\) to vector \(u\) in direction \(v\), according to \( v \mapsto c''(x)(v,\cdot)^*u \).

Parameters
[out]ahuvis the result of applying the derivative of the adjoint of the constraint Jacobian at x to vector u in direction v; a dual optimization-space vector
[in]uis the direction vector; a dual constraint-space vector
[in]vis an optimization-space vector
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \( \mathsf{ahuv} = c''(x)(v,\cdot)^*u \), where \(u \in \mathcal{C}^*\), \(v \in \mathcal{X}\), and \(\mathsf{ahuv} \in \mathcal{X}^*\).

The default implementation is a finite-difference approximation based on the adjoint Jacobian.


Reimplemented from ROL::Constraint< Real >.

Definition at line 83 of file ROL_Constraint_DynamicState.hpp.

References ROL::Constraint_DynamicState< Real >::con_, ROL::Constraint_DynamicState< Real >::ts_, ROL::Constraint_DynamicState< Real >::uo_, and ROL::Constraint_DynamicState< Real >::z_.

◆ update()

template<class Real >
void ROL::Constraint_DynamicState< Real >::update ( const Vector< Real > &  x,
bool  flag = true,
int  iter = -1 
)
inlinevirtual

Update constraint functions.
x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count.

Reimplemented from ROL::Constraint< Real >.

Definition at line 87 of file ROL_Constraint_DynamicState.hpp.

References ROL::Constraint_DynamicState< Real >::con_, ROL::Constraint_DynamicState< Real >::ts_, ROL::Constraint_DynamicState< Real >::uo_, and ROL::Constraint_DynamicState< Real >::z_.

◆ applyPreconditioner()

template<class Real >
void ROL::Constraint_DynamicState< Real >::applyPreconditioner ( Vector< Real > &  pv,
const Vector< Real > &  v,
const Vector< Real > &  x,
const Vector< Real > &  g,
Real &  tol 
)
inlinevirtual

Apply a constraint preconditioner at \(x\), \(P(x) \in L(\mathcal{C}, \mathcal{C}^*)\), to vector \(v\). Ideally, this preconditioner satisfies the following relationship:

\[ \left[c'(x) \circ R \circ c'(x)^* \circ P(x)\right] v = v \,, \]

where R is the appropriate Riesz map in \(L(\mathcal{X}^*, \mathcal{X})\). It is used by the solveAugmentedSystem method.

Parameters
[out]pvis the result of applying the constraint preconditioner to v at x; a dual constraint-space vector
[in]vis a constraint-space vector
[in]xis the preconditioner argument; an optimization-space vector
[in]gis the preconditioner argument; a dual optimization-space vector, unused
[in,out]tolis a tolerance for inexact evaluations

On return, \(\mathsf{pv} = P(x)v\), where \(v \in \mathcal{C}\), \(\mathsf{pv} \in \mathcal{C}^*\).

The default implementation is the Riesz map in \(L(\mathcal{C}, \mathcal{C}^*)\).


Reimplemented from ROL::Constraint< Real >.

Definition at line 92 of file ROL_Constraint_DynamicState.hpp.

References ROL::Vector< Real >::clone(), ROL::Constraint_DynamicState< Real >::con_, ROL::Constraint_DynamicState< Real >::ijv_, ROL::Constraint_DynamicState< Real >::isInit_, ROL::Constraint_DynamicState< Real >::ts_, ROL::Constraint_DynamicState< Real >::uo_, and ROL::Constraint_DynamicState< Real >::z_.

Member Data Documentation

◆ con_

template<class Real >
const Ptr<DynamicConstraint<Real> > ROL::Constraint_DynamicState< Real >::con_
private

◆ uo_

template<class Real >
const Ptr<const Vector<Real> > ROL::Constraint_DynamicState< Real >::uo_
private

◆ z_

template<class Real >
const Ptr<const Vector<Real> > ROL::Constraint_DynamicState< Real >::z_
private

◆ ts_

template<class Real >
const Ptr<const TimeStamp<Real> > ROL::Constraint_DynamicState< Real >::ts_
private

◆ ijv_

template<class Real >
Ptr<Vector<Real> > ROL::Constraint_DynamicState< Real >::ijv_
private

◆ isInit_

template<class Real >
bool ROL::Constraint_DynamicState< Real >::isInit_
private

The documentation for this class was generated from the following file: