LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
Public Member Functions | Private Attributes | List of all members
projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR > Class Template Reference

Computes the Galerkin LSE for the Hodge Laplacian of the whitney one form. More...

#include </home/nico/bildung/SemVI/thesis/lehrfempp/projects/hldo_sphere/operators/whitney_one_hodge_laplacian.h>

Public Member Functions

 WhitneyOneHodgeLaplace ()
 Constructor initializes basic mesh (Octaeder with radius 1.0) initializes zerovalued function f. More...
 
void Compute ()
 Computes the Galerkin LSE. More...
 
void SetMesh (std::shared_ptr< const lf::mesh::Mesh > mesh_p)
 Sets the mesh and creates dof_handler. More...
 
void SetLoadFunction (std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> &f)
 Sets the load function. More...
 
Eigen::Matrix< SCALAR, Eigen::Dynamic, 1 > GetLoadVector ()
 returns the Loadvector More...
 
lf::assemble::COOMatrix< SCALAR > GetGalerkinMatrix ()
 returns the Galerkin Matrix More...
 

Private Attributes

std::shared_ptr< const lf::mesh::Meshmesh_p_
 
std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_
 
lf::assemble::COOMatrix< SCALAR > coo_matrix_
 
Eigen::Matrix< SCALAR, Eigen::Dynamic, 1 > phi_
 

Detailed Description

template<typename SCALAR>
class projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >

Computes the Galerkin LSE for the Hodge Laplacian of the whitney one form.

\[ \Delta_1 \mathbf{u} = -\mathbf{curl}_{\Gamma} \circ \text{curl}_{\Gamma} \, \mathbf{u} + \mathbf{grad}_{\Gamma} \circ \text{div}_{\Gamma} \, \mathbf{u} \\ -\Delta_1 \mathbf{u} = \mathbf{f} \]

Basis functions are the Whitney 1-forms and the barycentric coordinate functions

Details regarding the mathematical derivations can be found in the thesis Hodge-Laplacians and Dirac Operators on the Surface of the 3-Sphere section 4.3.2.

Note
Only triangular meshes are supported

Definition at line 54 of file whitney_one_hodge_laplacian.h.

Constructor & Destructor Documentation

◆ WhitneyOneHodgeLaplace()

template<typename SCALAR >
projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::WhitneyOneHodgeLaplace ( )
inline

Member Function Documentation

◆ Compute()

template<typename SCALAR >
void projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::Compute ( )
inline

◆ GetGalerkinMatrix()

template<typename SCALAR >
lf::assemble::COOMatrix< SCALAR > projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::GetGalerkinMatrix ( )
inline

returns the Galerkin Matrix

This is the Matrix of the LSE

Note
The Galerkin matrix must be computed with Compute() before calling this funciton

Definition at line 252 of file whitney_one_hodge_laplacian.h.

References projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::coo_matrix_.

Referenced by projects::hldo_sphere::operators::HodgeLaplaciansSourceProblems< SCALAR >::Compute().

◆ GetLoadVector()

template<typename SCALAR >
Eigen::Matrix< SCALAR, Eigen::Dynamic, 1 > projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::GetLoadVector ( )
inline

returns the Loadvector

This is the righthandside of the LSE

Note
The loadvector must be computed with Compute() before calling this function

Definition at line 241 of file whitney_one_hodge_laplacian.h.

References projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::phi_.

Referenced by projects::hldo_sphere::operators::HodgeLaplaciansSourceProblems< SCALAR >::Compute().

◆ SetLoadFunction()

template<typename SCALAR >
void projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::SetLoadFunction ( std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> &  f)
inline

Sets the load function.

Parameters
fload function

\[ \Delta_1 \mathbf{u} = -\mathbf{curl}_{\Gamma} \circ \text{curl}_{\Gamma} \, \mathbf{u} + \mathbf{grad}_{\Gamma} \circ \text{div}_{\Gamma} \, \mathbf{u} \\ -\Delta_1 \mathbf{u} = \mathbf{f} \]

Definition at line 227 of file whitney_one_hodge_laplacian.h.

References projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::f_.

Referenced by projects::hldo_sphere::operators::HodgeLaplaciansSourceProblems< SCALAR >::Compute().

◆ SetMesh()

template<typename SCALAR >
void projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::SetMesh ( std::shared_ptr< const lf::mesh::Mesh mesh_p)
inline

Sets the mesh and creates dof_handler.

Parameters
mesh_ppointer to the mesh

requries all cells in the mesh are triangles requries mesh global dimension to be 3

Definition at line 199 of file whitney_one_hodge_laplacian.h.

References lf::base::RefEl::kTria(), projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::mesh_p_, and lf::base::RefEl::RefEl().

Referenced by projects::hldo_sphere::operators::HodgeLaplaciansSourceProblems< SCALAR >::Compute().

Member Data Documentation

◆ coo_matrix_

template<typename SCALAR >
lf::assemble::COOMatrix<SCALAR> projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::coo_matrix_
private

◆ f_

template<typename SCALAR >
std::function<Eigen::Matrix<SCALAR, 3, 1>( const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::f_
private

◆ mesh_p_

template<typename SCALAR >
std::shared_ptr<const lf::mesh::Mesh> projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::mesh_p_
private

◆ phi_

template<typename SCALAR >
Eigen::Matrix<SCALAR, Eigen::Dynamic, 1> projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::phi_
private

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