25 std::vector<std::shared_ptr<DiffCache>>
diff_caches,
30 assert(this->
states.size() > 0);
35 inline virtual void update(
const Eigen::VectorXd &
x)
40 virtual std::string
name()
const = 0;
51 const std::vector<std::shared_ptr<State>>
states;
56 virtual void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices);
69 inline void update(
const Eigen::VectorXd &
x)
71 for (
auto &v2s :
data)
93 std::vector<std::shared_ptr<VariableToSimulation>>
data;
103 std::string
name()
const override {
return "shape"; }
113 virtual void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
124 std::string
name()
const override {
return "elastic"; }
132 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
143 std::string
name()
const override {
return "friction"; }
151 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
162 std::string
name()
const override {
return "damping"; }
170 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
181 std::string
name()
const override {
return "initial"; }
189 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
200 std::string
name()
const override {
return "dirichlet"; }
215 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
229 std::string
name()
const override {
return "dirichlet-nodes"; }
244 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
261 std::string
name()
const override {
return "pressure"; }
276 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
291 std::string
name()
const override {
return "periodic-shape"; }
298 void update(
const Eigen::VectorXd &
x)
override;
main class that contains the polyfem solver and all its state
Eigen::VectorXd eval(const Eigen::VectorXd &x) const override
Eval y = f(x).
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
Eigen::VectorXd inverse_eval() override
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
virtual ~DampingCoeffientVariableToSimulation()
std::string name() const override
ParameterType get_parameter_type() const override
Eigen::VectorXd inverse_eval() override
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
virtual ~DirichletNodesVariableToSimulation()
std::string name() const override
Eigen::VectorXi dirichlet_nodes_
void set_dirichlet_nodes(const Eigen::VectorXi &dirichlet_nodes)
ParameterType get_parameter_type() const override
std::string variable_to_string(const Eigen::VectorXd &variable)
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
void set_output_indexing(const json &args) override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
std::string variable_to_string(const Eigen::VectorXd &variable)
std::vector< int > dirichlet_boundaries_
std::string name() const override
virtual ~DirichletVariableToSimulation()
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
Eigen::VectorXd inverse_eval() override
void set_dirichlet_boundaries(const std::vector< int > &dirichlet_boundaries)
void set_output_indexing(const json &args) override
ParameterType get_parameter_type() const override
std::string name() const override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
ParameterType get_parameter_type() const override
virtual ~ElasticVariableToSimulation()
Eigen::VectorXd inverse_eval() override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
std::string name() const override
ParameterType get_parameter_type() const override
virtual ~FrictionCoeffientVariableToSimulation()
Eigen::VectorXd inverse_eval() override
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
Eigen::VectorXd inverse_eval() override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
ParameterType get_parameter_type() const override
virtual ~InitialConditionVariableToSimulation()
std::string name() const override
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
void update(const Eigen::VectorXd &x) override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const override
virtual ~PeriodicShapeVariableToSimulation()
Eigen::VectorXd periodic_mesh_representation
Eigen::VectorXd inverse_eval() override
ParameterType get_parameter_type() const override
std::unique_ptr< PeriodicMeshToMesh > periodic_mesh_map
std::string name() const override
std::vector< int > pressure_boundaries_
virtual ~PressureVariableToSimulation()
void set_pressure_boundaries(const std::vector< int > &pressure_boundaries)
ParameterType get_parameter_type() const override
Eigen::VectorXd inverse_eval() override
std::string variable_to_string(const Eigen::VectorXd &variable)
std::string name() const override
void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
void set_output_indexing(const json &args) override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
virtual void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices) override
void set_output_indexing(const json &args) override
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
Eigen::VectorXd inverse_eval() override
ParameterType get_parameter_type() const override
virtual ~ShapeVariableToSimulation()
std::string name() const override
A collection of VariableToSimulation.
void compute_state_variable(const ParameterType type, const State *state_ptr, const Eigen::VectorXd &x, Eigen::VectorXd &state_variable) const
Evaluate the variable to simulations and overwrite the state_variable based on x.
virtual ~VariableToSimulationGroup()=default
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const
Computes the sum of adjoint terms for all VariableToSimulation.
virtual Eigen::VectorXd apply_parametrization_jacobian(const ParameterType type, const State *state_ptr, const Eigen::VectorXd &x, const std::function< Eigen::VectorXd()> &grad) const
Maps the partial gradient wrt.
void update(const Eigen::VectorXd &x)
Update parameters in simulators.
std::vector< std::shared_ptr< VariableToSimulation > > data
Maps the optimization variable to the state variable.
virtual Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const
const std::vector< std::shared_ptr< DiffCache > > diff_caches
CompositeParametrization parametrization
virtual ParameterType get_parameter_type() const =0
VariableToSimulation(std::vector< std::shared_ptr< State > > states, std::vector< std::shared_ptr< DiffCache > > diff_caches, CompositeParametrization parametrization)
virtual Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const =0
virtual Eigen::VectorXd inverse_eval()
virtual void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices)
virtual void set_output_indexing(const json &args)
virtual ~VariableToSimulation()=default
const std::vector< std::shared_ptr< State > > states
virtual void update(const Eigen::VectorXd &x)
virtual std::string name() const =0
Eigen::VectorXi get_output_indexing(const Eigen::VectorXd &x) const
Eigen::VectorXi output_indexing_