Reference documentation for deal.II version 8.5.0
Classes | Enumerations
Base classes
Collaboration diagram for Base classes:


class  FiniteElement< dim, spacedim >
class  FiniteElement< dim, spacedim >::InternalDataBase
class  FiniteElementData< dim >
class  FE_DGVector< PolynomialType, dim, spacedim >
class  FE_DGVector< PolynomialType, dim, spacedim >::InternalData
class  FE_Poly< PolynomialType, dim, spacedim >
class  FE_Poly< PolynomialType, dim, spacedim >::InternalData
class  FE_PolyFace< PolynomialType, dim, spacedim >
class  FE_PolyFace< PolynomialType, dim, spacedim >::InternalData
class  FE_PolyTensor< PolynomialType, dim, spacedim >
class  FE_PolyTensor< PolynomialType, dim, spacedim >::InternalData
class  FESystem< dim, spacedim >
class  FESystem< dim, spacedim >::InternalData


enum  FiniteElementData< dim >::Conformity {
  FiniteElementData< dim >::unknown = 0x00, FiniteElementData< dim >::L2 = 0x01, FiniteElementData< dim >::Hcurl = 0x02, FiniteElementData< dim >::Hdiv = 0x04,
  FiniteElementData< dim >::H1 = Hcurl | Hdiv, FiniteElementData< dim >::H2 = 0x0e

Detailed Description

The members of this sub-module describe the implementation mechanics of finite element classes, without actually implementing a concrete element. For example, the FiniteElement base class declares the virtual functions a derived class has to implement if it wants to describe a finite element space. Likewise, the FiniteElementData holds variables that describe certain values characterizing a finite element, such as the number of degrees of freedom per vertex, line, or face.

On the other hand, classes like FE_Poly and FE_PolyTensor are higher abstractions. They describe finite elements that are built atop polynomial descriptions of the shape functions on the unit cell. Classes derived from them then only have to provide a description of the particular polynomial from which a finite element is built. For example, the FE_Q class that implements the usual Lagrange elements uses the FE_Poly base class to generate a finite element by providing it with a set of Lagrange interpolation polynomials corresponding to an equidistant subdivision of interpolation points.

Finally, the FESystem class is used for vector-valued problems. There, one may want to couple a number of scalar (or also vector-valued) base elements together to form the joint finite element of a vector-valued operator. As an example, for 3d Navier-Stokes flow, one may want to use three Q1 elements for the three components of the velocity, and a piecewise constant Q0 element for the pressure. The FESystem class can be used to couple these four base elements together into a single, vector-valued element with 4 vector components. The step-8, step-17, and step-18 tutorial programs give an introduction into the use of this class in the context of the vector-valued elasticity (Lamé) equations. step-20 discusses a mixed Laplace discretization that also uses vector-valued elements.

Enumeration Type Documentation

template<int dim>
enum FiniteElementData::Conformity

Enumerator for the different types of continuity a finite element may have. Continuity is measured by the Sobolev space containing the constructed finite element space and is also called this way.

Note that certain continuities may imply others. For instance, a function in H1 is in Hcurl and Hdiv as well.

If you are interested in continuity in the classical sense, then the following relations hold:

  1. H1 implies that the function is continuous over cell boundaries.

  2. H2 implies that the function is continuously differentiable over cell boundaries.

  3. L2 indicates that the element is discontinuous. Since discontinuous elements have no topological couplings between grid cells and code may actually depend on this property, L2 conformity is handled in a special way in the sense that it is not implied by any higher conformity.

In order to test if a finite element conforms to a certain space, use FiniteElementData<dim>::conforms().


Indicates incompatible continuities of a system.


Discontinuous elements. See above!


Conformity with the space Hcurl (continuous tangential component of a vector field)


Conformity with the space Hdiv (continuous normal component of a vector field)


Conformity with the space H1 (continuous)


Conformity with the space H2 (continuously differentiable)

Definition at line 193 of file fe_base.h.