Interpolations
Ferrite.Interpolation — Type
Interpolation{refshape, order}()Abstract type for interpolations defined on refshape (see AbstractRefShape). order corresponds to the order of the interpolation. The interpolation is used to define shape functions to interpolate a function between nodes.
The following interpolations are implemented:
LagrangeDiscontinuousLagrangeSerendipityBubbleEnrichedLagrangeCrouzeixRaviartRannacherTurekRaviartThomasBrezziDouglasMariniNedelec
See the docstring of each interpolation for the supported reference shapes and orders. Scalar interpolations can be vectorized, i.e. used for each component of a vector field, see VectorizedInterpolation.
FerriteInterpolations.jl implements many more interpolations that are compatible with Ferrite.
Examples
julia> ip = Lagrange{RefTriangle, 2}()Lagrange{RefTriangle, 2}()julia> getnbasefunctions(ip)6Ferrite.getnbasefunctions — Method
getnbasefunctions(ip::Interpolation)Return the number of base functions for the interpolation ip.
Ferrite.getrefdim — Method
Ferrite.getrefdim(::Interpolation)Return the dimension of the reference element for a given interpolation.
Ferrite.getrefshape — Function
Ferrite.getrefshape(::Interpolation)::AbstractRefShapeReturn the reference element shape of the interpolation.
Ferrite.getorder — Function
Ferrite.getorder(::Interpolation)Return order of the interpolation.
Scalar interpolations
Ferrite.Lagrange — Type
Lagrange{refshape, order} <: ScalarInterpolationStandard continuous Lagrange polynomials with equidistant node placement.
See also the Lagrange element on DefElement.
Ferrite.DiscontinuousLagrange — Type
DiscontinuousLagrange{refshape, order} <: ScalarInterpolationPiecewise discontinuous Lagrange basis via Gauss-Lobatto points.
See also the discontinuous Lagrange element on DefElement.
Ferrite.Serendipity — Type
Serendipity{refshape, order} <: ScalarInterpolationSerendipity element on hypercubes. Currently only second order variants are implemented.
See also the serendipity element on DefElement.
Ferrite.BubbleEnrichedLagrange — Type
BubbleEnrichedLagrange{refshape, order} <: ScalarInterpolationLagrange element with bubble stabilization.
Currently only BubbleEnrichedLagrange{RefTriangle, 1} is implemented.
See also the bubble enriched Lagrange element on DefElement.
Ferrite.CrouzeixRaviart — Type
CrouzeixRaviart{refshape, order} <: ScalarInterpolationClassical non-conforming Crouzeix–Raviart element.
For details we refer to the original paper [13].
See also the Crouzeix–Raviart element on DefElement.
Ferrite.RannacherTurek — Type
RannacherTurek{refshape, order} <: ScalarInterpolationClassical non-conforming Rannacher-Turek element.
This element is basically the idea from Crouzeix and Raviart applied to hypercubes. For details see the original paper [14].
See also the Rannacher–Turek element on DefElement.
Vector interpolations
Ferrite.VectorizedInterpolation — Type
VectorizedInterpolation{vdim}(ip::ScalarInterpolation)
VectorizedInterpolation(ip::ScalarInterpolation)
ip^vdimVector valued interpolation with vdim components where each component is interpolated using the scalar interpolation ip. If vdim is not given it defaults to the reference dimension of ip. A VectorizedInterpolation is typically constructed using the ^ syntax, e.g. Lagrange{RefTriangle, 2}()^2.
Examples
julia> ip = Lagrange{RefTriangle, 2}()^2Lagrange{RefTriangle, 2}()^2julia> getnbasefunctions(ip)12Ferrite.RaviartThomas — Type
RaviartThomas{refshape, order} <: VectorInterpolationRaviart-Thomas element (of the first kind) for $H(\mathrm{div})$-conforming discretizations, i.e. the normal component is continuous across cell boundaries.
The following combinations of reference shape and order are implemented: RefTriangle (order 1 and 2), RefQuadrilateral (order 1), RefTetrahedron (order 1), and RefHexahedron (order 1).
See also the Raviart–Thomas element on DefElement.
Ferrite.BrezziDouglasMarini — Type
BrezziDouglasMarini{refshape, order} <: VectorInterpolationBrezzi-Douglas-Marini element for $H(\mathrm{div})$-conforming discretizations, i.e. the normal component is continuous across cell boundaries.
Currently only BrezziDouglasMarini{RefTriangle, 1} is implemented.
See also the Brezzi–Douglas–Marini element on DefElement.
Ferrite.Nedelec — Type
Nedelec{refshape, order} <: VectorInterpolationNédélec element (of the first kind) for $H(\mathrm{curl})$-conforming discretizations, i.e. the tangential component is continuous across cell boundaries.
The following combinations of reference shape and order are implemented: RefTriangle (order 1 and 2), RefQuadrilateral (order 1), RefTetrahedron (order 1), and RefHexahedron (order 1).
See also the Nédélec (first kind) element on DefElement.