PolyFEM
Loading...
Searching...
No Matches
polyfem::solver::CompositeParametrization Class Reference

#include <Parametrization.hpp>

Inheritance diagram for polyfem::solver::CompositeParametrization:
[legend]
Collaboration diagram for polyfem::solver::CompositeParametrization:
[legend]

Public Member Functions

 CompositeParametrization ()=default
 
 CompositeParametrization (std::vector< std::shared_ptr< Parametrization > > parametrizations)
 
Eigen::VectorXd inverse_eval (const Eigen::VectorXd &y) 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_
 

Detailed Description

Definition at line 48 of file Parametrization.hpp.

Constructor & Destructor Documentation

◆ CompositeParametrization() [1/2]

polyfem::solver::CompositeParametrization::CompositeParametrization ( )
default

◆ CompositeParametrization() [2/2]

polyfem::solver::CompositeParametrization::CompositeParametrization ( std::vector< std::shared_ptr< Parametrization > >  parametrizations)
inline

Definition at line 52 of file Parametrization.hpp.

Member Function Documentation

◆ apply_jacobian()

Eigen::VectorXd polyfem::solver::CompositeParametrization::apply_jacobian ( const Eigen::VectorXd &  grad_full,
const Eigen::VectorXd &  x 
) const
overridevirtual

Apply jacobian for chain rule.

Let g(y) = g(f(x)). Given ∂g/∂y, compute ∂g/∂x = ∂g/∂y * ∂y/∂x.

Parameters
[in]grad_full∂g/∂y.
[in]xWhere ∂g/∂x is evaluated.
Returns
∂g/∂x.

Implements polyfem::solver::Parametrization.

Definition at line 48 of file Parametrization.cpp.

References apply_jacobian(), parametrizations_, x, and y.

Referenced by apply_jacobian(), polyfem::solver::VariableToSimulation::apply_parametrization_jacobian(), polyfem::solver::PeriodicShapeVariableToSimulation::apply_parametrization_jacobian(), polyfem::solver::ParametrizationForm::compute_partial_gradient(), and polyfem::solver::ParametrizationForm::post_step().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ eval()

Eigen::VectorXd polyfem::solver::CompositeParametrization::eval ( const Eigen::VectorXd &  x) const
overridevirtual

Eval y = f(x).

Parameters
[in]xx.
Returns
y.

Implements polyfem::solver::Parametrization.

Definition at line 35 of file Parametrization.cpp.

References parametrizations_, x, and y.

Referenced by polyfem::solver::ParametrizationForm::apply_parametrizations(), polyfem::solver::VariableToSimulation::update(), and polyfem::solver::PeriodicShapeVariableToSimulation::update().

Here is the caller graph for this function:

◆ inverse_eval()

Eigen::VectorXd polyfem::solver::CompositeParametrization::inverse_eval ( const Eigen::VectorXd &  y)
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.

Parameters
[in]yy.
Returns
x.
Exceptions
std::runtime_errorThrow if not implemented.

Reimplemented from polyfem::solver::Parametrization.

Definition at line 21 of file Parametrization.cpp.

References parametrizations_, x, and y.

Referenced by polyfem::solver::ShapeVariableToSimulation::inverse_eval(), polyfem::solver::ElasticVariableToSimulation::inverse_eval(), polyfem::solver::DirichletVariableToSimulation::inverse_eval(), polyfem::solver::PressureVariableToSimulation::inverse_eval(), and polyfem::solver::PeriodicShapeVariableToSimulation::inverse_eval().

Here is the caller graph for this function:

◆ size()

int polyfem::solver::CompositeParametrization::size ( const int  x_size) const
overridevirtual

Compute DOF of y given DOF of x.

Parameters
[in]x_sizeThe DOF of x.
Returns
DOF of y.

Implements polyfem::solver::Parametrization.

Definition at line 12 of file Parametrization.cpp.

References parametrizations_.

Referenced by polyfem::solver::VariableToSimulation::get_output_indexing().

Here is the caller graph for this function:

Member Data Documentation

◆ parametrizations_

const std::vector<std::shared_ptr<Parametrization> > polyfem::solver::CompositeParametrization::parametrizations_
private

Definition at line 61 of file Parametrization.hpp.

Referenced by apply_jacobian(), eval(), inverse_eval(), and size().


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