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. More... | |
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. More... | |
std::shared_ptr< const lf::mesh::Mesh > | Mesh () const override |
access to underlying mesh More... | |
const lf::assemble::DofHandler & | LocGlobMap () const override |
access to associated local-to-global map More... | |
ScalarReferenceFiniteElement< SCALAR > const * | ShapeFunctionLayout (const lf::mesh::Entity &entity) const override |
access to shape function layout for cells More... | |
size_type | NumRefShapeFunctions (const lf::mesh::Entity &entity) const override |
number of interior shape functions associated to entities of various types More... | |
~HierarchicScalarFESpace () override=default | |
![]() | |
virtual std::shared_ptr< const lf::mesh::Mesh > | Mesh () const =0 |
acess to underlying mesh More... | |
virtual const lf::assemble::DofHandler & | LocGlobMap () const =0 |
access to associated local-to-global map More... | |
virtual ScalarReferenceFiniteElement< SCALAR > const * | ShapeFunctionLayout (const lf::mesh::Entity &entity) const =0 |
access to shape function layout for mesh entities More... | |
virtual size_type | NumRefShapeFunctions (const lf::mesh::Entity &entity) const =0 |
number of interior shape functions associated to a particular mesh entity. More... | |
virtual | ~ScalarFESpace ()=default |
No special destructor. More... | |
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 More... | |
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.
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 43 of file hierarchic_scalar_fe_space.h.
using lf::fe::HierarchicScalarFESpace< SCALAR >::Scalar = SCALAR |
Definition at line 45 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 59 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 88 of file hierarchic_scalar_fe_space.h.
|
overridedefault |
|
inlineprivate |
Definition at line 173 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 124 of file hierarchic_scalar_fe_space.h.
|
inlineoverridevirtual |
access to underlying mesh
Implements lf::fe::ScalarFESpace< SCALAR >.
Definition at line 116 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 153 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 132 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 169 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 162 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 163 of file hierarchic_scalar_fe_space.h.
|
private |
Definition at line 168 of file hierarchic_scalar_fe_space.h.