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

Creates and solves the discretised Hodge Laplacian source problems for a given list of levels and values of k. More...

#include </home/nico/bildung/SemVI/thesis/lehrfempp/projects/hldo_sphere/experiments/hodge_laplacians/hodge_laplacian_experiment.h>

Public Member Functions

 HodgeLaplacianExperiment (std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> u_zero, std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> u_one, std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> u_two, std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> f_zero, std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_one, std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> f_two, double &k, std::string name)
 Constructor setting all the functions and the reference k. More...
 
void Compute (std::vector< unsigned > refinement_levels, std::vector< double > ks)
 Solves the hodge laplacian source problems for the tensor product of passed refinement levels and ks. More...
 

Private Attributes

std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> u_zero_
 
std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> u_one_
 
std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> u_two_
 
std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> f_zero_
 
std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_one_
 
std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)> f_two_
 
double & k_
 
std::string name_
 

Detailed Description

template<typename SCALAR>
class projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >

Creates and solves the discretised Hodge Laplacian source problems for a given list of levels and values of k.

Details about the experiments can be found in the thesis Hodge-Laplacians and Dirac Operators on the Surface of the 3-Sphere chapter 6.

Definition at line 44 of file hodge_laplacian_experiment.h.

Constructor & Destructor Documentation

◆ HodgeLaplacianExperiment()

template<typename SCALAR >
projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::HodgeLaplacianExperiment ( std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)>  u_zero,
std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)>  u_one,
std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)>  u_two,
std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)>  f_zero,
std::function< Eigen::Matrix< SCALAR, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)>  f_one,
std::function< SCALAR(const Eigen::Matrix< double, 3, 1 > &)>  f_two,
double &  k,
std::string  name 
)
inline

Constructor setting all the functions and the reference k.

Parameters
u_zeroanalytical soltions corresponding to the load function f_zero
u_oneanalytical soltions corresponding to the load function f_one
u_twoanalytical soltions corresponding to the load function f_two
f_zeroload function corresponding to the analytical solution u_zero
f_oneload function corresponding to the analytical solution u_one
f_twoload function corresponding to the analytical solution u_two
kreference used in all the functions such that changes of k affect the functions
nameidentifier of the example (cretes a folder with this name for the results)

Definition at line 62 of file hodge_laplacian_experiment.h.

Member Function Documentation

◆ Compute()

template<typename SCALAR >
void projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::Compute ( std::vector< unsigned >  refinement_levels,
std::vector< double >  ks 
)
inline

Solves the hodge laplacian source problems for the tensor product of passed refinement levels and ks.

Parameters
refinement_levelsinteger list containig all the levels
kslist of all ks to be used

Definition at line 92 of file hodge_laplacian_experiment.h.

References projects::hldo_sphere::mesh::SphereTriagMeshBuilder::Build(), projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::f_one_, projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::f_two_, projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::f_zero_, projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::k, projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::k_, projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::levels, projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::mesh, projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::name_, projects::hldo_sphere::post_processing::process_results(), projects::hldo_sphere::operators::HodgeLaplaciansSourceProblems< SCALAR >::SetLoadFunctions(), projects::hldo_sphere::mesh::SphereTriagMeshBuilder::setRadius(), projects::hldo_sphere::mesh::SphereTriagMeshBuilder::setRefinementLevel(), projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::solutions, projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::u_one_, projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::u_two_, and projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::u_zero_.

Member Data Documentation

◆ f_one_

template<typename SCALAR >
std::function<Eigen::Matrix<SCALAR, 3, 1>( const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::f_one_
private

◆ f_two_

template<typename SCALAR >
std::function<SCALAR(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::f_two_
private

◆ f_zero_

template<typename SCALAR >
std::function<SCALAR(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::f_zero_
private

◆ k_

template<typename SCALAR >
double& projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::k_
private

◆ name_

template<typename SCALAR >
std::string projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::name_
private

◆ u_one_

template<typename SCALAR >
std::function<Eigen::Matrix<SCALAR, 3, 1>( const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::u_one_
private

◆ u_two_

template<typename SCALAR >
std::function<SCALAR(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::u_two_
private

◆ u_zero_

template<typename SCALAR >
std::function<SCALAR(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::u_zero_
private

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