Abstract types
Element abstract type hierarchy
The root of the type hierarchy tree in ReferenceFiniteElements is the following abstract type.
ReferenceFiniteElements.AbstractElementType — Type
abstract type AbstractElementType{PT<:ReferenceFiniteElements.AbstractPolynomialType, PD}Base type for the package that all element types are subtyped off of. The parameters have the following general meaning.
$PT$ - Polynomial type
$PD$ - Cell polynomial degree
Interpolants abstract types
ReferenceFiniteElements.AbstractInterpolants — Type
abstract type AbstractInterpolantsReferenceFiniteElements.AbstractPolynomialType — Type
abstract type AbstractPolynomialTypeReferenceFiniteElements.polynomial_degree — Function
polynomial_degree(
_::ReferenceFiniteElements.AbstractElementType{PT, PD}
) -> Any
Returns the polynomial degree $CD$.
ReferenceFiniteElements.polynomial_type — Function
polynomial_type(
_::ReferenceFiniteElements.AbstractElementType{PT, PD}
) -> Any
Returns the polynomial type $PT$.
Quadrature abstract types
ReferenceFiniteElements.AbstractQuadratureType — Type
abstract type AbstractQuadratureTypeReferenceFiniteElements.cell_quadrature_degree — Function
cell_quadrature_degree(
q_rule::ReferenceFiniteElements.AbstractQuadratureType
) -> Any
ReferenceFiniteElements.surface_quadrature_degree — Function
surface_quadrature_degree(
q_rule::ReferenceFiniteElements.AbstractQuadratureType
) -> Any
Topology Interface
The below methods must be implemented to define the element toplogy.
ReferenceFiniteElements.dimension — Function
ReferenceFiniteElements.edge_vertices — Function
ReferenceFiniteElements.face_vertices — Function
ReferenceFiniteElements.num_boundaries — Function
ReferenceFiniteElements.num_edges — Function
ReferenceFiniteElements.num_faces — Function
Element 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 — Type
abstract type AbstractVertex <: ReferenceFiniteElements.AbstractElementType{ReferenceFiniteElements.NoInterpolation, 0}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 — Type
abstract type AbstractEdge{PT, PD} <: ReferenceFiniteElements.AbstractElementType{PT, PD}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 — Type
abstract type AbstractFace{PT, PD} <: ReferenceFiniteElements.AbstractElementType{PT, PD}There are also various subtypes of this type including
ReferenceFiniteElements.AbstractQuad — Type
abstract type AbstractQuad{PT, PD} <: ReferenceFiniteElements.AbstractFace{PT, PD}ReferenceFiniteElements.AbstractTri — Type
abstract type AbstractTri{PT, PD} <: ReferenceFiniteElements.AbstractFace{PT, PD}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 — Type
abstract type AbstractVolume{PT, PD} <: ReferenceFiniteElements.AbstractElementType{PT, PD}There are also various subtypes of this type including
ReferenceFiniteElements.AbstractHex — Type
abstract type AbstractHex{PT, PD} <: ReferenceFiniteElements.AbstractVolume{PT, PD}ReferenceFiniteElements.AbstractPyramid — Type
abstract type AbstractPyramid{PT, PD} <: ReferenceFiniteElements.AbstractVolume{PT, PD}ReferenceFiniteElements.AbstractTet — Type
abstract type AbstractTet{PT, PD} <: ReferenceFiniteElements.AbstractVolume{PT, PD}ReferenceFiniteElements.AbstractWedge — Type
abstract type AbstractWedge{PT, PD} <: ReferenceFiniteElements.AbstractVolume{PT, PD}