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

#include <Parametrizations.hpp>

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

Public Member Functions

 LinearFilter (const mesh::Mesh &mesh, const double radius)
 
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

Eigen::SparseMatrix< double > tt_radius_adjacency
 
Eigen::VectorXd tt_radius_adjacency_row_sum
 

Detailed Description

Definition at line 148 of file Parametrizations.hpp.

Constructor & Destructor Documentation

◆ LinearFilter()

polyfem::solver::LinearFilter::LinearFilter ( const mesh::Mesh mesh,
const double  radius 
)

Definition at line 409 of file Parametrizations.cpp.

References polyfem::mesh::Mesh::bounding_box(), polyfem::mesh::Mesh::cell_barycenters(), polyfem::mesh::Mesh::face_barycenters(), polyfem::mesh::Mesh::is_volume(), tt_radius_adjacency, and tt_radius_adjacency_row_sum.

Here is the call graph for this function:

Member Function Documentation

◆ apply_jacobian()

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

References tt_radius_adjacency, tt_radius_adjacency_row_sum, and x.

◆ eval()

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

Eval y = f(x).

Parameters
[in]xx.
Returns
y.

Implements polyfem::solver::Parametrization.

Definition at line 446 of file Parametrizations.cpp.

References tt_radius_adjacency, tt_radius_adjacency_row_sum, and x.

◆ size()

int polyfem::solver::LinearFilter::size ( const int  x_size) const
inlineoverridevirtual

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 153 of file Parametrizations.hpp.

Member Data Documentation

◆ tt_radius_adjacency

Eigen::SparseMatrix<double> polyfem::solver::LinearFilter::tt_radius_adjacency
private

Definition at line 158 of file Parametrizations.hpp.

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

◆ tt_radius_adjacency_row_sum

Eigen::VectorXd polyfem::solver::LinearFilter::tt_radius_adjacency_row_sum
private

Definition at line 159 of file Parametrizations.hpp.

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


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