LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
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...
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_ |
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.
|
inline |
Constructor setting all the functions and the reference k.
f_zero | load function to the analytical solution of (D + ik) u_zero |
f_one | load function to the analytical solution (D + ik) u_one |
f_two | load function to the analytical solution (D + ik) u_two |
f_zero_dirac | load function equivalent to (D - ik) f_zero |
f_one_dirac | load function equivalent to (D - ik) f_one |
f_two_dirac | load function equivalent to (D - ik) f_two |
k | reference used in all the functions such that changes of k affect the functions |
name | identifier of the example (cretes a folder with this name for the results) |
Definition at line 69 of file hodge_and_dirac_experiment.h.
|
inline |
Solves the Hodge Laplacian and the Dirac operator source problems for the tensor product of passed refinement levels and ks.
refinement_levels | integer list containing all the levels |
ks | list of all ks to be used |
Definition at line 99 of file hodge_and_dirac_experiment.h.
References projects::hldo_sphere::mesh::SphereTriagMeshBuilder::Build(), projects::hldo_sphere::operators::DiracOperatorSourceProblem::Compute(), f_one_, f_one_dirac_, f_two_, f_two_dirac_, f_zero_, f_zero_dirac_, projects::hldo_sphere::operators::DiracOperatorSourceProblem::GetMu(), projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::k, k_, projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::levels, projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::mesh, name_, projects::hldo_sphere::operators::DiracOperatorSourceProblem::SetK(), projects::hldo_sphere::operators::DiracOperatorSourceProblem::SetLoadFunctions(), projects::hldo_sphere::operators::DiracOperatorSourceProblem::SetMesh(), projects::hldo_sphere::mesh::SphereTriagMeshBuilder::setRadius(), projects::hldo_sphere::mesh::SphereTriagMeshBuilder::setRefinementLevel(), projects::hldo_sphere::post_processing::ProblemSolutionWrapper< SCALAR >::solutions, and projects::hldo_sphere::operators::DiracOperatorSourceProblem::Solve().
|
private |
Definition at line 260 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 265 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 261 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 266 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 257 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 262 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 267 of file hodge_and_dirac_experiment.h.
Referenced by Compute().
|
private |
Definition at line 268 of file hodge_and_dirac_experiment.h.
Referenced by Compute().