Interpolation
Ferrite.Interpolation — TypeInterpolation{ref_shape, order}()Abstract type for interpolations defined on ref_shape (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:
Lagrange{RefLine, 1}Lagrange{RefLine, 2}Lagrange{RefQuadrilateral, 1}Lagrange{RefQuadrilateral, 2}Lagrange{RefQuadrilateral, 3}Lagrange{RefTriangle, 1}Lagrange{RefTriangle, 2}Lagrange{RefTriangle, 3}Lagrange{RefTriangle, 4}Lagrange{RefTriangle, 5}BubbleEnrichedLagrange{RefTriangle, 1}CrouzeixRaviart{RefTriangle, 1}CrouzeixRaviart{RefTetrahedron, 1}RannacherTurek{RefQuadrilateral, 1}RannacherTurek{RefHexahedron, 1}Lagrange{RefHexahedron, 1}Lagrange{RefHexahedron, 2}Lagrange{RefTetrahedron, 1}Lagrange{RefTetrahedron, 2}Lagrange{RefPrism, 1}Lagrange{RefPrism, 2}Lagrange{RefPyramid, 1}Lagrange{RefPyramid, 2}Serendipity{RefQuadrilateral, 2}Serendipity{RefHexahedron, 2}Nedelec{RefTriangle, 1}Nedelec{RefTriangle, 2}Nedelec{RefQuadrilateral, 1}Nedelec{RefTetrahedron, 1}Nedelec{RefHexahedron, 1}RaviartThomas{RefTriangle, 1}RaviartThomas{RefTriangle, 2}RaviartThomas{RefQuadrilateral, 1}RaviartThomas{RefTetrahedron, 1}RaviartThomas{RefHexahedron, 1}BrezziDouglasMarini{RefTriangle, 1}
Additionally, DiscontinuousLagrange is implemented for the same reference shapes and orders as Lagrange, as well as for order = 0 on any reference shape.
Examples
julia> ip = Lagrange{RefTriangle, 2}()
Lagrange{RefTriangle, 2}()
julia> getnbasefunctions(ip)
6Ferrite.getnbasefunctions — FunctionFerrite.getnbasefunctions(ip::Interpolation)Return the number of base functions for the interpolation ip.
Ferrite.getrefdim — MethodFerrite.getrefdim(::Interpolation)Return the dimension of the reference element for a given interpolation.
Ferrite.getrefshape — FunctionFerrite.getrefshape(::Interpolation)::AbstractRefShapeReturn the reference element shape of the interpolation.
Ferrite.getorder — FunctionFerrite.getorder(::Interpolation)Return order of the interpolation.
Implemented interpolations:
Ferrite.Lagrange — TypeLagrange{refshape, order} <: ScalarInterpolationStandard continuous Lagrange polynomials with equidistant node placement.
Ferrite.Serendipity — TypeSerendipity{refshape, order} <: ScalarInterpolationSerendipity element on hypercubes. Currently only second order variants are implemented.
Ferrite.DiscontinuousLagrange — TypePiecewise discontinuous Lagrange basis via Gauss-Lobatto points.
Ferrite.BubbleEnrichedLagrange — TypeLagrange element with bubble stabilization.
Ferrite.CrouzeixRaviart — TypeCrouzeixRaviart{refshape, order} <: ScalarInterpolationClassical non-conforming Crouzeix–Raviart element.
For details we refer to the original paper [10].
Ferrite.RannacherTurek — TypeRannacherTurek{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 [11].