![]() |
Reference documentation for deal.II version 8.1.0
|
Enumerations | |
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 } |
The members of this sub-module describe the implementational 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.
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:
H1 implies that the function is continuous over cell boundaries.
H2 implies that the function is continuously differentiable over cell boundaries.
In order to test if a finite element conforms to a certain space, use FiniteElementData<dim>::conforms().