PolyFEM
Loading...
Searching...
No Matches
polyfem::solver::VariableToSimulation Class Referenceabstract

Maps optimization variables to forward simulation legacy::State variables. More...

#include <VariableToSimulation.hpp>

Inheritance diagram for polyfem::solver::VariableToSimulation:
[legend]

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.
 

Detailed Description

Maps optimization variables to forward simulation legacy::State variables.

Definition at line 15 of file VariableToSimulation.hpp.

Constructor & Destructor Documentation

◆ ~VariableToSimulation()

virtual polyfem::solver::VariableToSimulation::~VariableToSimulation ( )
virtualdefault

Member Function Documentation

◆ affect_state()

◆ apply_parametrization_jacobian()

virtual Eigen::VectorXd polyfem::solver::VariableToSimulation::apply_parametrization_jacobian ( const Eigen::VectorXd &  term,
const Eigen::VectorXd &  x 
) const
pure virtual

◆ compute_adjoint_term()

virtual Eigen::VectorXd polyfem::solver::VariableToSimulation::compute_adjoint_term ( const Eigen::VectorXd &  x) const
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.

Parameters
x[in]Optimization variables.
Returns
Adjoint contribution of objective gradient.

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.

◆ inverse_dof()

◆ inverse_eval()

◆ name()

◆ parameter_type()

◆ update()

◆ update_state_variables()

virtual void polyfem::solver::VariableToSimulation::update_state_variables ( const Eigen::VectorXd &  x,
Eigen::VectorXd &  state_variables 
) const
pure virtual

The documentation for this class was generated from the following file: