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

#include <Parametrizations.hpp>

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

Public Member Functions

 PerBody2PerNode (const mesh::Mesh &mesh, const std::vector< basis::ElementBases > &bases, const int n_bases)
 
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, const Eigen::VectorXd &x) const override
 Apply jacobian for chain rule.
 
- Public Member Functions inherited from polyfem::solver::Parametrization
virtual ~Parametrization ()=default
 
virtual Eigen::VectorXd inverse_eval (const Eigen::VectorXd &y)
 Eval x = f^-1 (y).
 

Private Attributes

const mesh::Meshmesh_
 
const std::vector< basis::ElementBases > & bases_
 
int full_size_
 
int reduced_size_
 
Eigen::VectorXi node_id_to_body_id_
 

Detailed Description

Definition at line 82 of file Parametrizations.hpp.

Constructor & Destructor Documentation

◆ PerBody2PerNode()

polyfem::solver::PerBody2PerNode::PerBody2PerNode ( const mesh::Mesh mesh,
const std::vector< basis::ElementBases > &  bases,
const int  n_bases 
)

Definition at line 185 of file Parametrizations.cpp.

References full_size_, polyfem::mesh::Mesh::get_body_id(), polyfem::log_and_throw_adjoint_error(), polyfem::logger(), mesh_, polyfem::mesh::Mesh::n_elements(), node_id_to_body_id_, and reduced_size_.

Here is the call graph for this function:

Member Function Documentation

◆ apply_jacobian()

Eigen::VectorXd polyfem::solver::PerBody2PerNode::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 242 of file Parametrizations.cpp.

References full_size_, node_id_to_body_id_, reduced_size_, size(), and x.

Here is the call graph for this function:

◆ eval()

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

Eval y = f(x).

Parameters
[in]xx.
Returns
y.

Implements polyfem::solver::Parametrization.

Definition at line 219 of file Parametrizations.cpp.

References full_size_, node_id_to_body_id_, reduced_size_, size(), x, and y.

Here is the call graph for this function:

◆ size()

int polyfem::solver::PerBody2PerNode::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 236 of file Parametrizations.cpp.

References full_size_, and reduced_size_.

Referenced by apply_jacobian(), and eval().

Here is the caller graph for this function:

Member Data Documentation

◆ bases_

const std::vector<basis::ElementBases>& polyfem::solver::PerBody2PerNode::bases_
private

Definition at line 93 of file Parametrizations.hpp.

◆ full_size_

int polyfem::solver::PerBody2PerNode::full_size_
private

Definition at line 94 of file Parametrizations.hpp.

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

◆ mesh_

const mesh::Mesh& polyfem::solver::PerBody2PerNode::mesh_
private

Definition at line 92 of file Parametrizations.hpp.

Referenced by PerBody2PerNode().

◆ node_id_to_body_id_

Eigen::VectorXi polyfem::solver::PerBody2PerNode::node_id_to_body_id_
private

Definition at line 96 of file Parametrizations.hpp.

Referenced by apply_jacobian(), eval(), and PerBody2PerNode().

◆ reduced_size_

int polyfem::solver::PerBody2PerNode::reduced_size_
private

Definition at line 95 of file Parametrizations.hpp.

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


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