|
1 | | - |
2 | 1 | # Implemented Finite Elements |
3 | 2 |
|
4 | | -This page describes the finite element type-tree and lists all implemented finite elements. |
5 | | - |
6 | | - |
| 3 | +This page provides an overview of the finite element type hierarchy and lists all finite elements currently implemented in ExtendableFEMBase. |
7 | 4 |
|
8 | | -## The Finite Element Type-Tree |
| 5 | +## The Finite Element Type Hierarchy |
9 | 6 |
|
10 | | -Finite elements are abstract type leaves in a type-tree. The complete tree looks like this: |
| 7 | +Finite elements in ExtendableFEMBase are organized as leaves in an abstract type hierarchy. The complete type tree is as follows: |
11 | 8 |
|
12 | 9 | ``` |
13 | 10 | AbstractFiniteElement |
@@ -40,21 +37,20 @@ AbstractFiniteElement |
40 | 37 |
|
41 | 38 |
|
42 | 39 | #### Remarks |
43 | | -- each type depends on one/two or three parameters, the first one is always the number of components (ncomponents) that determines if the |
44 | | - finite element is scalar- or veector-valued; some elements additionally require the parameter edim <: Int if they are structurally different in different space dimensions; arbitrary order elements require a third parameter that determines the order |
45 | | -- each finite elements mainly comes with a set of basis functions in reference coordinates for each applicable AbstractElementGeometry and degrees of freedom maps for each mesh entity |
46 | | -- broken finite elements are possible via the broken switch in the [FESpace](@ref) constructor |
47 | | -- the type steers how the basis functions are transformed from local to global coordinates and how FunctionOperators are evaluated |
48 | | -- depending on additional continuity properties of the element types more basis function sets are defined: |
49 | | - - AbstractH1FiniteElements additionally have evaluations of nonzero basisfunctions on faces/bfaces |
50 | | - - AbstractHdivFiniteElements additionally have evaluations of nonzero normalfluxes of basisfunctions on faces/bfaces |
51 | | - - AbstractHcurlFiniteElements additionally have evaluations of nonzero tangentfluxes of basisfunctions on edges/bedges |
52 | | -- each finite element has its own implemented standard interpolation interpolate! (see [Finite Element Interpolations](@ref)) that can be applied to a function with header function(result, qpinfo), below it is shortly described what this means for each finite element |
| 40 | +- Each finite element type depends on one, two, or three parameters. The first parameter is always the number of components (`ncomponents`), which determines whether the element is scalar- or vector-valued. Some elements also require the parameter `edim <: Int` if their structure differs by spatial dimension. Arbitrary order elements require a third parameter specifying the polynomial order. |
| 41 | +- Each finite element provides a set of basis functions in reference coordinates for each applicable `AbstractElementGeometry`, as well as degree-of-freedom (dof) maps for each mesh entity. |
| 42 | +- Discontinuous (broken) finite elements can be created using the `broken` switch in the [`FESpace`](@ref) constructor. |
| 43 | +- The element type determines how basis functions are transformed from local to global coordinates and how `FunctionOperators` are evaluated. |
| 44 | +- Additional continuity properties of element types lead to more specialized basis function sets: |
| 45 | + - `AbstractH1FiniteElement` types provide evaluations of nonzero basis functions on faces/boundary faces. |
| 46 | + - `AbstractHdivFiniteElement` types provide evaluations of nonzero normal fluxes of basis functions on faces/boundary faces. |
| 47 | + - `AbstractHcurlFiniteElement` types provide evaluations of nonzero tangential fluxes of basis functions on edges/boundary edges. |
| 48 | +- Each finite element has its own standard interpolation routine `interpolate!` (see [Finite Element Interpolations](@ref)), which can be applied to a function with the signature `function(result, qpinfo)`. The specific interpolation behavior is described for each element below. |
53 | 49 |
|
54 | 50 |
|
55 | | -## List of implemented Finite Elements |
| 51 | +## List of Implemented Finite Elements |
56 | 52 |
|
57 | | -The following table lists all currently implemented finite elements and on which geometries they are available (in brackets a dofmap pattern for CellDofs is shown and the number of local degrees of freedom for a vector-valued realisation). Click on the FEType to find out more details. |
| 53 | +The following table summarizes all finite elements currently implemented in ExtendableFEMBase and indicates the reference geometries on which they are available. For each entry, the dofmap pattern for cell degrees of freedom is shown in brackets, along with the number of local degrees of freedom for a vector-valued realization. Click on an FEType to view more details. |
58 | 54 |
|
59 | 55 | | FEType | Triangle2D | Parallelogram2D | Tetrahedron3D | Parallelepiped3D | |
60 | 56 | | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | |
@@ -86,7 +82,7 @@ The following table lists all currently implemented finite elements and on which |
86 | 82 | | [`HDIVRTkENRICH`](@ref) | ✓ (order-dep) | | ✓ (order-dep) | | |
87 | 83 |
|
88 | 84 |
|
89 | | -Note: the dofmap pattern describes the connection of the local degrees of freedom to entities of the grid and also hints to the continuity. Here, "N" or "n" means nodes, "F" or "f" means faces, "E" or "e" means edges and "I" means interior (dofs without any continuity across elements). Capital letters cause that every component has its own degree of freedom, while small letters signalize that only one dof is associated to the entity. As an example "N1f1" (for the Bernardi-Raugel element) means that at each node sits one dof per component and at each face sits a single dof. Usually finite elements that involve small letters are only defined vector-valued (i.e. the number of components has to match the element dimension), while finite elements that only involve capital letters are available for any number of components. |
| 85 | +Note: The dofmap pattern describes how local degrees of freedom are associated with grid entities and provides insight into the continuity properties of the element. Here, "N" or "n" denotes nodes, "F" or "f" denotes faces, "E" or "e" denotes edges, and "I" denotes interior degrees of freedom (i.e., those without continuity across elements). Capital letters indicate that each component has its own degree of freedom, while lowercase letters mean only one degree of freedom is associated with the entity. For example, "N1f1" (as in the Bernardi-Raugel element) means that each node has one dof per component and each face has a single dof. Typically, finite elements involving lowercase letters are only defined for vector-valued cases (i.e., the number of components must match the element dimension), while those with only capital letters are available for any number of components. |
90 | 86 |
|
91 | 87 |
|
92 | 88 | ## H1-conforming finite elements |
|
0 commit comments