ROL
Public Member Functions | Protected Attributes | Private Attributes | List of all members
ROL::ROL::Constraint_SimOpt< Real > Class Template Referenceabstract

#include <ROL_Constraint_SerialSimOpt.hpp>

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

Public Member Functions

 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 (const Vector< Real > &u, const Vector< Real > &z, UpdateType type, int iter=-1)
 
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_1 (const Vector< Real > &u, UpdateType type, int iter=-1)
 
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 update_2 (const Vector< Real > &z, UpdateType type, int iter=-1)
 
virtual void solve_update (const Vector< Real > &u, const Vector< Real > &z, UpdateType type, int iter=-1)
 Update SimOpt constraint during solve (disconnected from optimization updates). More...
 
virtual void value (Vector< Real > &c, const Vector< Real > &u, const Vector< Real > &z, Real &tol)=0
 Evaluate the constraint operator \(c:\mathcal{U}\times\mathcal{Z} \rightarrow \mathcal{C}\) at \((u,z)\). More...
 
virtual void solve (Vector< Real > &c, Vector< Real > &u, const Vector< Real > &z, Real &tol)
 Given \(z\), solve \(c(u,z)=0\) for \(u\). More...
 
virtual void setSolveParameters (ParameterList &parlist)
 Set solve parameters. More...
 
virtual void applyJacobian_1 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol)
 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 applyJacobian_2 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol)
 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 applyInverseJacobian_1 (Vector< Real > &ijv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol)
 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, 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_1 (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_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...
 
virtual void applyAdjointJacobian_2 (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_z(u,z)^* \in L(\mathcal{C}^*, \mathcal{Z}^*)\), to 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 void applyInverseAdjointJacobian_1 (Vector< Real > &iajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol)
 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 applyAdjointHessian_11 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol)
 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)
 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)
 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)
 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...
 
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 update (const Vector< Real > &x, UpdateType type, int iter=-1)
 Update constraint function. 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 Vector< Real > &u, const Vector< Real > &z, const 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)
 

Protected Attributes

Real atol_
 
Real rtol_
 
Real stol_
 
Real factor_
 
Real decr_
 
int maxit_
 
bool print_
 
bool zero_
 
int solverType_
 
bool firstSolve_
 

Private Attributes

Ptr< Vector< Real > > unew_
 
Ptr< Vector< Real > > jv_
 
const Real DEFAULT_atol_
 
const Real DEFAULT_rtol_
 
const Real DEFAULT_stol_
 
const Real DEFAULT_factor_
 
const Real DEFAULT_decr_
 
const int DEFAULT_maxit_
 
const bool DEFAULT_print_
 
const bool DEFAULT_zero_
 
const int DEFAULT_solverType_
 

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::ROL::Constraint_SimOpt< Real >

Definition at line 22 of file ROL_Constraint_SerialSimOpt.hpp.

Constructor & Destructor Documentation

template<class Real >
ROL::ROL::Constraint_SimOpt< Real >::Constraint_SimOpt ( )
inline

Member Function Documentation

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update ( const Vector< Real > &  u,
const Vector< Real > &  z,
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 in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 129 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update ( const Vector< Real > &  u,
const Vector< Real > &  z,
UpdateType  type,
int  iter = -1 
)
inlinevirtual

Reimplemented in ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 133 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update_1 ( const Vector< Real > &  u,
bool  flag = true,
int  iter = -1 
)
inlinevirtual

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.

Reimplemented in ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 143 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update_1 ( const Vector< Real > &  u,
UpdateType  type,
int  iter = -1 
)
inlinevirtual

Reimplemented in ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 144 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update_2 ( const Vector< Real > &  z,
bool  flag = true,
int  iter = -1 
)
inlinevirtual

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.

Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 151 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update_2 ( const Vector< Real > &  z,
UpdateType  type,
int  iter = -1 
)
inlinevirtual
template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::solve_update ( const Vector< Real > &  u,
const Vector< Real > &  z,
UpdateType  type,
int  iter = -1 
)
inlinevirtual

Update SimOpt constraint during solve (disconnected from optimization updates).

Parameters
[in]xis the optimization variable
[in]typeis the update type
[in]iteris the solver iteration count

Reimplemented in ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 160 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::value ( Vector< Real > &  c,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
pure virtual

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}\).


Implemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::solve ( Vector< Real > &  c,
Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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 in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::CompositeConstraint_SimOpt< Real >, and ROL::SerialConstraint< Real >.

Definition at line 191 of file ROL_Constraint_SerialSimOpt.hpp.

References ROL::Constraint_SerialSimOpt< Real >::con_, ROL::Constraint_SerialSimOpt< Real >::partition(), and ROL::Constraint_SerialSimOpt< Real >::u0_.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::setSolveParameters ( ParameterList &  parlist)
inlinevirtual

Set solve parameters.

Parameters
[in]parlistParameterList containing solve parameters

For the default implementation, parlist has two sublist ("SimOpt" and "Solve") and the "Solve" sublist has six input parameters.

  • "Residual Tolerance": Absolute tolerance for the norm of the residual (Real)
  • "Iteration Limit": Maximum number of Newton iterations (int)
  • "Sufficient Decrease Tolerance": Tolerance signifying sufficient decrease in the residual norm, between 0 and 1 (Real)
  • "Step Tolerance": Absolute tolerance for the step size parameter (Real)
  • "Backtracking Factor": Rate for decreasing step size during backtracking, between 0 and 1 (Real)
  • "Output Iteration History": Set to true in order to print solve iteration history (bool)
  • "Zero Initial Guess": Use a vector of zeros as an initial guess for the solve (bool)
  • "Solver Type": Determine which solver to use (0: Newton with line search, 1: Levenberg-Marquardt, 2: SQP) (int)

These parameters are accessed as parlist.sublist("SimOpt").sublist("Solve").get(...).


Definition at line 303 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyJacobian_1 ( Vector< Real > &  jv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218; 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#224, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 331 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyJacobian_2 ( Vector< Real > &  jv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218; 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#227, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::SerialConstraint< Real >, ROL::Constraint_SerialSimOpt< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 374 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyInverseJacobian_1 ( Vector< Real > &  ijv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218; 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#230, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 416 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1 ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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.

  @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,out]   tol    is a tolerance for inexact evaluations; currently unused

  On return, \form#233, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 440 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1 ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
const Vector< Real > &  dualv,
Real &  tol 
)
inlinevirtual

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#233, where

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


Reimplemented in ROL::Constraint_SerialSimOpt< Real >, and ROL::SerialConstraint< Real >.

Definition at line 466 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2 ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218; 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#236, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::SerialConstraint< Real >, ROL::Constraint_SerialSimOpt< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 511 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2 ( Vector< Real > &  ajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
const Vector< Real > &  dualv,
Real &  tol 
)
inlinevirtual

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.

  @param[out]      ajv    is the result of applying the adjoint of the constraint Jacobian to @b v at @b  \form#218; 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]       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#236, where

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


Reimplemented in ROL::Constraint_SerialSimOpt< Real >.

Definition at line 537 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyInverseAdjointJacobian_1 ( Vector< Real > &  iajv,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#239, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 581 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointHessian_11 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218 to the vector @b  \form#242 in direction @b  \form#242; 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#244, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::Constraint_SerialSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 607 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointHessian_12 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218 to the vector @b  \form#242 in direction @b  \form#242; 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#248, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 652 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointHessian_21 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218 to the vector @b  \form#242 in direction @b  \form#242; 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#251, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 697 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::applyAdjointHessian_22 ( Vector< Real > &  ahwv,
const Vector< Real > &  w,
const Vector< Real > &  v,
const Vector< Real > &  u,
const Vector< Real > &  z,
Real &  tol 
)
inlinevirtual

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#218 to the vector @b  \form#242 in direction @b  \form#242; 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#253, where

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


Reimplemented in ROL::ROL::Constraint_TimeSimOpt< Real >, ROL::Constraint_TimeSimOpt< Real >, ROL::SerialConstraint< Real >, and ROL::CompositeConstraint_SimOpt< Real >.

Definition at line 741 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual std::vector<Real> ROL::ROL::Constraint_SimOpt< Real >::solveAugmentedSystem ( Vector< Real > &  v1,
Vector< Real > &  v2,
const Vector< Real > &  b1,
const Vector< Real > &  b2,
const Vector< Real > &  x,
Real &  tol 
)
inlinevirtual

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.

Parameters
[out]v1is the optimization-space component of the result
[out]v2is the dual constraint-space component of the result
[in]b1is the dual optimization-space component of the right-hand side
[in]b2is the constraint-space component of the right-hand side
[in]xis the constraint argument; an optimization-space vector
[in,out]tolis the nominal relative residual tolerance

On return, \( [\mathsf{v1} \,\, \mathsf{v2}] \) approximately solves the augmented system, where the size of the residual is governed by special stopping conditions.

The default implementation is the preconditioned generalized minimal residual (GMRES) method, which enables the use of nonsymmetric preconditioners.


Reimplemented from ROL::Constraint< Real >.

Definition at line 806 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< 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\). In general, this preconditioner satisfies the following relationship:

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

It is used by the solveAugmentedSystem method.

  @param[out]      pv  is the result of applying the constraint preconditioner to @b v at @b x; a constraint-space vector
  @param[in]       v   is a constraint-space vector
  @param[in]       x   is the preconditioner argument; an optimization-space vector
  @param[in,out]   tol is a tolerance for inexact evaluations

  On return, \form#114, where

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

The default implementation is a null-op.


Reimplemented from ROL::Constraint< Real >.

Definition at line 834 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< 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 869 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< Real >::update ( const Vector< Real > &  x,
UpdateType  type,
int  iter = -1 
)
inlinevirtual

Update constraint function.

This function updates the constraint function at new iterations.

Parameters
[in]xis the new iterate.
[in]typeis the type of update requested.
[in]iteris the outer algorithm iterations count.

Reimplemented from ROL::Constraint< Real >.

Definition at line 874 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< 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 880 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< 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\).

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

  On return, \form#91, 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 889 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< 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\).

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

  On return, \form#95, 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 905 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual void ROL::ROL::Constraint_SimOpt< 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 \).

  @param[out]      ahuv is the result of applying the derivative of the adjoint of the constraint Jacobian at @b x to vector @b u in direction @b v; a dual optimization-space vector
  @param[in]       u    is the direction vector; a dual constraint-space vector
  @param[in]       v    is an optimization-space vector
  @param[in]       x    is the constraint argument; an optimization-space vector
  @param[in,out]   tol  is a tolerance for inexact evaluations; currently unused

  On return, \form#100, 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 922 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< Real >::checkSolve ( const Vector< Real > &  u,
const Vector< Real > &  z,
const Vector< Real > &  c,
const bool  printToStream = true,
std::ostream &  outStream = std::cout 
)
inlinevirtual
template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< 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 
)
inlinevirtual

Check the consistency of the Jacobian and its adjoint. This is the primary interface.

Parameters
[out]wis a dual constraint-space vector
[in]vis a simulation-space vector
[in]uis the constraint argument; a simulation-space vector
[in]zis the constraint argument; an optimization-space vector
[in]printToStreamis is a flag that turns on/off output
[in]outStreamis the output stream

Definition at line 992 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< 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 
)
inlinevirtual

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.

Parameters
[out]wis a dual constraint-space vector
[in]vis a simulation-space vector
[in]uis the constraint argument; a simulation-space vector
[in]zis the constraint argument; an optimization-space vector
[in]dualwis a constraint-space vector
[in]dualvis a dual simulation-space vector
[in]printToStreamis is a flag that turns on/off output
[in]outStreamis the output stream

Definition at line 1017 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< 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 
)
inlinevirtual

Check the consistency of the Jacobian and its adjoint. This is the primary interface.

Parameters
[out]wis a dual constraint-space vector
[in]vis an optimization-space vector
[in]uis the constraint argument; a simulation-space vector
[in]zis the constraint argument; an optimization-space vector
[in]printToStreamis is a flag that turns on/off output
[in]outStreamis the output stream

Definition at line 1062 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< 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 
)
inlinevirtual

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.

Parameters
[out]wis a dual constraint-space vector
[in]vis an optimization-space vector
[in]uis the constraint argument; a simulation-space vector
[in]zis the constraint argument; an optimization-space vector
[in]dualwis a constraint-space vector
[in]dualvis a dual optimization-space vector
[in]printToStreamis is a flag that turns on/off output
[in]outStreamis the output stream

Definition at line 1086 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< 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 
)
inlinevirtual

Definition at line 1118 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
virtual Real ROL::ROL::Constraint_SimOpt< 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 
)
inlinevirtual

Definition at line 1148 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1180 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1199 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1305 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1324 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1431 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1449 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

\( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \)

Definition at line 1554 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

\( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \)

Definition at line 1575 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

\( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \)

Definition at line 1680 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1699 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1801 of file ROL_Constraint_SerialSimOpt.hpp.

Referenced by main().

template<class Real >
std::vector<std::vector<Real> > ROL::ROL::Constraint_SimOpt< 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 
)
inline

Definition at line 1819 of file ROL_Constraint_SerialSimOpt.hpp.

Member Data Documentation

template<class Real >
Ptr<Vector<Real> > ROL::ROL::Constraint_SimOpt< Real >::unew_
private

Definition at line 77 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
Ptr<Vector<Real> > ROL::ROL::Constraint_SimOpt< Real >::jv_
private

Definition at line 78 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const Real ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_atol_
private

Definition at line 81 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const Real ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_rtol_
private

Definition at line 82 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const Real ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_stol_
private

Definition at line 83 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const Real ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_factor_
private

Definition at line 84 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const Real ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_decr_
private

Definition at line 85 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const int ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_maxit_
private

Definition at line 86 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const bool ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_print_
private

Definition at line 87 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const bool ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_zero_
private

Definition at line 88 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
const int ROL::ROL::Constraint_SimOpt< Real >::DEFAULT_solverType_
private

Definition at line 89 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
Real ROL::ROL::Constraint_SimOpt< Real >::atol_
protected

Definition at line 94 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
Real ROL::ROL::Constraint_SimOpt< Real >::rtol_
protected

Definition at line 95 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
Real ROL::ROL::Constraint_SimOpt< Real >::stol_
protected

Definition at line 96 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
Real ROL::ROL::Constraint_SimOpt< Real >::factor_
protected

Definition at line 97 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
Real ROL::ROL::Constraint_SimOpt< Real >::decr_
protected

Definition at line 98 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
int ROL::ROL::Constraint_SimOpt< Real >::maxit_
protected

Definition at line 99 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
bool ROL::ROL::Constraint_SimOpt< Real >::print_
protected

Definition at line 100 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
bool ROL::ROL::Constraint_SimOpt< Real >::zero_
protected

Definition at line 101 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
int ROL::ROL::Constraint_SimOpt< Real >::solverType_
protected

Definition at line 102 of file ROL_Constraint_SerialSimOpt.hpp.

template<class Real >
bool ROL::ROL::Constraint_SimOpt< Real >::firstSolve_
protected

Definition at line 105 of file ROL_Constraint_SerialSimOpt.hpp.


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