LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
Finite Element Space that supports arbitrary, local degrees. More...
#include <lf/fe/fe.h>
Public Types | |
using | Scalar = SCALAR |
![]() | |
using | Scalar = SCALAR |
Public Member Functions | |
HierarchicScalarFESpace ()=delete | |
HierarchicScalarFESpace (const HierarchicScalarFESpace &)=delete | |
HierarchicScalarFESpace (HierarchicScalarFESpace &&) noexcept=default | |
HierarchicScalarFESpace & | operator= (const HierarchicScalarFESpace &)=delete |
HierarchicScalarFESpace & | operator= (HierarchicScalarFESpace &&) noexcept=default |
HierarchicScalarFESpace (const std::shared_ptr< const lf::mesh::Mesh > &mesh_p, unsigned degree) | |
Construct a new Hierarchic FESpace with uniform polynomial degree. | |
template<class F , class = std::enable_if_t< std::is_invocable_v<F, const mesh::Entity &>>> | |
HierarchicScalarFESpace (const std::shared_ptr< const lf::mesh::Mesh > &mesh_p, F &°ree_functor) | |
Construct a new Hierarchic FESpace with (possibly) varying polynomial degrees. | |
std::shared_ptr< const lf::mesh::Mesh > | Mesh () const override |
access to underlying mesh | |
const lf::assemble::DofHandler & | LocGlobMap () const override |
access to associated local-to-global map | |
ScalarReferenceFiniteElement< SCALAR > const * | ShapeFunctionLayout (const lf::mesh::Entity &entity) const override |
access to shape function layout for cells | |
size_type | NumRefShapeFunctions (const lf::mesh::Entity &entity) const override |
number of interior shape functions associated to entities of various types | |
~HierarchicScalarFESpace () override=default | |
![]() | |
virtual | ~ScalarFESpace ()=default |
No special destructor. | |
Private Member Functions | |
template<class F > | |
void | Init (F &°ree_functor) |
Private Attributes | |
std::shared_ptr< const lf::mesh::Mesh > | mesh_p_ |
quad::QuadRuleCache | qr_cache_ |
lf::mesh::utils::AllCodimMeshDataSet< std::variant< std::monostate, FePoint< SCALAR >, FeHierarchicSegment< SCALAR >, FeHierarchicTria< SCALAR >, FeHierarchicQuad< SCALAR > > > | ref_el_ |
lf::assemble::DynamicFEDofHandler | dofh_ |
Additional Inherited Members | |
![]() | |
ScalarFESpace ()=default | |
default constructor, needed by std::vector | |
ScalarFESpace (const ScalarFESpace &)=default | |
ScalarFESpace (ScalarFESpace &&) noexcept=default | |
ScalarFESpace & | operator= (const ScalarFESpace &)=default |
ScalarFESpace & | operator= (ScalarFESpace &&) noexcept=default |
Finite Element Space that supports arbitrary, local degrees.
SCALAR | underlying scalar type, usually either double or complex<double> |
This FE Space contains hierarchic Finite Elements, meaning that the function spaces of lower polynomial degree are contained in the higher order function spaces.
The polynomial degree can vary from entity to entity, i.e. local \(p\)-refinement is supported.
A complete description of the basis functions and their dual basis can be found here.
The following code snippet computes the solution of the BVP
\begin{align} - \Delta u &= 1 && \text{on }\Omega := [0,1]^2 \\ u &= 0 && \text{on }\partial \Omega \end{align}
Definition at line 48 of file hierarchic_scalar_fe_space.h.
using lf::fe::HierarchicScalarFESpace< SCALAR >::Scalar = SCALAR |
Definition at line 50 of file hierarchic_scalar_fe_space.h.
|
delete |
|
delete |
|
defaultnoexcept |
|
inlineexplicit |
Construct a new Hierarchic FESpace with uniform polynomial degree.
mesh_p | A shared pointer to the underlying mesh (immutable) |
degree | The uniform polynomial degree. |
Definition at line 64 of file hierarchic_scalar_fe_space.h.
References lf::base::RefEl::kPoint().
|
inlineexplicit |
Construct a new Hierarchic FESpace with (possibly) varying polynomial degrees.
F | type of the degree_functor |
mesh_p | A shared pointer to the underlying mesh (immutable) |
degree_functor | A function object that assigns a polynomial degree to every entity in the mesh. See below for more info. |
The degree_functor
must overload the call operator as follows:
and should return the polynomial degree for the respective entity. The degree functor will be called for all entities (i.e. edges, triangles, quadrilaterals) in the mesh except for points.
Definition at line 93 of file hierarchic_scalar_fe_space.h.
|
overridedefault |
|
inlineprivate |
Definition at line 178 of file hierarchic_scalar_fe_space.h.
References lf::base::RefEl::kQuad(), and lf::base::RefEl::kTria().
|
inlineoverridevirtual |
access to associated local-to-global map
Implements lf::fe::ScalarFESpace< SCALAR >.
Definition at line 129 of file hierarchic_scalar_fe_space.h.
|
inlineoverridevirtual |
access to underlying mesh
Implements lf::fe::ScalarFESpace< SCALAR >.
Definition at line 121 of file hierarchic_scalar_fe_space.h.
|
inlineoverridevirtual |
number of interior shape functions associated to entities of various types
Implements lf::fe::ScalarFESpace< SCALAR >.
Definition at line 158 of file hierarchic_scalar_fe_space.h.
|
delete |
|
defaultnoexcept |
|
inlineoverridevirtual |
access to shape function layout for cells
access to shape function layout for mesh entities
entity | The entity to get the reference element for |
Implements lf::fe::ScalarFESpace< SCALAR >.
Definition at line 137 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 174 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 167 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 168 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 173 of file hierarchic_scalar_fe_space.h.