Reference documentation for deal.II version GIT 0f6eca7a35 2022-05-23 02:45:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Finite element space descriptions
Collaboration diagram for Finite element space descriptions:


class  BlockMask
class  ComponentMask
class  FiniteElement< dim, spacedim >
class  FE_BDM< dim >
class  FE_DGNedelec< dim, spacedim >
class  FE_DGRaviartThomas< dim, spacedim >
class  FE_DGBDM< dim, spacedim >
class  FE_Enriched< dim, spacedim >
class  FE_FaceQ< dim, spacedim >
class  FE_FaceQ< 1, spacedim >
class  FE_FaceP< dim, spacedim >
class  FE_RannacherTurek< dim >
class  FESystem< dim, spacedim >

Detailed Description

The classes here describe finite element spaces, such as the simplest Q1 (bi-/trilinear) spaces, and higher order Lagrangian spaces Qp, but also more specialized spaces such as Nedelec or Raviart-Thomas ones. Concrete implementations are derived from the abstract FiniteElement base class.

In essence, the functions these classes have to implement provide the ability to query the value or derivatives of a shape function at a given point on the unit cell. To be useful in integrating matrix and right hand side entries, one has to have the ability to map these shape functions and gradients to the real cell. This is done using classes derived from the Mapping base class (see Mappings between reference and real cell) in conjunction with the FEValues class (see Finite element access/FEValues classes).

Vector-valued finite elements

deal.II provides two different kinds of vector valued elements. First, there is a group of genuine vector elements, usually distinguished by the fact, that each vector component consists of a different set of anisotropic polynomials. These elements are typically associated with differential forms. Currently, they are

Additionally, deal.II offers a mechanism to create a vector element from existing scalar or vector elements. The FESystem class is responsible for this: it doesn't describe shape functions itself, but assembles a vector-valued finite element from other finite element objects. This functionality is described step-8, step-17 and other tutorial programs after that.

Support for the implementation of vector-valued elements is provided by the class FE_PolyTensor. Typically, a new vector element should be derived from this class.

Discontinuous Galerkin

For each finite element conforming to any space of weakly differentiable functions like H1 or Hcurl, we can define an analogue DG space by simply assigning all degrees of freedom on vertices, edges or faces to the interior of the cell. This is to be understood in the topological sense. The interpolation operator for such a degree of freedom would still be on the boundary. While not done so consistently, we provide quite a few of these elements, plus those, which have no conforming counterparts, like FE_DGP. Here is a list of the current DG elements:

The implementation of vector valued DG elements is supported by the class FE_DGVector, in the way, that only the vector polynomial space has to be provided. The actual class derived from this only has to implement a constructor and FiniteElement::get_name().