ROL
|
Defines the constraint operator interface for simulation-based optimization. More...
#include <ROL_Constraint_SimOpt.hpp>
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 > ¶m) |
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 |
Defines the constraint operator interface for simulation-based optimization.
This constraint interface inherits from ROL_Constraint, for the use case when \(\mathcal{X}=\mathcal{U}\times\mathcal{Z}\) where \(\mathcal{U}\) and \(\mathcal{Z}\) are Banach spaces. \(\mathcal{U}\) denotes the "simulation space" and \(\mathcal{Z}\) denotes the "optimization space" (of designs, controls, parameters). The simulation-based constraints are of the form
\[ c(u,z) = 0 \,. \]
The basic operator interface, to be implemented by the user, requires:
The user may also overload:
Definition at line 55 of file ROL_Constraint_SimOpt.hpp.
|
inline |
Definition at line 142 of file ROL_Constraint_SimOpt.hpp.
|
inlinevirtual |
Update constraint functions. x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count.
Definition at line 163 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::update_1(), and ROL::Constraint_SimOpt< Real >::update_2().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian_11(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_12(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_21(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_22(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Constraint_SimOpt< Real >::applyJacobian_1(), ROL::Constraint_SimOpt< Real >::applyJacobian_2(), ROL::Constraint_SimOpt< Real >::checkAdjointConsistencyJacobian_1(), ROL::Constraint_SimOpt< Real >::checkAdjointConsistencyJacobian_2(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_11(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_12(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_21(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_22(), ROL::Constraint_SimOpt< Real >::checkApplyJacobian_1(), ROL::Constraint_SimOpt< Real >::checkApplyJacobian_2(), ROL::Constraint_SimOpt< Real >::checkInverseAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::checkInverseJacobian_1(), ROL::Constraint_SimOpt< Real >::checkSolve(), and ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Definition at line 167 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::update_1(), and ROL::Constraint_SimOpt< Real >::update_2().
|
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.
Definition at line 177 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Definition at line 178 of file ROL_Constraint_SimOpt.hpp.
|
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.
Definition at line 185 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Definition at line 186 of file ROL_Constraint_SimOpt.hpp.
|
inlinevirtual |
Update SimOpt constraint during solve (disconnected from optimization updates).
[in] | x | is the optimization variable |
[in] | type | is the update type |
[in] | iter | is the solver iteration count |
Definition at line 194 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::solve().
|
pure virtual |
Evaluate the constraint operator \(c:\mathcal{U}\times\mathcal{Z} \rightarrow \mathcal{C}\) at \((u,z)\).
[out] | c | is the result of evaluating the constraint operator at \((u,z)\); a constraint-space vector |
[in] | u | is the constraint argument; a simulation-space vector |
[in] | z | is the constraint argument; an optimization-space vector |
[in,out] | tol | is 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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, redConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, and valConstraint< Real >.
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Constraint_SimOpt< Real >::applyJacobian_1(), ROL::Constraint_SimOpt< Real >::applyJacobian_2(), ROL::Constraint_SimOpt< Real >::checkApplyJacobian_1(), ROL::Constraint_SimOpt< Real >::checkApplyJacobian_2(), ROL::Constraint_SimOpt< Real >::checkSolve(), ROL::Constraint_SimOpt< Real >::solve(), and ROL::Constraint_SimOpt< Real >::value().
|
inlinevirtual |
Given \(z\), solve \(c(u,z)=0\) for \(u\).
[out] | c | is the result of evaluating the constraint operator at \((u,z)\); a constraint-space vector |
[in,out] | u | is the solution vector; a simulation-space vector |
[in] | z | is the constraint argument; an optimization-space vector |
[in,out] | tol | is a tolerance for inexact evaluations; currently unused |
The defualt implementation is Newton's method globalized with a backtracking line search.
Reimplemented in Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, and Constraint_BurgersControl< Real >.
Definition at line 225 of file ROL_Constraint_SimOpt.hpp.
References ROL::Accept, ROL::Constraint_SimOpt< Real >::applyInverseJacobian_1(), ROL::Constraint_SimOpt< Real >::atol_, ROL::Vector< Real >::clone(), ROL::Constraint_SimOpt< Real >::decr_, ROL::Vector< Real >::dual(), ROL::Constraint_SimOpt< Real >::factor_, ROL::Constraint_SimOpt< Real >::firstSolve_, ROL::Initial, ROL::Constraint_SimOpt< Real >::jv_, ROL::details::makeStreamPtr(), ROL::Constraint_SimOpt< Real >::maxit_, ROL::Vector< Real >::norm(), ROL::Constraint_SimOpt< Real >::print_, ROL::Constraint_SimOpt< Real >::rtol_, ROL::Vector< Real >::set(), ROL::Constraint_SimOpt< Real >::solve_update(), ROL::Constraint_SimOpt< Real >::solverType_, ROL::Constraint_SimOpt< Real >::stol_, ROL::Trial, ROL::Constraint_SimOpt< Real >::unew_, ROL::Constraint_SimOpt< Real >::value(), ROL::Vector< Real >::zero(), and ROL::Constraint_SimOpt< Real >::zero_.
Referenced by ROL::Constraint_SimOpt< Real >::checkSolve(), and Constraint_BurgersControl< Real >::solve().
|
inlinevirtual |
Set solve parameters.
[in] | parlist | ParameterList containing solve parameters |
For the default implementation, parlist has two sublist ("SimOpt" and "Solve") and the "Solve" sublist has six input parameters.
These parameters are accessed as parlist.sublist("SimOpt").sublist("Solve").get(...).
Definition at line 337 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::atol_, ROL::Constraint_SimOpt< Real >::decr_, ROL::Constraint_SimOpt< Real >::DEFAULT_atol_, ROL::Constraint_SimOpt< Real >::DEFAULT_decr_, ROL::Constraint_SimOpt< Real >::DEFAULT_factor_, ROL::Constraint_SimOpt< Real >::DEFAULT_maxit_, ROL::Constraint_SimOpt< Real >::DEFAULT_print_, ROL::Constraint_SimOpt< Real >::DEFAULT_rtol_, ROL::Constraint_SimOpt< Real >::DEFAULT_solverType_, ROL::Constraint_SimOpt< Real >::DEFAULT_stol_, ROL::Constraint_SimOpt< Real >::DEFAULT_zero_, ROL::Constraint_SimOpt< Real >::factor_, ROL::Constraint_SimOpt< Real >::maxit_, ROL::Constraint_SimOpt< Real >::print_, ROL::Constraint_SimOpt< Real >::rtol_, ROL::Constraint_SimOpt< Real >::solverType_, ROL::Constraint_SimOpt< Real >::stol_, and ROL::Constraint_SimOpt< Real >::zero_.
Referenced by main().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, and valConstraint< Real >.
Definition at line 365 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::axpy(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Vector< Real >::scale(), ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Constraint_SimOpt< Real >::value().
Referenced by ROL::Constraint_SimOpt< Real >::applyJacobian(), ROL::Constraint_SimOpt< Real >::checkAdjointConsistencyJacobian_1(), ROL::Constraint_SimOpt< Real >::checkApplyJacobian_1(), and ROL::Constraint_SimOpt< Real >::checkInverseJacobian_1().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, Constraint_BurgersControl< Real >, and valConstraint< Real >.
Definition at line 408 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::axpy(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Vector< Real >::scale(), ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Constraint_SimOpt< Real >::value().
Referenced by ROL::Constraint_SimOpt< Real >::applyJacobian(), ROL::Constraint_SimOpt< Real >::checkAdjointConsistencyJacobian_2(), and ROL::Constraint_SimOpt< Real >::checkApplyJacobian_2().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, redConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, and Constraint_BurgersControl< Real >.
Definition at line 450 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::applyPreconditioner(), ROL::Constraint_SimOpt< Real >::checkInverseJacobian_1(), and ROL::Constraint_SimOpt< Real >::solve().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, and valConstraint< Real >.
Definition at line 474 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::dual().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian_11(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_21(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian(), ROL::Constraint_SimOpt< Real >::checkAdjointConsistencyJacobian_1(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_11(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_21(), and ROL::Constraint_SimOpt< Real >::checkInverseAdjointJacobian_1().
|
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}^*\).
Definition at line 500 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::axpy(), ROL::Vector< Real >::basis(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::dimension(), ROL::Vector< Real >::dual(), ROL::Vector< Real >::norm(), ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), ROL::Constraint_SimOpt< Real >::value(), and ROL::Vector< Real >::zero().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, and valConstraint< Real >.
Definition at line 545 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::dual().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian_12(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_22(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian(), ROL::Constraint_SimOpt< Real >::checkAdjointConsistencyJacobian_2(), ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_12(), and ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_22().
|
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}^*\).
Definition at line 571 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::axpy(), ROL::Vector< Real >::basis(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::dimension(), ROL::Vector< Real >::dual(), ROL::Vector< Real >::norm(), ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), ROL::Constraint_SimOpt< Real >::value(), and ROL::Vector< Real >::zero().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, and redConstraint< Real >.
Definition at line 615 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::applyPreconditioner(), and ROL::Constraint_SimOpt< Real >::checkInverseAdjointJacobian_1().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, and valConstraint< Real >.
Definition at line 641 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Vector< Real >::axpy(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Vector< Real >::scale(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian(), and ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_11().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, and valConstraint< Real >.
Definition at line 686 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Vector< Real >::axpy(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Vector< Real >::scale(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian(), and ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_12().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, and valConstraint< Real >.
Definition at line 731 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Vector< Real >::axpy(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Vector< Real >::scale(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian(), and ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_21().
|
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 Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, DiffusionConstraint< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, Constraint_BurgersControl< Real >, redConstraint< Real >, and valConstraint< Real >.
Definition at line 775 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Vector< Real >::axpy(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Vector< Real >::scale(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
Referenced by ROL::Constraint_SimOpt< Real >::applyAdjointHessian(), and ROL::Constraint_SimOpt< Real >::checkApplyAdjointHessian_22().
|
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.
[out] | v1 | is the optimization-space component of the result |
[out] | v2 | is the dual constraint-space component of the result |
[in] | b1 | is the dual optimization-space component of the right-hand side |
[in] | b2 | is the constraint-space component of the right-hand side |
[in] | x | is the constraint argument; an optimization-space vector |
[in,out] | tol | is 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 840 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint< Real >::solveAugmentedSystem().
|
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 868 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyInverseAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::applyInverseJacobian_1(), ROL::Constraint< Real >::applyPreconditioner(), ROL::Vector_SimOpt< Real >::dual(), ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), and ROL::Vector< Real >::set().
|
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 903 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), and ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Update constraint function.
This function updates the constraint function at new iterations.
[in] | x | is the new iterate. |
[in] | type | is the type of update requested. |
[in] | iter | is the outer algorithm iterations count. |
Reimplemented from ROL::Constraint< Real >.
Definition at line 908 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), and ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\).
[out] | c | is the result of evaluating the constraint operator at x; a constraint-space vector |
[in] | x | is the constraint argument; an optimization-space vector |
[in,out] | tol | is 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 914 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), and ROL::Constraint_SimOpt< Real >::value().
|
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 923 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyJacobian_1(), ROL::Constraint_SimOpt< Real >::applyJacobian_2(), ROL::Vector< Real >::clone(), ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), and ROL::Vector< Real >::plus().
|
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 939 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), ROL::Vector_SimOpt< Real >::set_1(), and ROL::Vector_SimOpt< Real >::set_2().
|
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 956 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointHessian_11(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_12(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_21(), ROL::Constraint_SimOpt< Real >::applyAdjointHessian_22(), ROL::Vector_SimOpt< Real >::get_1(), ROL::Vector_SimOpt< Real >::get_2(), ROL::Vector_SimOpt< Real >::set_1(), and ROL::Vector_SimOpt< Real >::set_2().
|
inlinevirtual |
Definition at line 985 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::clone(), ROL::Constraint_SimOpt< Real >::solve(), ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Constraint_SimOpt< Real >::value().
Referenced by main().
|
inlinevirtual |
Check the consistency of the Jacobian and its adjoint. This is the primary interface.
[out] | w | is a dual constraint-space vector |
[in] | v | is a simulation-space vector |
[in] | u | is the constraint argument; a simulation-space vector |
[in] | z | is the constraint argument; an optimization-space vector |
[in] | printToStream | is is a flag that turns on/off output |
[in] | outStream | is the output stream |
Definition at line 1026 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::dual().
Referenced by main().
|
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.
[out] | w | is a dual constraint-space vector |
[in] | v | is a simulation-space vector |
[in] | u | is the constraint argument; a simulation-space vector |
[in] | z | is the constraint argument; an optimization-space vector |
[in] | dualw | is a constraint-space vector |
[in] | dualv | is a dual simulation-space vector |
[in] | printToStream | is is a flag that turns on/off output |
[in] | outStream | is the output stream |
Definition at line 1051 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::apply(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::applyJacobian_1(), ROL::Vector< Real >::clone(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Check the consistency of the Jacobian and its adjoint. This is the primary interface.
[out] | w | is a dual constraint-space vector |
[in] | v | is an optimization-space vector |
[in] | u | is the constraint argument; a simulation-space vector |
[in] | z | is the constraint argument; an optimization-space vector |
[in] | printToStream | is is a flag that turns on/off output |
[in] | outStream | is the output stream |
Definition at line 1096 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::dual().
Referenced by main().
|
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.
[out] | w | is a dual constraint-space vector |
[in] | v | is an optimization-space vector |
[in] | u | is the constraint argument; a simulation-space vector |
[in] | z | is the constraint argument; an optimization-space vector |
[in] | dualw | is a constraint-space vector |
[in] | dualv | is a dual optimization-space vector |
[in] | printToStream | is is a flag that turns on/off output |
[in] | outStream | is the output stream |
Definition at line 1120 of file ROL_Constraint_SimOpt.hpp.
References ROL::Vector< Real >::apply(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Constraint_SimOpt< Real >::applyJacobian_2(), ROL::Vector< Real >::clone(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
|
inlinevirtual |
Definition at line 1152 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyInverseJacobian_1(), ROL::Constraint_SimOpt< Real >::applyJacobian_1(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
Referenced by main().
|
inlinevirtual |
Definition at line 1182 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Constraint_SimOpt< Real >::applyInverseAdjointJacobian_1(), ROL::Vector< Real >::clone(), ROL::Vector< Real >::norm(), ROL::Temp, and ROL::Constraint_SimOpt< Real >::update().
Referenced by main().
|
inline |
Definition at line 1214 of file ROL_Constraint_SimOpt.hpp.
|
inline |
Definition at line 1233 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyJacobian_1(), ROL::Vector< Real >::clone(), ROL::Finite_Difference_Arrays::shifts, ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), ROL::Constraint_SimOpt< Real >::value(), and ROL::Finite_Difference_Arrays::weights.
|
inline |
Definition at line 1339 of file ROL_Constraint_SimOpt.hpp.
|
inline |
Definition at line 1358 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyJacobian_2(), ROL::Vector< Real >::clone(), ROL::Finite_Difference_Arrays::shifts, ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), ROL::Constraint_SimOpt< Real >::value(), and ROL::Finite_Difference_Arrays::weights.
|
inline |
Definition at line 1465 of file ROL_Constraint_SimOpt.hpp.
|
inline |
Definition at line 1483 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointHessian_11(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Vector< Real >::clone(), ROL::Finite_Difference_Arrays::shifts, ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Finite_Difference_Arrays::weights.
|
inline |
\( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \)
Definition at line 1588 of file ROL_Constraint_SimOpt.hpp.
|
inline |
\( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \)
Definition at line 1609 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointHessian_21(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_1(), ROL::Vector< Real >::clone(), ROL::Finite_Difference_Arrays::shifts, ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Finite_Difference_Arrays::weights.
|
inline |
\( u\in U \), \( z\in Z \), \( p\in C^\ast \), \( v \in U \), \( hv \in U^\ast \)
Definition at line 1714 of file ROL_Constraint_SimOpt.hpp.
|
inline |
Definition at line 1733 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointHessian_12(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Vector< Real >::clone(), ROL::Finite_Difference_Arrays::shifts, ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Finite_Difference_Arrays::weights.
|
inline |
Definition at line 1835 of file ROL_Constraint_SimOpt.hpp.
|
inline |
Definition at line 1853 of file ROL_Constraint_SimOpt.hpp.
References ROL::Constraint_SimOpt< Real >::applyAdjointHessian_22(), ROL::Constraint_SimOpt< Real >::applyAdjointJacobian_2(), ROL::Vector< Real >::clone(), ROL::Finite_Difference_Arrays::shifts, ROL::Temp, ROL::Constraint_SimOpt< Real >::update(), and ROL::Finite_Difference_Arrays::weights.
|
private |
Definition at line 111 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::solve().
|
private |
Definition at line 112 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::solve().
|
private |
Definition at line 115 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 116 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 117 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 118 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 119 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 120 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 121 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 122 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
private |
Definition at line 123 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters().
|
protected |
Definition at line 128 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 129 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 130 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 131 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 132 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 133 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 134 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 135 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 136 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::setSolveParameters(), and ROL::Constraint_SimOpt< Real >::solve().
|
protected |
Definition at line 139 of file ROL_Constraint_SimOpt.hpp.
Referenced by ROL::Constraint_SimOpt< Real >::solve().