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)
6
Ferrite.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)::AbstractRefShape
Return the reference element shape of the interpolation.
Ferrite.getorder
— FunctionFerrite.getorder(::Interpolation)
Return order of the interpolation.
Implemented interpolations:
Ferrite.Lagrange
— TypeLagrange{refshape, order} <: ScalarInterpolation
Standard continuous Lagrange polynomials with equidistant node placement.
Ferrite.Serendipity
— TypeSerendipity{refshape, order} <: ScalarInterpolation
Serendipity 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} <: ScalarInterpolation
Classical non-conforming Crouzeix–Raviart element.
For details we refer to the original paper [10].
Ferrite.RannacherTurek
— TypeRannacherTurek{refshape, order} <: ScalarInterpolation
Classical 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].