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

Creates and solves the discretised Hodge Laplacian source problems and the Dirac operator source Problem for a given list of levels and values of k and compares the two solutions. More...

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

Public Member Functions

 HodgeAndDiracExperiment (std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_zero_dirac, std::function< Eigen::Matrix< complex, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_one_dirac, std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_two_dirac, std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_zero, std::function< Eigen::Matrix< complex, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_one, std::function< complex(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 and the Dirac operator source problems for the tensor product of passed refinement levels and ks. More...
 

Private Attributes

std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_zero_
 
std::function< Eigen::Matrix< complex, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_one_
 
std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_two_
 
std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_zero_dirac_
 
std::function< Eigen::Matrix< complex, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)> f_one_dirac_
 
std::function< complex(const Eigen::Matrix< double, 3, 1 > &)> f_two_dirac_
 
double & k_
 
std::string name_
 

Detailed Description

Creates and solves the discretised Hodge Laplacian source problems and the Dirac operator source Problem for a given list of levels and values of k and compares the two solutions.

In order to make this work, the load functions for the Dirac operator and Hodge Laplacians must be appropriately chosen

\[ D\, \vec{u} + \imath\, k \, \vec{u} = \vec{f} \\ \Delta\, \vec{u} + k^2\, \vec{u} = D\, \vec{f} - \imath k \, \vec{f} \]

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 51 of file hodge_and_dirac_experiment.h.

Constructor & Destructor Documentation

◆ HodgeAndDiracExperiment()

projects::hldo_sphere::experiments::HodgeAndDiracExperiment::HodgeAndDiracExperiment ( std::function< complex(const Eigen::Matrix< double, 3, 1 > &)>  f_zero_dirac,
std::function< Eigen::Matrix< complex, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)>  f_one_dirac,
std::function< complex(const Eigen::Matrix< double, 3, 1 > &)>  f_two_dirac,
std::function< complex(const Eigen::Matrix< double, 3, 1 > &)>  f_zero,
std::function< Eigen::Matrix< complex, 3, 1 >(const Eigen::Matrix< double, 3, 1 > &)>  f_one,
std::function< complex(const Eigen::Matrix< double, 3, 1 > &)>  f_two,
double &  k,
std::string  name 
)
inline

Constructor setting all the functions and the reference k.

Parameters
f_zeroload function to the analytical solution of (D + ik) u_zero
f_oneload function to the analytical solution (D + ik) u_one
f_twoload function to the analytical solution (D + ik) u_two
f_zero_diracload function equivalent to (D - ik) f_zero
f_one_diracload function equivalent to (D - ik) f_one
f_two_diracload function equivalent to (D - ik) f_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 69 of file hodge_and_dirac_experiment.h.

Member Function Documentation

◆ Compute()

void projects::hldo_sphere::experiments::HodgeAndDiracExperiment::Compute ( std::vector< unsigned >  refinement_levels,
std::vector< double >  ks 
)
inline

Member Data Documentation

◆ f_one_

std::function<Eigen::Matrix<complex, 3, 1>( const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeAndDiracExperiment::f_one_
private

Definition at line 260 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ f_one_dirac_

std::function<Eigen::Matrix<complex, 3, 1>( const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeAndDiracExperiment::f_one_dirac_
private

Definition at line 265 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ f_two_

std::function<complex(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeAndDiracExperiment::f_two_
private

Definition at line 261 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ f_two_dirac_

std::function<complex(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeAndDiracExperiment::f_two_dirac_
private

Definition at line 266 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ f_zero_

std::function<complex(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeAndDiracExperiment::f_zero_
private

Definition at line 257 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ f_zero_dirac_

std::function<complex(const Eigen::Matrix<double, 3, 1> &)> projects::hldo_sphere::experiments::HodgeAndDiracExperiment::f_zero_dirac_
private

Definition at line 262 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ k_

double& projects::hldo_sphere::experiments::HodgeAndDiracExperiment::k_
private

Definition at line 267 of file hodge_and_dirac_experiment.h.

Referenced by Compute().

◆ name_

std::string projects::hldo_sphere::experiments::HodgeAndDiracExperiment::name_
private

Definition at line 268 of file hodge_and_dirac_experiment.h.

Referenced by Compute().


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