PolyFEM
Loading...
Searching...
No Matches
VariableToSimulation.hpp
Go to the documentation of this file.
1#pragma once
2
7
8#include <Eigen/Core>
9
10#include <string>
11
12namespace polyfem::solver
13{
16 {
17 public:
18 virtual ~VariableToSimulation() = default;
19
20 virtual std::string name() const = 0;
21
22 virtual ParameterType parameter_type() const = 0;
23
25 virtual bool affect_state(const legacy::State &target) const = 0;
26
29 virtual void update(const Eigen::VectorXd &x) = 0;
30
38 virtual void update_state_variables(const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const = 0;
39
51 virtual Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const = 0;
52
56 virtual int inverse_dof() const = 0;
57
61 virtual Eigen::VectorXd inverse_eval() const = 0;
62
67 virtual Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const = 0;
68 };
69
70} // namespace polyfem::solver
int x
main class that contains the polyfem solver and all its state
Definition State.hpp:114
Maps optimization variables to forward simulation legacy::State variables.
virtual int inverse_dof() const =0
Compute optimization variables dof.
virtual Eigen::VectorXd inverse_eval() const =0
Compute optimization variables from forward simulation legacy::State.
virtual void update(const Eigen::VectorXd &x)=0
Update forward simulation states from optimization variables.
virtual Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const =0
Compute adjoint contribution of objective gradient.
virtual bool affect_state(const legacy::State &target) const =0
Return true if current var2sim maps to target state.
virtual void update_state_variables(const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const =0
Update state variables from optimization variables.
virtual ParameterType parameter_type() const =0
virtual Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const =0
Apply parametrization jacobian to compute the gradient w.r.t.
virtual std::string name() const =0