LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
cartesian/prodcut space of finite element functions on a hybrid 2D mesh. More...
#include <projects/dpg/product_fe_space.h>
Public Types | |
using | scalar = SCALAR |
Public Member Functions | |
ProductUniformFESpace ()=default | |
ProductUniformFESpace (const ProductUniformFESpace &)=delete | |
ProductUniformFESpace (ProductUniformFESpace &&) noexcept=default | |
ProductUniformFESpace & | operator= (const ProductUniformFESpace &)=delete |
ProductUniformFESpace & | operator= (ProductUniformFESpace &&) noexcept=default |
ProductUniformFESpace (std::shared_ptr< const lf::mesh::Mesh > mesh_p, std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > rfs_tria_v, std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > rfs_quad_v, std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > rfs_edge_v, std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > rfs_point_v) | |
Main construcotr: sets up the local-to-global index mapping (dofhandler) More... | |
std::shared_ptr< const lf::mesh::Mesh > | Mesh () const |
acess to underlying mesh More... | |
const ProductUniformFEDofHandler & | LocGlobMap () const |
access to associated local-to-global map More... | |
lf::fe::ScalarReferenceFiniteElement< SCALAR > const * | ShapeFunctionLayout (lf::base::RefEl ref_el_type, size_type component) const |
access to shape function layout More... | |
size_type | NumRefShapeFunctions (lf::base::RefEl ref_el_type, size_type component) const |
number of interior shape functions associated to entities of various types for a given component More... | |
size_type | NumComponents () const |
number of components of the product space More... | |
std::shared_ptr< const lf::uscalfe::UniformScalarFESpace< SCALAR > > | ComponentFESpace (size_type component) const |
Constructs a lf::uscalfe::UniformScalarFESpace that describes the finite element space associated to a certain component. More... | |
virtual | ~ProductUniformFESpace ()=default |
no special destructor More... | |
Private Member Functions | |
void | init () |
Private Attributes | |
std::shared_ptr< const lf::mesh::Mesh > | mesh_p_ |
std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > | rfs_tria_v_ |
std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > | rfs_quad_v_ |
std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > | rfs_edge_v_ |
std::vector< std::shared_ptr< const lf::fe::ScalarReferenceFiniteElement< SCALAR > > > | rfs_point_v_ |
std::vector< size_type > | num_rsf_node_ |
std::vector< size_type > | num_rsf_edge_ |
std::vector< size_type > | num_rsf_tria_ |
std::vector< size_type > | num_rsf_quad_ |
std::unique_ptr< ProductUniformFEDofHandler > | dofh_p_ |
size_type | numComponents_ = 0 |
cartesian/prodcut space of finite element functions on a hybrid 2D mesh.
SCALAR | underlying scalar type for all components, usually 'double' |
This class provides functionality similar to the class lf::uscalfe::UniformScalarFESpace for product/cartesian finite element spaces. These spaces are of the form
\[ U = U_0 \times U_1 \times \dots \times U_{n-1} \]
where each of the \( U_i \) is a function space of scalar valued functions (see the description in ProductUniformFEDofHandler).
To allow this, this class provides some further member functions that give extra information about the contained FE spaces. It furthermore uses a ProductUniformFEDofHandler internally resulting in a different dof ordering.
Furthermore, this class also weakens some constraints on the shape function layouts compared to the lf::uscalfe::UniformScalarFESpace in order to represent function spaces as they occur in the description of DPG methods:
Definition at line 58 of file product_fe_space.h.
using projects::dpg::ProductUniformFESpace< SCALAR >::scalar = SCALAR |
Definition at line 60 of file product_fe_space.h.
|
default |
default constructor
|
delete |
|
defaultnoexcept |
|
inline |
Main construcotr: sets up the local-to-global index mapping (dofhandler)
mesh_p | shared pointer to underlying mesh (imutable) |
rfs_tria_v | vector of shared pointers to layout description of reference shape functions on triangular cells for each component. |
rfs_quad_v | vector of shared pointers to layout description of reference shape functions on quadrilateral cells for each component. |
rfs_edge_v | vector of shared pointers to layout description of reference shape functions on the edges for each component. |
The schemes for local shape functions belonging to some component have to satisfy the following compatibility conditions.
Definition at line 92 of file product_fe_space.h.
References projects::dpg::ProductUniformFESpace< SCALAR >::init(), projects::dpg::ProductUniformFESpace< SCALAR >::numComponents_, and projects::dpg::ProductUniformFESpace< SCALAR >::rfs_tria_v_.
|
virtualdefault |
no special destructor
|
inline |
Constructs a lf::uscalfe::UniformScalarFESpace that describes the finite element space associated to a certain component.
Definition at line 163 of file product_fe_space.h.
References projects::dpg::ProductUniformFESpace< SCALAR >::mesh_p_, projects::dpg::ProductUniformFESpace< SCALAR >::rfs_edge_v_, projects::dpg::ProductUniformFESpace< SCALAR >::rfs_point_v_, projects::dpg::ProductUniformFESpace< SCALAR >::rfs_quad_v_, and projects::dpg::ProductUniformFESpace< SCALAR >::rfs_tria_v_.
Referenced by projects::dpg::InitEssentialConditionsFromFunctions().
|
private |
Initialization of class member variables and consistency checks
Definition at line 210 of file product_fe_space.h.
References lf::base::RefEl::kPoint(), lf::base::RefEl::kQuad(), lf::base::RefEl::kSegment(), and lf::base::RefEl::kTria().
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::ProductUniformFESpace().
|
inline |
access to associated local-to-global map
Definition at line 126 of file product_fe_space.h.
References projects::dpg::ProductUniformFESpace< SCALAR >::dofh_p_, and projects::dpg::ProductUniformFESpace< SCALAR >::mesh_p_.
Referenced by projects::dpg::InitEssentialConditionsFromFunctions().
|
inline |
acess to underlying mesh
Definition at line 118 of file product_fe_space.h.
References projects::dpg::ProductUniformFESpace< SCALAR >::mesh_p_.
|
inline |
number of components of the product space
Definition at line 152 of file product_fe_space.h.
References projects::dpg::ProductUniformFESpace< SCALAR >::numComponents_.
size_type projects::dpg::ProductUniformFESpace< SCALAR >::NumRefShapeFunctions | ( | lf::base::RefEl | ref_el_type, |
size_type | component | ||
) | const |
number of interior shape functions associated to entities of various types for a given component
Definition at line 380 of file product_fe_space.h.
References lf::base::RefEl::kPoint(), lf::base::RefEl::kQuad(), lf::base::RefEl::kSegment(), and lf::base::RefEl::kTria().
|
delete |
|
defaultnoexcept |
lf::fe::ScalarReferenceFiniteElement< SCALAR > const * projects::dpg::ProductUniformFESpace< SCALAR >::ShapeFunctionLayout | ( | lf::base::RefEl | ref_el_type, |
size_type | component | ||
) | const |
access to shape function layout
ref_el_type | type of entit, can be anything except for lf::base::RefEl::kPoint() |
component | index of the component whose shape function layout is returned. |
Definition at line 348 of file product_fe_space.h.
References lf::base::RefEl::kPoint(), lf::base::RefEl::kQuad(), lf::base::RefEl::kSegment(), and lf::base::RefEl::kTria().
|
private |
local-to-global index map for the finite element space
Definition at line 199 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::LocGlobMap().
|
private |
underlying mesh
Definition at line 174 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::ComponentFESpace(), projects::dpg::ProductUniformFESpace< SCALAR >::LocGlobMap(), and projects::dpg::ProductUniformFESpace< SCALAR >::Mesh().
|
private |
Definition at line 194 of file product_fe_space.h.
|
private |
numbers of local shape functions for all components on different types of entities.
Definition at line 193 of file product_fe_space.h.
|
private |
Definition at line 196 of file product_fe_space.h.
|
private |
Definition at line 195 of file product_fe_space.h.
|
private |
number of components
Definition at line 202 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::NumComponents(), and projects::dpg::ProductUniformFESpace< SCALAR >::ProductUniformFESpace().
|
private |
Definition at line 186 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::ComponentFESpace().
|
private |
Definition at line 189 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::ComponentFESpace().
|
private |
Definition at line 183 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::ComponentFESpace().
|
private |
descritpions of reference shape functions for all components on different types of entities.
Definition at line 180 of file product_fe_space.h.
Referenced by projects::dpg::ProductUniformFESpace< SCALAR >::ComponentFESpace(), and projects::dpg::ProductUniformFESpace< SCALAR >::ProductUniformFESpace().