|
PolyFEM
|
Maps optimization variables to forward simulation legacy::State variables. More...
#include <VariableToSimulation.hpp>
Public Member Functions | |
| virtual | ~VariableToSimulation ()=default |
| virtual std::string | name () const =0 |
| virtual ParameterType | parameter_type () const =0 |
| virtual bool | affect_state (const legacy::State &target) const =0 |
| Return true if current var2sim maps to target state. | |
| virtual void | update (const Eigen::VectorXd &x)=0 |
| Update forward simulation states from optimization variables. | |
| virtual void | update_state_variables (const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const =0 |
| Update state variables from optimization variables. | |
| virtual Eigen::VectorXd | compute_adjoint_term (const Eigen::VectorXd &x) const =0 |
| Compute adjoint contribution of objective gradient. | |
| 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 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. | |
Maps optimization variables to forward simulation legacy::State variables.
Definition at line 15 of file VariableToSimulation.hpp.
|
virtualdefault |
|
pure virtual |
Return true if current var2sim maps to target state.
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Apply parametrization jacobian to compute the gradient w.r.t.
to optimization variables.
| term | Gradient w.r.t. to full inherent dof (Ex. all vertices for shape var2sim) |
| x | Optimization variables. |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Compute adjoint contribution of objective gradient.
See arXiv:2205.13643.
Let objective function be J and optimization variable be x. This method computes all adjoint related terms in dJ/dx. For static case (E.q. 11), it's the second term. For dynamic case (E.q. 15), it's everything except ∂qJ.
| x[in] | Optimization variables. |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Compute optimization variables dof.
| std::runtime_error | Throw if not implemented. |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Compute optimization variables from forward simulation legacy::State.
| std::runtime_error | Throw if not implemented. |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Update forward simulation states from optimization variables.
| [in] | x | Optimization variables. |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.
|
pure virtual |
Update state variables from optimization variables.
Compared to update() this method update abstract state variables instead of writing directly to state.
| [in] | x | Optimization variables. |
| [out] | state_variables | Abstract state variables update dst. |
Implemented in polyfem::solver::DampingVariableToSimulation, polyfem::solver::DirichletBoundaryVariableToSimulation, polyfem::solver::DirichletNodesVariableToSimulation, polyfem::solver::ElasticVariableToSimulation, polyfem::solver::FrictionVariableToSimulation, polyfem::solver::InitialConditionVariableToSimulation, polyfem::solver::PeriodicShapeVariableToSimulation, polyfem::solver::PressureBoundaryVariableToSimulation, and polyfem::solver::ShapeVariableToSimulation.