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 AbstractInterpolationType
ReferenceFiniteElements.AbstractInterpolantsContainer
— Typeabstract type AbstractInterpolantsContainer{I}