19 static std::unique_ptr<VariableToSimulation>
create(
const std::string &type,
const std::vector<std::shared_ptr<State>> &states,
CompositeParametrization &¶metrization);
21 inline virtual void update(
const Eigen::VectorXd &
x)
26 virtual std::string
name()
const = 0;
42 virtual void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices);
43 const std::vector<std::shared_ptr<State>>
states_;
53 using ValueType = std::shared_ptr<VariableToSimulation>;
58 void init(
const json &args,
const std::vector<std::shared_ptr<State>> &states,
const std::vector<int> &variable_sizes);
62 inline void update(
const Eigen::VectorXd &
x)
96 std::vector<ValueType>
L;
106 std::string
name()
const override {
return "shape"; }
116 virtual void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
127 std::string
name()
const override {
return "elastic"; }
135 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
146 std::string
name()
const override {
return "friction"; }
154 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
165 std::string
name()
const override {
return "damping"; }
173 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
184 std::string
name()
const override {
return "initial"; }
192 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
203 std::string
name()
const override {
return "dirichlet"; }
218 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
235 std::string
name()
const override {
return "pressure"; }
250 void update_state(
const Eigen::VectorXd &state_variable,
const Eigen::VectorXi &indices)
override;
265 std::string
name()
const override {
return "periodic-shape"; }
272 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
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 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.
std::shared_ptr< VariableToSimulation > ValueType
void push_back(const ValueType &v2s)
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
VariableToSimulationGroup()=default
const_iterator begin() const
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.
const ValueType & operator[](size_t i) const
const_iterator end() const
void init(const json &args, const std::vector< std::shared_ptr< State > > &states, const std::vector< int > &variable_sizes)
void update(const Eigen::VectorXd &x)
Update parameters in simulators.
std::vector< ValueType >::const_iterator const_iterator
ValueType & operator[](size_t i)
std::vector< ValueType > L
Maps the optimization variable to the state variable.
virtual Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const
VariableToSimulation(const std::vector< std::shared_ptr< State > > &states, const CompositeParametrization ¶metrization)
virtual ParameterType get_parameter_type() const =0
CompositeParametrization parametrization_
VariableToSimulation(const std::shared_ptr< State > &state, const CompositeParametrization ¶metrization)
virtual Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const =0
virtual Eigen::VectorXd inverse_eval()
const std::vector< std::shared_ptr< State > > states_
virtual void update_state(const Eigen::VectorXd &state_variable, const Eigen::VectorXi &indices)
virtual void set_output_indexing(const json &args)
virtual void update(const Eigen::VectorXd &x)
CompositeParametrization & get_parametrization()
virtual std::string name() const =0
Eigen::VectorXi get_output_indexing(const Eigen::VectorXd &x) const
static std::unique_ptr< VariableToSimulation > create(const std::string &type, const std::vector< std::shared_ptr< State > > &states, CompositeParametrization &¶metrization)
const std::vector< std::shared_ptr< State > > & get_states() const
virtual ~VariableToSimulation()
Eigen::VectorXi output_indexing_