Reference documentation for deal.II version Git 2a81969 2017-11-21 09:22:35 +0100
Classes
Finite element space descriptions
Collaboration diagram for Finite element space descriptions:

Classes

class  BlockMask
 
class  ComponentMask
 
class  FiniteElement< dim, spacedim >
 
class  FiniteElement< dim, spacedim >::InternalDataBase
 
class  FE_ABF< dim >
 
struct  FE_Enriched< dim, spacedim >::InternalData::EnrichmentValues
 
class  FE_ABF< dim >::InternalData
 
class  FE_Bernstein< dim, spacedim >
 
class  FE_DGNedelec< dim, spacedim >
 
class  FE_DGRaviartThomas< dim, spacedim >
 
class  FE_DGBDM< dim, spacedim >
 
class  FE_DGP< dim, spacedim >
 
class  FE_DGPMonomial< dim >
 
class  FE_DGPNonparametric< dim, spacedim >
 
class  FE_DGQ< dim, spacedim >
 
class  FE_DGQArbitraryNodes< dim, spacedim >
 
class  FE_DGQLegendre< dim, spacedim >
 
class  FE_DGQHermite< dim, spacedim >
 
class  FE_Enriched< dim, spacedim >
 
class  FE_Enriched< dim, spacedim >::InternalData
 
class  FE_FaceQ< dim, spacedim >
 
class  FE_FaceQ< 1, spacedim >
 
class  FE_FaceP< dim, spacedim >
 
class  FE_Nedelec< dim >
 
class  FE_Nothing< dim, spacedim >
 
class  FE_P1NC
 
class  FE_Q< dim, spacedim >
 
class  FE_Q_Base< PolynomialType, dim, spacedim >
 
class  FE_Q_Bubbles< dim, spacedim >
 
class  FE_Q_DG0< dim, spacedim >
 
class  FE_Q_Hierarchical< dim >
 
class  FE_Q_iso_Q1< dim, spacedim >
 
class  FE_RannacherTurek< dim >
 
class  FE_RaviartThomas< dim >
 
class  FE_RaviartThomasNodal< dim >
 
class  FESystem< dim, spacedim >
 
class  FESystem< dim, spacedim >::InternalData
 

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.

Note
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:

Note
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().