|
PolyFEM
|
#include <Parametrization.hpp>
Public Member Functions | |
| CompositeParametrization ()=default | |
| CompositeParametrization (std::vector< std::shared_ptr< Parametrization > > parametrizations) | |
| int | inverse_size (int y_size) const override |
| Compute DOF of x given DOF of y. | |
| Eigen::VectorXd | inverse_eval (const Eigen::VectorXd &y) const override |
| Eval x = f^-1 (y). | |
| int | size (const int x_size) const override |
| Compute DOF of y given DOF of x. | |
| Eigen::VectorXd | eval (const Eigen::VectorXd &x) const override |
| Eval y = f(x). | |
| Eigen::VectorXd | apply_jacobian (const Eigen::VectorXd &grad_full, const Eigen::VectorXd &x) const override |
| Apply jacobian for chain rule. | |
Public Member Functions inherited from polyfem::solver::Parametrization | |
| virtual | ~Parametrization ()=default |
Private Attributes | |
| const std::vector< std::shared_ptr< Parametrization > > | parametrizations_ |
Definition at line 54 of file Parametrization.hpp.
|
default |
|
inline |
Definition at line 58 of file Parametrization.hpp.
|
overridevirtual |
Apply jacobian for chain rule.
Let g(y) = g(f(x)). Given ∂g/∂y, compute ∂g/∂x = ∂g/∂y * ∂y/∂x.
| [in] | grad_full | ∂g/∂y. |
| [in] | x | Where ∂g/∂x is evaluated. |
Implements polyfem::solver::Parametrization.
Definition at line 59 of file Parametrization.cpp.
References apply_jacobian(), parametrizations_, x, and y.
Referenced by apply_jacobian(), polyfem::solver::ElasticVariableToSimulation::apply_parametrization_jacobian(), polyfem::solver::PeriodicShapeVariableToSimulation::apply_parametrization_jacobian(), polyfem::solver::ShapeVariableToSimulation::apply_parametrization_jacobian(), polyfem::solver::DampingVariableToSimulation::compute_adjoint_term(), polyfem::solver::DirichletBoundaryVariableToSimulation::compute_adjoint_term(), polyfem::solver::DirichletNodesVariableToSimulation::compute_adjoint_term(), polyfem::solver::ElasticVariableToSimulation::compute_adjoint_term(), polyfem::solver::FrictionVariableToSimulation::compute_adjoint_term(), polyfem::solver::InitialConditionVariableToSimulation::compute_adjoint_term(), polyfem::solver::PeriodicShapeVariableToSimulation::compute_adjoint_term(), polyfem::solver::PressureBoundaryVariableToSimulation::compute_adjoint_term(), polyfem::solver::ShapeVariableToSimulation::compute_adjoint_term(), polyfem::solver::ParametrizationForm::compute_partial_gradient(), and polyfem::solver::ParametrizationForm::post_step().
|
overridevirtual |
Eval y = f(x).
| [in] | x | x. |
Implements polyfem::solver::Parametrization.
Definition at line 46 of file Parametrization.cpp.
References parametrizations_, x, and y.
Referenced by polyfem::solver::PeriodicShapeVariableToSimulation::apply_parametrization_jacobian(), polyfem::solver::ParametrizationForm::apply_parametrizations(), polyfem::solver::PeriodicShapeVariableToSimulation::compute_adjoint_term(), polyfem::solver::DampingVariableToSimulation::update(), polyfem::solver::DirichletBoundaryVariableToSimulation::update(), polyfem::solver::DirichletNodesVariableToSimulation::update(), polyfem::solver::ElasticVariableToSimulation::update(), polyfem::solver::FrictionVariableToSimulation::update(), polyfem::solver::InitialConditionVariableToSimulation::update(), polyfem::solver::PeriodicShapeVariableToSimulation::update(), polyfem::solver::PressureBoundaryVariableToSimulation::update(), polyfem::solver::ShapeVariableToSimulation::update(), polyfem::solver::DampingVariableToSimulation::update_state_variables(), polyfem::solver::DirichletNodesVariableToSimulation::update_state_variables(), polyfem::solver::ElasticVariableToSimulation::update_state_variables(), polyfem::solver::FrictionVariableToSimulation::update_state_variables(), polyfem::solver::InitialConditionVariableToSimulation::update_state_variables(), polyfem::solver::PeriodicShapeVariableToSimulation::update_state_variables(), polyfem::solver::PressureBoundaryVariableToSimulation::update_state_variables(), and polyfem::solver::ShapeVariableToSimulation::update_state_variables().
|
overridevirtual |
Eval x = f^-1 (y).
This is not a strict inverse in mathematical sense, one may choose "reasonable" x even if f is not one-to-one.
| [in] | y | y. |
| std::runtime_error | Throw if inverse not implemented or is impossible. |
Implements polyfem::solver::Parametrization.
Definition at line 30 of file Parametrization.cpp.
References parametrizations_, x, and y.
Referenced by polyfem::solver::DampingVariableToSimulation::inverse_eval(), polyfem::solver::DirichletBoundaryVariableToSimulation::inverse_eval(), polyfem::solver::DirichletNodesVariableToSimulation::inverse_eval(), polyfem::solver::ElasticVariableToSimulation::inverse_eval(), polyfem::solver::FrictionVariableToSimulation::inverse_eval(), polyfem::solver::InitialConditionVariableToSimulation::inverse_eval(), polyfem::solver::PeriodicShapeVariableToSimulation::inverse_eval(), polyfem::solver::PressureBoundaryVariableToSimulation::inverse_eval(), and polyfem::solver::ShapeVariableToSimulation::inverse_eval().
|
overridevirtual |
Compute DOF of x given DOF of y.
| [in] | y_size | DOF of y. |
| std::runtime_error | Throw if inverse not impossible or y_size is invalid. |
Implements polyfem::solver::Parametrization.
Definition at line 15 of file Parametrization.cpp.
References parametrizations_.
Referenced by polyfem::solver::DampingVariableToSimulation::inverse_dof(), polyfem::solver::DirichletBoundaryVariableToSimulation::inverse_dof(), polyfem::solver::DirichletNodesVariableToSimulation::inverse_dof(), polyfem::solver::ElasticVariableToSimulation::inverse_dof(), polyfem::solver::FrictionVariableToSimulation::inverse_dof(), polyfem::solver::InitialConditionVariableToSimulation::inverse_dof(), polyfem::solver::PeriodicShapeVariableToSimulation::inverse_dof(), polyfem::solver::PressureBoundaryVariableToSimulation::inverse_dof(), and polyfem::solver::ShapeVariableToSimulation::inverse_dof().
|
overridevirtual |
Compute DOF of y given DOF of x.
| [in] | x_size | The DOF of x. |
Implements polyfem::solver::Parametrization.
Definition at line 6 of file Parametrization.cpp.
References parametrizations_.
|
private |
Definition at line 67 of file Parametrization.hpp.
Referenced by apply_jacobian(), eval(), inverse_eval(), inverse_size(), and size().