Type hierarchy
The root of the type hierarchy tree in ReferenceFiniteElements is the following abstract type.
ReferenceFiniteElements.AbstractElementType — Typeabstract type AbstractElementType{D, V, E, F, I, P, Q}Base type for the package that all element types are subtyped off of. The parameters have the following general meaning.
$D$ - Dimension
$V$ - Number of vertices
$E$ - Number of edges
$F$ - Number of faces
$I$ - Interpolation type
$P$ - Polynomial degree
$Q$ - quadrature degree
There are some useful methods associated with this abstract type such as
ReferenceFiniteElements.dimension — Functiondimension(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
Returns dimension D.
ReferenceFiniteElements.num_vertices — Functionnum_vertices(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
ReferenceFiniteElements.num_edges — Functionnum_edges(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
ReferenceFiniteElements.num_faces — Functionnum_faces(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
ReferenceFiniteElements.interpolation_type — Functioninterpolation_type(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
Returns the interpolation type $I$.
ReferenceFiniteElements.polynomial_degree — Functionpolynomial_degree(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
Returns the interpolation polynomial degree $P$.
polynomial_degree(
_::Type{<:ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}}
) -> Any
Returns the interpolation polynomial degree $P$.
ReferenceFiniteElements.quadrature_degree — Functionquadrature_degree(
_::ReferenceFiniteElements.AbstractElementType{D, V, E, F, I, P, Q}
) -> Any
Return the quadrature degree $Q$
That can fetch the parameteric types.
Other useful methods associated with this abstract type are the following which can be used to query information about the element topology.
ReferenceFiniteElements.num_interior_vertices — FunctionReferenceFiniteElements.num_quadrature_points — FunctionReferenceFiniteElements.num_shape_functions — Functionnum_shape_functions(
e::ReferenceFiniteElements.AbstractElementType{D, V, E, F, Lagrange, P, Q}
) -> Any
ReferenceFiniteElements.num_vertices_per_edge — FunctionReferenceFiniteElements.num_vertices_per_face — FunctionElement subtypes
Below are additional abstract types subtyped off of AbstractElementType for element topologies of different dimensions and further subtyped based on common element topologies.
0-Dimensional Element types
Different types of 0-D elements (e.g. vertices of various implementations) can be implemented by subtyping off of the abstract type
ReferenceFiniteElements.AbstractVertex — Typeabstract type AbstractVertex{I, P, Q} <: ReferenceFiniteElements.AbstractElementType{0, 1, 0, 0, I, P, Q}1-Dimensional Element types
Different types of 1-D elements (e.g. edges, sides, lines, etc. of various implementations) can be implemented by subtyping off of the abstract type
ReferenceFiniteElements.AbstractEdge — Typeabstract type AbstractEdge{V, I, P, Q} <: ReferenceFiniteElements.AbstractElementType{1, V, 1, 0, I, P, Q}2-Dimensional Element types
Different types of 2-D elements (e.g. faces, triangles, quads, polygons, etc. of various implementations) can be implemented by subtyping off of the abstract type
ReferenceFiniteElements.AbstractFace — Typeabstract type AbstractFace{V, E, I, P, Q} <: ReferenceFiniteElements.AbstractElementType{2, V, E, 1, I, P, Q}There are also various subtypes of this type including
ReferenceFiniteElements.AbstractQuad — Typeabstract type AbstractQuad{V, I, P, Q} <: ReferenceFiniteElements.AbstractFace{V, 4, I, P, Q}ReferenceFiniteElements.AbstractTri — Typeabstract type AbstractTri{V, I, P, Q} <: ReferenceFiniteElements.AbstractFace{V, 3, I, P, Q}3-Dimensional Element types
Different types of 3-D elements (e.g. volumes, hexes, tets, etc. of various implementations) can be implemented by subtyping off of the abstract type
ReferenceFiniteElements.AbstractVolume — Typeabstract type AbstractVolume{V, E, F, I, P, Q} <: ReferenceFiniteElements.AbstractElementType{3, V, E, F, I, P, Q}There are also various subtypes of this type including
ReferenceFiniteElements.AbstractHex — Typeabstract type AbstractHex{V, I, P, Q} <: ReferenceFiniteElements.AbstractVolume{V, 12, 6, I, P, Q}ReferenceFiniteElements.AbstractTet — Typeabstract type AbstractTet{V, I, P, Q} <: ReferenceFiniteElements.AbstractVolume{V, 6, 4, I, P, Q}Abstract Types for Storage Containers
ReferenceFiniteElements.AbstractInterpolationType — Typeabstract type AbstractInterpolationTypeReferenceFiniteElements.AbstractInterpolantsContainer — Typeabstract type AbstractInterpolantsContainer{I}