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

#include <ROL_SerialConstraint.hpp>

+ Inheritance diagram for ROL::details::SerialConstraint< Real >:

Public Member Functions

 SerialConstraint (const Ptr< DynamicConstraint< Real >> &con, const Vector< Real > &u_initial, const Ptr< vector< TimeStamp< Real >>> &timeStamp)
 
size_type numTimeSteps (void) const
 
const Vector< Real > & getInitialCondition () const
 
void setInitialCondition (const Vector< Real > &u_initial)
 
bool getSkipInitialCondition () const
 
void setSkipInitialCondition (bool skip)
 
Ptr< vector< TimeStamp< Real > > > getTimeStamp () const
 
void setTimeStamp (const Ptr< vector< TimeStamp< Real >>> &timeStamp)
 
virtual void solve (Vector< Real > &c, Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Given \(z\), solve \(c(u,z)=0\) for \(u\). More...
 
virtual void value (Vector< Real > &c, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Evaluate the constraint operator \(c:\mathcal{U}\times\mathcal{Z} \rightarrow \mathcal{C}\) at \((u,z)\). More...
 
virtual void applyJacobian_1 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the partial constraint Jacobian at \((u,z)\), \(c_u(u,z) \in L(\mathcal{U}, \mathcal{C})\), to the vector \(v\). More...
 
virtual void applyInverseJacobian_1 (Vector< Real > &ijv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the inverse partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^{-1} \in L(\mathcal{C}, \mathcal{U})\), to the vector \(v\). More...
 
virtual void applyAdjointJacobian_1 (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &dualv, Real &tol) override
 Apply the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^* \in L(\mathcal{C}^*, \mathcal{U}^*)\), to the vector \(v\). This is the secondary interface, for use with dual spaces where the user does not define the dual() operation. More...
 
void applyInverseAdjointJacobian_1 (Vector< Real > &iajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the inverse of the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^{-*} \in L(\mathcal{U}^*, \mathcal{C}^*)\), to the vector \(v\). More...
 
virtual void applyJacobian_2 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the partial constraint Jacobian at \((u,z)\), \(c_z(u,z) \in L(\mathcal{Z}, \mathcal{C})\), to the vector \(v\). More...
 
virtual void applyAdjointJacobian_2 (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_z(u,z)^* \in L(\mathcal{C}^*, \mathcal{Z}^*)\), to vector \(v\). This is the primary interface. More...
 
virtual void applyAdjointHessian_11 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the simulation-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{uu}(u,z)(v,\cdot)^*w\). More...
 
virtual void applyAdjointHessian_12 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the optimization-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{uz}(u,z)(v,\cdot)^*w\). More...
 
virtual void applyAdjointHessian_21 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the simulation-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{zu}(u,z)(v,\cdot)^*w\). More...
 
virtual void applyAdjointHessian_22 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the optimization-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{zz}(u,z)(v,\cdot)^*w\). More...
 
- Public Member Functions inherited from ROL::ROL::Constraint_SimOpt< Real >
 Constraint_SimOpt ()
 
virtual void update (const Vector< Real > &u, const Vector< Real > &z, 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...
 
virtual void update_1 (const Vector< Real > &u, bool flag=true, int iter=-1)
 Update constraint functions with respect to Sim variable. x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count. More...
 
virtual void update_2 (const Vector< Real > &z, bool flag=true, int iter=-1)
 Update constraint functions with respect to Opt variable. x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count. More...
 
virtual void setSolveParameters (ROL::ParameterList &parlist)
 Set solve parameters. More...
 
virtual void applyAdjointJacobian_1 (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol)
 Apply the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^* \in L(\mathcal{C}^*, \mathcal{U}^*)\), to the vector \(v\). This is the primary interface. More...
 
virtual void applyAdjointJacobian_2 (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &dualv, Real &tol)
 Apply the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_z(u,z)^* \in L(\mathcal{C}^*, \mathcal{Z}^*)\), to vector \(v\). This is the secondary interface, for use with dual spaces where the user does not define the dual() operation. 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

\[ \begin{pmatrix} I & c'(x)^* \\ c'(x) & 0 \end{pmatrix} \begin{pmatrix} v_{1} \\ v_{2} \end{pmatrix} = \begin{pmatrix} b_{1} \\ b_{2} \end{pmatrix} \]

where \(v_{1} \in \mathcal{X}\), \(v_{2} \in \mathcal{C}^*\), \(b_{1} \in \mathcal{X}^*\), \(b_{2} \in \mathcal{C}\), \(I : \mathcal{X} \rightarrow \mathcal{X}^*\) is an identity operator, and \(0 : \mathcal{C}^* \rightarrow \mathcal{C}\) is a zero operator. More...

 
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 \(x\), \(P(x) \in L(\mathcal{C}, \mathcal{C})\), to vector \(v\). In general, this preconditioner satisfies the following relationship:

\[ c'(x) c'(x)^* P(x) v \approx v \,. \]

It is used by the solveAugmentedSystem method. More...

 
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 changed, iter is the outer algorithm iterations count. More...
 
virtual void value (Vector< Real > &c, const Vector< Real > &x, Real &tol)
 Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\). More...
 
virtual void applyJacobian (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
 Apply the constraint Jacobian at \(x\), \(c'(x) \in L(\mathcal{X}, \mathcal{C})\), to vector \(v\). More...
 
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 \(x\), \(c'(x)^* \in L(\mathcal{C}^*, \mathcal{X}^*)\), to vector \(v\). More...
 
virtual void applyAdjointHessian (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &x, 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...
 
virtual Real checkSolve (const ROL::Vector< Real > &u, const ROL::Vector< Real > &z, const ROL::Vector< Real > &c, const bool printToStream=true, std::ostream &outStream=std::cout)
 
virtual Real checkAdjointConsistencyJacobian_1 (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const bool printToStream=true, std::ostream &outStream=std::cout)
 Check the consistency of the Jacobian and its adjoint. This is the primary interface. More...
 
virtual Real checkAdjointConsistencyJacobian_1 (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &dualw, const Vector< Real > &dualv, const bool printToStream=true, std::ostream &outStream=std::cout)
 Check the consistency of the Jacobian and its adjoint. This is the secondary interface, for use with dual spaces where the user does not define the dual() operation. More...
 
virtual Real checkAdjointConsistencyJacobian_2 (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const bool printToStream=true, std::ostream &outStream=std::cout)
 Check the consistency of the Jacobian and its adjoint. This is the primary interface. More...
 
virtual Real checkAdjointConsistencyJacobian_2 (const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &dualw, const Vector< Real > &dualv, const bool printToStream=true, std::ostream &outStream=std::cout)
 Check the consistency of the Jacobian and its adjoint. This is the secondary interface, for use with dual spaces where the user does not define the dual() operation. More...
 
virtual Real checkInverseJacobian_1 (const Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const bool printToStream=true, std::ostream &outStream=std::cout)
 
virtual Real checkInverseAdjointJacobian_1 (const Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, const bool printToStream=true, std::ostream &outStream=std::cout)
 
std::vector< std::vector< Real > > checkApplyJacobian_1 (const Vector< Real > &u, const Vector< Real > &z, 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)
 
std::vector< std::vector< Real > > checkApplyJacobian_1 (const Vector< Real > &u, const Vector< Real > &z, 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)
 
std::vector< std::vector< Real > > checkApplyJacobian_2 (const Vector< Real > &u, const Vector< Real > &z, 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)
 
std::vector< std::vector< Real > > checkApplyJacobian_2 (const Vector< Real > &u, const Vector< Real > &z, 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)
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_11 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_11 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_21 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 \( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \) More...
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_21 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 \( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \) More...
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_12 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 \( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \) More...
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_12 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_22 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const bool printToStream=true, std::ostream &outStream=std::cout, const int numSteps=ROL_NUM_CHECKDERIV_STEPS, const int order=1)
 
std::vector< std::vector< Real > > checkApplyAdjointHessian_22 (const Vector< Real > &u, const Vector< Real > &z, const Vector< Real > &p, const Vector< Real > &v, const Vector< Real > &hv, const std::vector< Real > &steps, const bool printToStream=true, std::ostream &outStream=std::cout, const int order=1)
 
- Public Member Functions inherited from ROL::Constraint< Real >
virtual ~Constraint (void)
 
 Constraint (void)
 
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...
 
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 Types

using PV = PartitionedVector< Real >
 
using size_type = typename std::vector< Real >::size_type
 

Private Member Functions

PVpartition (Vector< Real > &x) const
 
const PVpartition (const Vector< Real > &x) const
 

Private Attributes

Ptr< DynamicConstraint< Real > > con_
 
Ptr< Vector< Real > > u_initial_
 
Ptr< Vector< Real > > u_zero_
 
Ptr< std::vector< TimeStamp
< Real > > > 
timeStamp_
 
VectorWorkspace< Real > workspace_
 
size_type Nt_
 
bool skipInitialCond_
 

Additional Inherited Members

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

Detailed Description

template<typename Real>
class ROL::details::SerialConstraint< Real >

Definition at line 67 of file ROL_SerialConstraint.hpp.

Member Typedef Documentation

template<typename Real >
using ROL::details::SerialConstraint< Real >::PV = PartitionedVector<Real>
private

Definition at line 69 of file ROL_SerialConstraint.hpp.

template<typename Real >
using ROL::details::SerialConstraint< Real >::size_type = typename std::vector<Real>::size_type
private

Definition at line 70 of file ROL_SerialConstraint.hpp.

Constructor & Destructor Documentation

template<typename Real >
ROL::details::SerialConstraint< Real >::SerialConstraint ( const Ptr< DynamicConstraint< Real >> &  con,
const Vector< Real > &  u_initial,
const Ptr< vector< TimeStamp< Real >>> &  timeStamp 
)
inline

Member Function Documentation

template<typename Real >
PV& ROL::details::SerialConstraint< Real >::partition ( Vector< Real > &  x) const
inlineprivate
template<typename Real >
const PV& ROL::details::SerialConstraint< Real >::partition ( const Vector< Real > &  x) const
inlineprivate

Definition at line 83 of file ROL_SerialConstraint.hpp.

template<typename Real >
size_type ROL::details::SerialConstraint< Real >::numTimeSteps ( void  ) const
inline
template<typename Real >
const Vector<Real>& ROL::details::SerialConstraint< Real >::getInitialCondition ( ) const
inline
template<typename Real >
void ROL::details::SerialConstraint< Real >::setInitialCondition ( const Vector< Real > &  u_initial)
inline
template<typename Real >
bool ROL::details::SerialConstraint< Real >::getSkipInitialCondition ( ) const
inline
template<typename Real >
void ROL::details::SerialConstraint< Real >::setSkipInitialCondition ( bool  skip)
inline
template<typename Real >
Ptr<vector<TimeStamp<Real> > > ROL::details::SerialConstraint< Real >::getTimeStamp ( ) const
inline
template<typename Real >
void ROL::details::SerialConstraint< Real >::setTimeStamp ( const Ptr< vector< TimeStamp< Real >>> &  timeStamp)
inline
template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::solve ( Vector< Real > &  c,
Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Given \(z\), solve \(c(u,z)=0\) for \(u\).

Parameters
[out]cis the result of evaluating the constraint operator at \((u,z)\); a constraint-space vector
[in,out]uis the solution vector; a simulation-space vector
[in]zis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

The defualt implementation is Newton's method globalized with a backtracking line search.


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 110 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, and ROL::details::SerialConstraint< Real >::u_initial_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::value ( Vector< Real > &  c,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Evaluate the constraint operator \(c:\mathcal{U}\times\mathcal{Z} \rightarrow \mathcal{C}\) at \((u,z)\).

Parameters
[out]cis the result of evaluating the constraint operator at \((u,z)\); a constraint-space vector
[in]uis the constraint argument; a simulation-space vector
[in]zis the constraint argument; an optimization-space vector
[in,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{c} = c(u,z)\), where \(\mathsf{c} \in \mathcal{C}\), \(\mathsf{u} \in \mathcal{U}\), and $ \(\mathsf{z} \in\mathcal{Z}\).


Implements ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 124 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, and ROL::details::SerialConstraint< Real >::u_initial_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyJacobian_1 ( Vector< Real > &  jv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the partial constraint Jacobian at \((u,z)\), \(c_u(u,z) \in L(\mathcal{U}, \mathcal{C})\), to the vector \(v\).

  @param[out]      jv  is the result of applying the constraint Jacobian to @b v at @b  \form#192; a constraint-space vector
  @param[in]       v   is a simulation-space vector
  @param[in]       u   is the constraint argument; an simulation-space vector
  @param[in]       z   is the constraint argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations; currently unused

  On return, \form#197, where

\(v \in \mathcal{U}\), \(\mathsf{jv} \in \mathcal{C}\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 139 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, ROL::details::SerialConstraint< Real >::u_zero_, and ROL::details::SerialConstraint< Real >::workspace_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyInverseJacobian_1 ( Vector< Real > &  ijv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the inverse partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^{-1} \in L(\mathcal{C}, \mathcal{U})\), to the vector \(v\).

  @param[out]      ijv is the result of applying the inverse constraint Jacobian to @b v at @b  \form#192; a simulation-space vector
  @param[in]       v   is a constraint-space vector
  @param[in]       u   is the constraint argument; a simulation-space vector
  @param[in]       z   is the constraint argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations; currently unused

  On return, \form#203, where

\(v \in \mathcal{C}\), \(\mathsf{ijv} \in \mathcal{U}\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 160 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, ROL::details::SerialConstraint< Real >::u_zero_, and ROL::details::SerialConstraint< Real >::workspace_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyAdjointJacobian_1 ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
const Vector< Real > &  dualv,
Real &  tol 
)
inlineoverridevirtual

Apply the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^* \in L(\mathcal{C}^*, \mathcal{U}^*)\), to the vector \(v\). This is the secondary interface, for use with dual spaces where the user does not define the dual() operation.

  @param[out]      ajv    is the result of applying the adjoint of the constraint Jacobian to @b v at @b (u,z); a dual simulation-space vector
  @param[in]       v      is a dual constraint-space vector
  @param[in]       u      is the constraint argument; a simulation-space vector
  @param[in]       z      is the constraint argument; an optimization-space vector
  @param[in]       dualv  is a vector used for temporary variables; a constraint-space vector
  @param[in,out]   tol    is a tolerance for inexact evaluations; currently unused

  On return, \form#206, where

\(v \in \mathcal{C}^*\), \(\mathsf{ajv} \in \mathcal{U}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 181 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, ROL::details::SerialConstraint< Real >::u_zero_, and ROL::details::SerialConstraint< Real >::workspace_.

template<typename Real >
void ROL::details::SerialConstraint< Real >::applyInverseAdjointJacobian_1 ( Vector< Real > &  iajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the inverse of the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_u(u,z)^{-*} \in L(\mathcal{U}^*, \mathcal{C}^*)\), to the vector \(v\).

  @param[out]      iajv is the result of applying the inverse adjoint of the constraint Jacobian to @b v at @b (u,z); a dual constraint-space vector
  @param[in]       v   is a dual simulation-space vector
  @param[in]       u   is the constraint argument; a simulation-space vector
  @param[in]       z   is the constraint argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations; currently unused

  On return, \form#212, where

\(v \in \mathcal{U}^*\), \(\mathsf{iajv} \in \mathcal{C}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 200 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, ROL::details::SerialConstraint< Real >::u_zero_, and ROL::details::SerialConstraint< Real >::workspace_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyJacobian_2 ( Vector< Real > &  jv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the partial constraint Jacobian at \((u,z)\), \(c_z(u,z) \in L(\mathcal{Z}, \mathcal{C})\), to the vector \(v\).

  @param[out]      jv  is the result of applying the constraint Jacobian to @b v at @b  \form#192; a constraint-space vector
  @param[in]       v   is an optimization-space vector
  @param[in]       u   is the constraint argument; a simulation-space vector
  @param[in]       z   is the constraint argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations; currently unused

  On return, \form#200, where

\(v \in \mathcal{Z}\), \(\mathsf{jv} \in \mathcal{C}\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 234 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, and ROL::details::SerialConstraint< Real >::u_zero_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyAdjointJacobian_2 ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the adjoint of the partial constraint Jacobian at \((u,z)\), \(c_z(u,z)^* \in L(\mathcal{C}^*, \mathcal{Z}^*)\), to vector \(v\). This is the primary interface.

  @param[out]      ajv    is the result of applying the adjoint of the constraint Jacobian to @b v at @b  \form#192; a dual optimization-space vector
  @param[in]       v      is a dual constraint-space vector
  @param[in]       u      is the constraint argument; a simulation-space vector
  @param[in]       z      is the constraint argument; an optimization-space vector
  @param[in,out]   tol    is a tolerance for inexact evaluations; currently unused

  On return, \form#209, where

\(v \in \mathcal{C}^*\), \(\mathsf{ajv} \in \mathcal{Z}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 248 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, and ROL::details::SerialConstraint< Real >::u_zero_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyAdjointHessian_11 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the simulation-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{uu}(u,z)(v,\cdot)^*w\).

  @param[out]      ahwv is the result of applying the simulation-space derivative of the adjoint of the constraint simulation-space Jacobian at @b  \form#192 to the vector @b  \form#215 in direction @b  \form#215; a dual simulation-space vector
  @param[in]       w    is the direction vector; a dual constraint-space vector
  @param[in]       v    is a simulation-space vector
  @param[in]       u    is the constraint argument; a simulation-space vector
  @param[in]       z    is the constraint argument; an optimization-space vector
  @param[in,out]   tol  is a tolerance for inexact evaluations; currently unused

  On return, \form#217, where

\(w \in \mathcal{C}^*\), \(v \in \mathcal{U}\), and \(\mathsf{ahwv} \in \mathcal{U}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 263 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::skipInitialCond_, ROL::details::SerialConstraint< Real >::timeStamp_, ROL::details::SerialConstraint< Real >::u_zero_, and ROL::details::SerialConstraint< Real >::workspace_.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyAdjointHessian_12 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the optimization-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{uz}(u,z)(v,\cdot)^*w\).

  @param[out]      ahwv is the result of applying the optimization-space derivative of the adjoint of the constraint simulation-space Jacobian at @b  \form#192 to the vector @b  \form#215 in direction @b  \form#215; a dual optimization-space vector
  @param[in]       w    is the direction vector; a dual constraint-space vector
  @param[in]       v    is a simulation-space vector
  @param[in]       u    is the constraint argument; a simulation-space vector
  @param[in]       z    is the constraint argument; an optimization-space vector
  @param[in,out]   tol  is a tolerance for inexact evaluations; currently unused

  On return, \form#221, where

\(w \in \mathcal{C}^*\), \(v \in \mathcal{U}\), and \(\mathsf{ahwv} \in \mathcal{Z}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 297 of file ROL_SerialConstraint.hpp.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyAdjointHessian_21 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the simulation-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{zu}(u,z)(v,\cdot)^*w\).

  @param[out]      ahwv is the result of applying the simulation-space derivative of the adjoint of the constraint optimization-space Jacobian at @b  \form#192 to the vector @b  \form#215 in direction @b  \form#215; a dual simulation-space vector
  @param[in]       w    is the direction vector; a dual constraint-space vector
  @param[in]       v    is a optimization-space vector
  @param[in]       u    is the constraint argument; a simulation-space vector
  @param[in]       z    is the constraint argument; an optimization-space vector
  @param[in,out]   tol  is a tolerance for inexact evaluations; currently unused

  On return, \form#224, where

\(w \in \mathcal{C}^*\), \(v \in \mathcal{Z}\), and \(\mathsf{ahwv} \in \mathcal{U}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 305 of file ROL_SerialConstraint.hpp.

template<typename Real >
virtual void ROL::details::SerialConstraint< Real >::applyAdjointHessian_22 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlineoverridevirtual

Apply the optimization-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{zz}(u,z)(v,\cdot)^*w\).

  @param[out]      ahwv is the result of applying the optimization-space derivative of the adjoint of the constraint optimization-space Jacobian at @b  \form#192 to the vector @b  \form#215 in direction @b  \form#215; a dual optimization-space vector
  @param[in]       w    is the direction vector; a dual constraint-space vector
  @param[in]       v    is a optimization-space vector
  @param[in]       u    is the constraint argument; a simulation-space vector
  @param[in]       z    is the constraint argument; an optimization-space vector
  @param[in,out]   tol  is a tolerance for inexact evaluations; currently unused

  On return, \form#226, where

\(w \in \mathcal{C}^*\), \(v \in \mathcal{Z}\), and \(\mathsf{ahwv} \in \mathcal{Z}^*\).


Reimplemented from ROL::ROL::Constraint_SimOpt< Real >.

Definition at line 312 of file ROL_SerialConstraint.hpp.

References ROL::details::SerialConstraint< Real >::con_, ROL::details::SerialConstraint< Real >::Nt_, ROL::details::SerialConstraint< Real >::partition(), ROL::details::SerialConstraint< Real >::timeStamp_, and ROL::details::SerialConstraint< Real >::u_initial_.

Member Data Documentation

template<typename Real >
Ptr<DynamicConstraint<Real> > ROL::details::SerialConstraint< Real >::con_
private
template<typename Real >
Ptr<Vector<Real> > ROL::details::SerialConstraint< Real >::u_initial_
private
template<typename Real >
Ptr<Vector<Real> > ROL::details::SerialConstraint< Real >::u_zero_
private
template<typename Real >
Ptr<std::vector<TimeStamp<Real> > > ROL::details::SerialConstraint< Real >::timeStamp_
private
template<typename Real >
VectorWorkspace<Real> ROL::details::SerialConstraint< Real >::workspace_
private
template<typename Real >
size_type ROL::details::SerialConstraint< Real >::Nt_
private
template<typename Real >
bool ROL::details::SerialConstraint< Real >::skipInitialCond_
private

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