1 #ifndef __ROLOBJECTIVESIMOPT_H__ 2 #define __ROLOBJECTIVESIMOPT_H__ 4 #include "ROL_Objective_SimOpt.hpp" 6 #include "mesh/free_form_deformation.h" 8 #include "functional/functional.h" 10 #include "design_parameterization/base_parameterization.hpp" 14 using ROL_Vector = ROL::Vector<double>;
22 template <
int dim,
int nspecies,
int nstate>
32 dealii::LinearAlgebra::distributed::Vector<double>
design_var;
37 dealii::TrilinosWrappers::SparseMatrix
dXvdXp;
43 std::shared_ptr<dealii::TrilinosWrappers::SparseMatrix> precomputed_dXvdXp =
nullptr);
45 using ROL::Objective_SimOpt<double>::value;
46 using ROL::Objective_SimOpt<double>::update;
50 const ROL::Vector<double> &des_var_sim,
51 const ROL::Vector<double> &des_var_ctl,
53 int iter = -1)
override;
57 const ROL::Vector<double> &des_var_sim,
58 const ROL::Vector<double> &des_var_ctl,
63 ROL::Vector<double> &g,
64 const ROL::Vector<double> &des_var_sim,
65 const ROL::Vector<double> &des_var_ctl,
70 ROL::Vector<double> &g,
71 const ROL::Vector<double> &des_var_sim,
72 const ROL::Vector<double> &des_var_ctl,
82 ROL::Vector<double> &output_vector,
83 const ROL::Vector<double> &input_vector,
84 const ROL::Vector<double> &des_var_sim,
85 const ROL::Vector<double> &des_var_ctl,
95 ROL::Vector<double> &output_vector,
96 const ROL::Vector<double> &input_vector,
97 const ROL::Vector<double> &des_var_sim,
98 const ROL::Vector<double> &des_var_ctl,
108 ROL::Vector<double> &output_vector,
109 const ROL::Vector<double> &input_vector,
110 const ROL::Vector<double> &des_var_sim,
111 const ROL::Vector<double> &des_var_ctl,
121 ROL::Vector<double> &output_vector,
122 const ROL::Vector<double> &input_vector,
123 const ROL::Vector<double> &des_var_sim,
124 const ROL::Vector<double> &des_var_ctl,
dealii::LinearAlgebra::distributed::Vector< double > design_var
Design variables.
Interface between the ROL::Objective_SimOpt PHiLiP::Functional.
dealii::TrilinosWrappers::SparseMatrix dXvdXp
Stored mesh sensitivity evaluated at initialization.
Files for the baseline physics.
Functional< dim, nspecies, nstate, double > & functional
Functional to be evaluated.
void hessVec_21(ROL::Vector< double > &output_vector, const ROL::Vector< double > &input_vector, const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Applies the functional Hessian w. r. t. the control and simulation variables onto a vector...
void hessVec_22(ROL::Vector< double > &output_vector, const ROL::Vector< double > &input_vector, const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Applies the functional Hessian w. r. t. the control variables onto a vector.
Abstract class for design parameterization. Objective function and the constraints take this class's ...
void gradient_2(ROL::Vector< double > &g, const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Returns the gradient w. r. t. the control variables of the Functional object.
double value(const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Returns the value of the Functional object.
std::shared_ptr< BaseParameterization< dim > > design_parameterization
Design parameterization to link design variables with volume nodes.
ROLObjectiveSimOpt(Functional< dim, nspecies, nstate, double > &_functional, std::shared_ptr< BaseParameterization< dim >> _design_parameterization, std::shared_ptr< dealii::TrilinosWrappers::SparseMatrix > precomputed_dXvdXp=nullptr)
Constructor.
void hessVec_12(ROL::Vector< double > &output_vector, const ROL::Vector< double > &input_vector, const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Applies the functional Hessian w. r. t. the simulation and control variables onto a vector...
void update(const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, bool flag=true, int iter=-1) override
Update the simulation and control variables.
void hessVec_11(ROL::Vector< double > &output_vector, const ROL::Vector< double > &input_vector, const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Applies the functional Hessian w. r. t. the simulation variables onto a vector.
void gradient_1(ROL::Vector< double > &g, const ROL::Vector< double > &des_var_sim, const ROL::Vector< double > &des_var_ctl, double &) override
Returns the gradient w. r. t. the simulation variables of the Functional object.