6#include <inflator/Inflator.hpp>
15 std::vector<std::shared_ptr<varform::DifferentiableVarForm>> varforms,
16 std::vector<std::shared_ptr<DiffCache>> diff_caches,
19 std::string
name()
const override {
return "inflated-periodic-shape"; }
22 void update(
const Eigen::VectorXd &variables)
override;
23 void update_state_variables(
const Eigen::VectorXd &variables, Eigen::VectorXd &state_variables)
const override;
30 std::vector<std::shared_ptr<varform::DifferentiableVarForm>>
varforms_;
Read-only interface to a hierarchical collection of simulation resources.
Regenerate periodic meshes from [cell width, inflator parameters] and map shape derivatives back to d...
ParameterType parameter_type() const override
std::string name() const override
int inverse_dof() const override
Compute optimization variables dof.
std::string work_directory_
CompositeParametrization parametrization_
Eigen::VectorXd last_parameters_
Eigen::MatrixXd shape_jacobian_
Rows are design parameters; columns are interleaved physical vertex coordinates.
Eigen::VectorXd inverse_eval() const override
Compute optimization variables from forward simulation varform::DifferentiableVarForm.
Eigen::MatrixXd periodic_jacobian_
Rows are design parameters; columns are periodic coordinates followed by the cell matrix.
void update(const Eigen::VectorXd &variables) override
Update forward simulation varforms from optimization variables.
Eigen::VectorXd periodic_parameters_
Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &variables) const override
Apply parametrization jacobian to compute the gradient w.r.t.
std::vector< std::shared_ptr< varform::DifferentiableVarForm > > varforms_
inflator::Options options_
void update_state_variables(const Eigen::VectorXd &variables, Eigen::VectorXd &state_variables) const override
Update varform variables from optimization variables.
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &variables) const override
Compute adjoint contribution of objective gradient.
std::unique_ptr< PeriodicMeshToMesh > periodic_map_
std::vector< std::shared_ptr< DiffCache > > diff_caches_
bool affects_varform(const varform::DifferentiableVarForm &target) const override
Return true if current var2sim maps to target varform.
std::filesystem::path wire_
Maps optimization variables to forward simulation varform::DifferentiableVarForm variables.