ROL
ROL::Constraint_TimeSimOpt< Real > Class Template Referenceabstract

Defines the time dependent constraint operator interface for simulation-based optimization. More...

#include <ROL_Constraint_TimeSimOpt.hpp>

Inheritance diagram for ROL::Constraint_TimeSimOpt< Real >:

Public Member Functions

 Constraint_TimeSimOpt ()
virtual void update (const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, bool flag=true, int iter=-1)
 Update constraint functions.
u_old Is the state from the end of the previous time step. u_new Is the state from the end of this time step. z Is the control variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.
virtual void update_1_old (const Vector< Real > &u_old, bool flag=true, int iter=-1)
 Update constraint functions with respect to Sim variable.
u_old is the state variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.
virtual void update_1_new (const Vector< Real > &u_new, bool flag=true, int iter=-1)
 Update constraint functions with respect to Sim variable.
u_new is the state variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.
virtual void update_2 (const Vector< Real > &z, bool flag=true, int iter=-1) override
 Update constraint functions with respect to Opt variable. z is the control variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count.
virtual void value (Vector< Real > &c, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
 Evaluate the constraint operator \(c:\mathcal{U_o}\times\mathcal{U_n}\times\mathcal{Z} \rightarrow \mathcal{C}\) at \((u,z)\).
virtual void solve (Vector< Real > &c, const Vector< Real > &u_old, Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyJacobian_1_old (Vector< Real > &jv, const Vector< Real > &v_old, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyJacobian_1_new (Vector< Real > &jv, const Vector< Real > &v_new, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyInverseJacobian_1_new (Vector< Real > &ijv, const Vector< Real > &v_new, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyJacobian_2 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyAdjointJacobian_1_old (Vector< Real > &ajv_old, const Vector< Real > &dualv, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyAdjointJacobian_1_new (Vector< Real > &ajv_new, const Vector< Real > &dualv, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyInverseAdjointJacobian_1_new (Vector< Real > &iajv, const Vector< Real > &v_new, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyAdjointJacobian_2_time (Vector< Real > &ajv, const Vector< Real > &dualv, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyAdjointHessian_11_old (Vector< Real > &ahwv_old, const Vector< Real > &w, const Vector< Real > &v_new, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void applyAdjointHessian_11_new (Vector< Real > &ahwv_new, const Vector< Real > &w, const Vector< Real > &v_new, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)=0
virtual void update (const Vector< Real > &u, const Vector< Real > &z, bool flag=true, int iter=-1) override
virtual void value (Vector< Real > &c, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
virtual void solve (Vector< Real > &c, Vector< Real > &u, const Vector< Real > &z, Real &tol) override
virtual void applyJacobian_1 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
virtual void applyJacobian_2 (Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
virtual void applyInverseJacobian_1 (Vector< Real > &ijv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override final
virtual void applyAdjointJacobian_1 (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
virtual void applyAdjointJacobian_2 (Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
virtual void applyInverseAdjointJacobian_1 (Vector< Real > &iajv, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override final
virtual void applyAdjointHessian_11 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the simulation-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{uu}(u,z)(v,\cdot)^*w\).
virtual void applyAdjointHessian_12 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the optimization-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{uz}(u,z)(v,\cdot)^*w\).
virtual void applyAdjointHessian_21 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the simulation-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{zu}(u,z)(v,\cdot)^*w\).
virtual void applyAdjointHessian_22 (Vector< Real > &ahwv, const Vector< Real > &w, const Vector< Real > &v, const Vector< Real > &u, const Vector< Real > &z, Real &tol) override
 Apply the optimization-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in the direction \(v\), according to \(v\mapsto c_{zz}(u,z)(v,\cdot)^*w\).
virtual Real checkSolve (const ROL::Vector< Real > &u, const ROL::Vector< Real > &z, const ROL::Vector< Real > &c, const bool printToStream=true, std::ostream &outStream=std::cout) override
virtual Real checkInverseJacobian_1_new (const ROL::Vector< Real > &c, const ROL::Vector< Real > &u_new, const ROL::Vector< Real > &u_old, const ROL::Vector< Real > &z, const ROL::Vector< Real > &v_new, const bool printToStream=true, std::ostream &outStream=std::cout)
virtual Real checkInverseAdjointJacobian_1_new (const ROL::Vector< Real > &c, const ROL::Vector< Real > &u_new, const ROL::Vector< Real > &u_old, const ROL::Vector< Real > &z, const ROL::Vector< Real > &v_new, const bool printToStream=true, std::ostream &outStream=std::cout)
std::vector< std::vector< Real > > checkApplyJacobian_1_new (const Vector< Real > &u_new, const Vector< Real > &u_old, 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_new (const Vector< Real > &u_new, const Vector< Real > &u_old, 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)
Public Member Functions inherited from ROL::ROL::Constraint_SimOpt< Real >
 Constraint_SimOpt ()
virtual void update (const Vector< Real > &u, const Vector< Real > &z, bool flag=true, int iter=-1)
 Update constraint functions.
x is the optimization variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count.
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.
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.
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).
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)\).
virtual void solve (Vector< Real > &c, Vector< Real > &u, const Vector< Real > &z, Real &tol)
 Given \(z\), solve \(c(u,z)=0\) for \(u\).
virtual void setSolveParameters (ParameterList &parlist)
 Set solve parameters.
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\).
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\).
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\).
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.
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.
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.
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.
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\).
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\).
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\).
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\).
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\).
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 .
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:
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.
virtual void update (const Vector< Real > &x, UpdateType type, int iter=-1)
 Update constraint function.
virtual void value (Vector< Real > &c, const Vector< Real > &x, Real &tol)
 Evaluate the constraint operator \(c:\mathcal{X} \rightarrow \mathcal{C}\) at \(x\).
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\).
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\).
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 \).
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.
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.
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.
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.
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 \)
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 \)
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 \)
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::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\).
void activate (void)
 Turn on constraints.
void deactivate (void)
 Turn off constraints.
bool isActivated (void)
 Check if constraints are on.
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.
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.
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.
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.
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.
virtual void setParameter (const std::vector< Real > &param)

Protected Member Functions

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

Private Member Functions

Vector< Real > & getNewVector (Vector< Real > &x) const
const Vector< Real > & getNewVector (const Vector< Real > &x) const
Vector< Real > & getOldVector (Vector< Real > &x) const
const Vector< Real > & getOldVector (const Vector< Real > &x) const

Private Attributes

VectorWorkspace< Real > workspace_

Additional Inherited Members

Protected Attributes inherited from ROL::ROL::Constraint_SimOpt< Real >
Real atol_
Real rtol_
Real stol_
Real factor_
Real decr_
int maxit_
bool print_
bool zero_
int solverType_
bool firstSolve_

Detailed Description

template<class Real>
class ROL::Constraint_TimeSimOpt< Real >

Defines the time dependent constraint operator interface for simulation-based optimization.

This constraint interface inherits from ROL_Constraint_SimOpt. Though the interface takes two simulation space vectors from spaces \(\mathcal{U_o}\times\mathcal{U_n}\). The space \(\mathcal{U_o}\) is old'' information that accounts for the initial condition on the time interval. The space \f$\mathcal{U_n}\f$ is the new'' variables that can be determined by satisfying constraints in the form

\[ c(u_o,u_n,z) = 0 \,. \]

where \(u_0 \in \mathcal{U_o},\; u_n\in\mathcal{U_n},\) and \(z\in\mathcal{Z}\). In this way this constraint defines a sequence of state variables. The basic operator interface, to be implemented by the user, requires:

  • value – constraint evaluation.
  • applyJacobian_1_old – action of the partial constraint Jacobian –derivatives are with respect to the first component \(\mathcal{U_o}\);
  • applyJacobian_1_new – action of the partial constraint Jacobian –derivatives are with respect to the first component \(\mathcal{U_n}\);
  • applyJacobian_2 – action of the partial constraint Jacobian –derivatives are with respect to the second component \(\mathcal{Z}\);
  • applyAdjointJacobian_1_old – action of the adjoint of the partial constraint Jacobian –derivatives are with respect to the first component \(\mathcal{U_o}\);
  • applyAdjointJacobian_1_new – action of the adjoint of the partial constraint Jacobian –derivatives are with respect to the first component \(\mathcal{U_n}\);
  • applyAdjointJacobian_2_time – action of the adjoint of the partial constraint Jacobian –derivatives are with respect to the second component \(\mathcal{Z}\); (note the time suffix here is to prevent collisions with the parent class)

The user may also overload:

  • applyAdjointHessian_11 – action of the adjoint of the partial constraint Hessian –derivatives are with respect to the first component only;
  • applyAdjointHessian_12 – action of the adjoint of the partial constraint Hessian –derivatives are with respect to the first and second components;
  • applyAdjointHessian_21 – action of the adjoint of the partial constraint Hessian –derivatives are with respect to the second and first components;
  • applyAdjointHessian_22 – action of the adjoint of the partial constraint Hessian –derivatives are with respect to the second component only;
  • solveAugmentedSystem – solution of the augmented system –the default is an iterative scheme based on the action of the Jacobian and its adjoint.
  • applyPreconditioner – action of a constraint preconditioner –the default is null-op.

Definition at line 66 of file ROL_Constraint_TimeSimOpt.hpp.

Constructor & Destructor Documentation

◆ Constraint_TimeSimOpt()

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

Member Function Documentation

◆ getNewVector() [1/2]

template<class Real>
Vector< Real > & ROL::Constraint_TimeSimOpt< Real >::getNewVector ( Vector< Real > & x) const
inlineprivate

◆ getNewVector() [2/2]

template<class Real>
const Vector< Real > & ROL::Constraint_TimeSimOpt< Real >::getNewVector ( const Vector< Real > & x) const
inlineprivate

◆ getOldVector() [1/2]

template<class Real>
Vector< Real > & ROL::Constraint_TimeSimOpt< Real >::getOldVector ( Vector< Real > & x) const
inlineprivate

◆ getOldVector() [2/2]

template<class Real>
const Vector< Real > & ROL::Constraint_TimeSimOpt< Real >::getOldVector ( const Vector< Real > & x) const
inlineprivate

◆ getVectorWorkspace()

template<class Real>
VectorWorkspace< Real > & ROL::Constraint_TimeSimOpt< Real >::getVectorWorkspace ( ) const
inlineprotected

Definition at line 99 of file ROL_Constraint_TimeSimOpt.hpp.

References workspace_.

◆ update() [1/2]

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

Update constraint functions.
u_old Is the state from the end of the previous time step. u_new Is the state from the end of this time step. z Is the control variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.

Definition at line 115 of file ROL_Constraint_TimeSimOpt.hpp.

References update_1_new(), update_1_old(), and update_2().

Referenced by checkApplyJacobian_1_new(), checkInverseAdjointJacobian_1_new(), checkInverseJacobian_1_new(), checkSolve(), and update().

◆ update_1_old()

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

Update constraint functions with respect to Sim variable.
u_old is the state variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.

Definition at line 129 of file ROL_Constraint_TimeSimOpt.hpp.

Referenced by update().

◆ update_1_new()

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

Update constraint functions with respect to Sim variable.
u_new is the state variable flag = true if optimization variable is changed, iter is the outer algorithm iterations count.

Definition at line 136 of file ROL_Constraint_TimeSimOpt.hpp.

Referenced by update().

◆ update_2()

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

Update constraint functions with respect to Opt variable. z is the control variable, flag = true if optimization variable is changed, iter is the outer algorithm iterations count.

Definition at line 143 of file ROL_Constraint_TimeSimOpt.hpp.

Referenced by update().

◆ value() [1/2]

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

Evaluate the constraint operator \(c:\mathcal{U_o}\times\mathcal{U_n}\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]u_oldis the constraint argument; a simulation-space vector from the previous interval
[in]u_newis the constraint argument; a simulation-space vector from the current interval
[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_o} \in \mathcal{U_o}\), \(\mathsf{u_n} \in \mathcal{U_n}\), and $ \(\mathsf{z} \in\mathcal{Z}\).


Referenced by checkApplyJacobian_1_new(), checkSolve(), and value().

◆ solve() [1/2]

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::solve ( Vector< Real > & c,
const Vector< Real > & u_old,
Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by checkSolve(), and solve().

◆ applyJacobian_1_old()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyJacobian_1_old ( Vector< Real > & jv,
const Vector< Real > & v_old,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by applyJacobian_1().

◆ applyJacobian_1_new()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyJacobian_1_new ( Vector< Real > & jv,
const Vector< Real > & v_new,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

◆ applyInverseJacobian_1_new()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyInverseJacobian_1_new ( Vector< Real > & ijv,
const Vector< Real > & v_new,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

◆ applyJacobian_2() [1/2]

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyJacobian_2 ( Vector< Real > & jv,
const Vector< Real > & v,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by applyJacobian_2().

◆ applyAdjointJacobian_1_old()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyAdjointJacobian_1_old ( Vector< Real > & ajv_old,
const Vector< Real > & dualv,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by applyAdjointJacobian_1().

◆ applyAdjointJacobian_1_new()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyAdjointJacobian_1_new ( Vector< Real > & ajv_new,
const Vector< Real > & dualv,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

◆ applyInverseAdjointJacobian_1_new()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyInverseAdjointJacobian_1_new ( Vector< Real > & iajv,
const Vector< Real > & v_new,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

◆ applyAdjointJacobian_2_time()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyAdjointJacobian_2_time ( Vector< Real > & ajv,
const Vector< Real > & dualv,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by applyAdjointJacobian_2().

◆ applyAdjointHessian_11_old()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyAdjointHessian_11_old ( Vector< Real > & ahwv_old,
const Vector< Real > & w,
const Vector< Real > & v_new,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by applyAdjointHessian_11().

◆ applyAdjointHessian_11_new()

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::applyAdjointHessian_11_new ( Vector< Real > & ahwv_new,
const Vector< Real > & w,
const Vector< Real > & v_new,
const Vector< Real > & u_old,
const Vector< Real > & u_new,
const Vector< Real > & z,
Real & tol )
pure virtual

Referenced by applyAdjointHessian_11().

◆ update() [2/2]

template<class Real>
virtual void ROL::Constraint_TimeSimOpt< Real >::update ( const Vector< Real > & u,
const Vector< Real > & z,
bool flag = true,
int iter = -1 )
inlineoverridevirtual

Definition at line 239 of file ROL_Constraint_TimeSimOpt.hpp.

References getNewVector(), getOldVector(), and update().

◆ value() [2/2]

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

Definition at line 248 of file ROL_Constraint_TimeSimOpt.hpp.

References getNewVector(), getOldVector(), and value().

◆ solve() [2/2]

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

Definition at line 260 of file ROL_Constraint_TimeSimOpt.hpp.

References getNewVector(), getOldVector(), and solve().

◆ applyJacobian_1()

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

◆ applyJacobian_2() [2/2]

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

Definition at line 298 of file ROL_Constraint_TimeSimOpt.hpp.

References applyJacobian_2(), getNewVector(), and getOldVector().

◆ applyInverseJacobian_1()

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

Definition at line 313 of file ROL_Constraint_TimeSimOpt.hpp.

◆ applyAdjointJacobian_1()

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

◆ applyAdjointJacobian_2()

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

◆ applyInverseAdjointJacobian_1()

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

Definition at line 347 of file ROL_Constraint_TimeSimOpt.hpp.

◆ applyAdjointHessian_11()

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

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

Parameters
[out]ahwvis the result of applying the simulation-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in direction \(w\); a dual simulation-space vector
[in]wis the direction vector; 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,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{ahwv} = c_{uu}(u,z)(v,\cdot)^*w\), where \(w \in \mathcal{C}^*\), \(v \in \mathcal{U}\), and \(\mathsf{ahwv} \in \mathcal{U}^*\).


Definition at line 373 of file ROL_Constraint_TimeSimOpt.hpp.

References applyAdjointHessian_11_new(), applyAdjointHessian_11_old(), getNewVector(), and getOldVector().

◆ applyAdjointHessian_12()

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

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

Parameters
[out]ahwvis the result of applying the optimization-space derivative of the adjoint of the constraint simulation-space Jacobian at \((u,z)\) to the vector \(w\) in direction \(w\); a dual optimization-space vector
[in]wis the direction vector; 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,out]tolis a tolerance for inexact evaluations; currently unused

On return, \(\mathsf{ahwv} = c_{uz}(u,z)(v,\cdot)^*w\), where \(w \in \mathcal{C}^*\), \(v \in \mathcal{U}\), and \(\mathsf{ahwv} \in \mathcal{Z}^*\).


Definition at line 411 of file ROL_Constraint_TimeSimOpt.hpp.

References ROL::Vector< Real >::zero().

◆ applyAdjointHessian_21()

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

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

Parameters
[out]ahwvis the result of applying the simulation-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in direction \(w\); a dual simulation-space vector
[in]wis the direction vector; a dual constraint-space vector
[in]vis a optimization-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{ahwv} = c_{zu}(u,z)(v,\cdot)^*w\), where \(w \in \mathcal{C}^*\), \(v \in \mathcal{Z}\), and \(\mathsf{ahwv} \in \mathcal{U}^*\).


Definition at line 438 of file ROL_Constraint_TimeSimOpt.hpp.

References ROL::Vector< Real >::zero().

◆ applyAdjointHessian_22()

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

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

Parameters
[out]ahwvis the result of applying the optimization-space derivative of the adjoint of the constraint optimization-space Jacobian at \((u,z)\) to the vector \(w\) in direction \(w\); a dual optimization-space vector
[in]wis the direction vector; a dual constraint-space vector
[in]vis a optimization-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{ahwv} = c_{zz}(u,z)(v,\cdot)^*w\), where \(w \in \mathcal{C}^*\), \(v \in \mathcal{Z}\), and \(\mathsf{ahwv} \in \mathcal{Z}^*\).


Definition at line 464 of file ROL_Constraint_TimeSimOpt.hpp.

References ROL::Vector< Real >::zero().

◆ checkSolve()

template<class Real>
virtual Real ROL::Constraint_TimeSimOpt< Real >::checkSolve ( const ROL::Vector< Real > & u,
const ROL::Vector< Real > & z,
const ROL::Vector< Real > & c,
const bool printToStream = true,
std::ostream & outStream = std::cout )
inlineoverridevirtual

◆ checkInverseJacobian_1_new()

template<class Real>
virtual Real ROL::Constraint_TimeSimOpt< Real >::checkInverseJacobian_1_new ( const ROL::Vector< Real > & c,
const ROL::Vector< Real > & u_new,
const ROL::Vector< Real > & u_old,
const ROL::Vector< Real > & z,
const ROL::Vector< Real > & v_new,
const bool printToStream = true,
std::ostream & outStream = std::cout )
inlinevirtual

◆ checkInverseAdjointJacobian_1_new()

template<class Real>
virtual Real ROL::Constraint_TimeSimOpt< Real >::checkInverseAdjointJacobian_1_new ( const ROL::Vector< Real > & c,
const ROL::Vector< Real > & u_new,
const ROL::Vector< Real > & u_old,
const ROL::Vector< Real > & z,
const ROL::Vector< Real > & v_new,
const bool printToStream = true,
std::ostream & outStream = std::cout )
inlinevirtual

◆ checkApplyJacobian_1_new() [1/2]

template<class Real>
std::vector< std::vector< Real > > ROL::Constraint_TimeSimOpt< Real >::checkApplyJacobian_1_new ( const Vector< Real > & u_new,
const Vector< Real > & u_old,
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

◆ checkApplyJacobian_1_new() [2/2]

template<class Real>
std::vector< std::vector< Real > > ROL::Constraint_TimeSimOpt< Real >::checkApplyJacobian_1_new ( const Vector< Real > & u_new,
const Vector< Real > & u_old,
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

Member Data Documentation

◆ workspace_


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