LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
A mesh builder for regular 3-Sphere. More...
#include </home/nico/bildung/SemVI/thesis/lehrfempp/projects/hldo_sphere/mesh/sphere_triag_mesh_builder.h>
Public Member Functions | |
SphereTriagMeshBuilder (std::unique_ptr< lf::mesh::MeshFactory > mesh_factory) | |
Constructor. More... | |
void | setRadius (double r) |
Sets the radius. More... | |
void | setRefinementLevel (lf::base::size_type n) |
Set the refinement level. More... | |
std::shared_ptr< lf::mesh::Mesh > | Build () |
Build the mesh. More... | |
Private Attributes | |
double | radius_ |
lf::base::size_type | refinement_level_ |
std::unique_ptr< lf::mesh::MeshFactory > | mesh_factory_ |
A mesh builder for regular 3-Sphere.
The radius of the Sphere is controlled by setRadius(). The refinement level can be set with setRefinementLevel(). The refinement level indicates how fine the mesh should be inital structure (octahedron, see https://de.wikipedia.org/wiki/Octahedron) The radius defaults to 1.0 while refinement level defaults to 0.
Details regarding the implementation and its concepts can be found in the thesis Hodge Laplacians and Dirac Operators on the Surface of the 3-Sphere
section 4.1.
Definition at line 33 of file sphere_triag_mesh_builder.h.
|
inlineexplicit |
Constructor.
mesh_factory | A unique pointer to a mesh factory object used for the assembly of the mesh |
Definition at line 40 of file sphere_triag_mesh_builder.h.
std::shared_ptr< lf::mesh::Mesh > projects::hldo_sphere::mesh::SphereTriagMeshBuilder::Build | ( | ) |
Build the mesh.
setRadius(r)
and the refinement level is set with setRefinementLevel(n)
. Definition at line 13 of file sphere_triag_mesh_builder.cc.
References lf::base::RefEl::kTria(), mesh_factory_, radius_, and refinement_level_.
Referenced by projects::hldo_sphere::debugging::WhitneyOneCurlTest::Compute(), projects::hldo_sphere::experiments::DiracOperatorExperiment::Compute(), projects::hldo_sphere::experiments::HodgeAndDiracExperiment::Compute(), projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::Compute(), projects::hldo_sphere::debugging::DiracConvergenceTest::Compute(), and projects::hldo_sphere::debugging::WhitneyOneBasisExpansionCoeffs::Experiemnt().
|
inline |
Sets the radius.
r | The radius of the sphere |
requries r > 0
Definition at line 54 of file sphere_triag_mesh_builder.h.
References radius_.
Referenced by projects::hldo_sphere::debugging::WhitneyOneCurlTest::Compute(), projects::hldo_sphere::experiments::DiracOperatorExperiment::Compute(), projects::hldo_sphere::experiments::HodgeAndDiracExperiment::Compute(), projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::Compute(), projects::hldo_sphere::debugging::DiracConvergenceTest::Compute(), and projects::hldo_sphere::debugging::WhitneyOneBasisExpansionCoeffs::Experiemnt().
|
inline |
Set the refinement level.
n | The nummber of refinements |
The refinement level indicates by how fine the mesh should become. Inital structure (octahedron, see https://en.wikipedia.org/wiki/Octahedron) on which new vertices are introduced for every refinement level.
For refinement level l the mesh will have \( 2^{2l + 3} \) cells, \( 3 \cdot 2^{2l + 2} \) edges and \( 2^{2l + 2} + 2 \) vertices.
Definition at line 83 of file sphere_triag_mesh_builder.h.
References refinement_level_.
Referenced by projects::hldo_sphere::debugging::WhitneyOneCurlTest::Compute(), projects::hldo_sphere::experiments::DiracOperatorExperiment::Compute(), projects::hldo_sphere::experiments::HodgeAndDiracExperiment::Compute(), projects::hldo_sphere::experiments::HodgeLaplacianExperiment< SCALAR >::Compute(), projects::hldo_sphere::debugging::DiracConvergenceTest::Compute(), projects::hldo_sphere::operators::DiracOperator::DiracOperator(), projects::hldo_sphere::debugging::WhitneyOneBasisExpansionCoeffs::Experiemnt(), projects::hldo_sphere::operators::HodgeLaplaciansSourceProblems< SCALAR >::HodgeLaplaciansSourceProblems(), projects::hldo_sphere::debugging::WhitneyOneBasisExpansionCoeffs::WhitneyOneBasisExpansionCoeffs(), projects::hldo_sphere::operators::WhitneyOneHodgeLaplace< SCALAR >::WhitneyOneHodgeLaplace(), and projects::hldo_sphere::operators::WhitneyZeroHodgeLaplace< SCALAR >::WhitneyZeroHodgeLaplace().
|
private |
Definition at line 96 of file sphere_triag_mesh_builder.h.
Referenced by Build().
|
private |
Definition at line 94 of file sphere_triag_mesh_builder.h.
Referenced by Build(), and setRadius().
|
private |
Definition at line 95 of file sphere_triag_mesh_builder.h.
Referenced by Build(), and setRefinementLevel().