|
dune-localfunctions
2.11
|
Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order. More...
#include <dune/localfunctions/lagrange/lagrangesimplex.hh>
Public Types | |
| using | Traits = LocalFiniteElementTraits< Impl::LagrangeSimplexLocalBasis< D, R, d, k >, Impl::LagrangeSimplexLocalCoefficients< d, k >, Impl::LagrangeSimplexLocalInterpolation< Impl::LagrangeSimplexLocalBasis< D, R, d, k > > > |
| Export number types, dimensions, etc. More... | |
Public Member Functions | |
| LagrangeSimplexLocalFiniteElement () | |
| template<typename VertexMap > | |
| LagrangeSimplexLocalFiniteElement (const VertexMap &vertexmap) | |
| Constructs a finite element given a vertex reordering. More... | |
| const Traits::LocalBasisType & | localBasis () const |
| Returns the local basis, i.e., the set of shape functions. More... | |
| const Traits::LocalCoefficientsType & | localCoefficients () const |
| Returns the assignment of the degrees of freedom to the element subentities. More... | |
| const Traits::LocalInterpolationType & | localInterpolation () const |
| Returns object that evaluates degrees of freedom. More... | |
Static Public Member Functions | |
| static constexpr std::size_t | size () |
| The number of shape functions. More... | |
| static constexpr GeometryType | type () |
| The reference element that the local finite element is defined on. More... | |
Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
| D | type used for domain coordinates |
| R | type used for function values |
| d | dimension of the reference element |
| k | polynomial order |
The Lagrange basis functions
of order
on the unit simplex
are implemented as
where
is the
-th basis function on the scaled simplex
. On
the uniform Lagrange points of order
are exactly the points
with non-negative integer coordinates in
. Using the lexicographic enumeration of those points we can identify each
with the flat index
of the Lagrange node and associated basis function.
Since we can map any point
to its barycentric coordinates
we define for any such point its auxiliary
-th coordinate
and use this in particular for Lagrange points
. Then the Lagrange basis function on
associated to the Lagrange point
is given by
where we used the barycentric coordinates of
and
and the univariate Lagrange polynomials
This factorization can be interpreted geometrically. To this end note that any component
of the barycentric coordinates is associated to a vertex of the simplex and thus to the opposite facet. Furthermore the Lagrange nodes are all located on hyperplanes parallel to those facets. In the factorized form the term
guarantees that
is zero on any of these hyperplane that is parallel to the facet associated with
and lying between the Lagrange node
and this facet (excluding
and including the facet).
Using the factorized form, evaluating all basis functions
at a point
requires to first evaluate
for all
and
and then computing the products
for all admissible multi indices (or, equivalently, Lagrange nodes in barycentric coordinates)
with
. The evaluation of the univariate Lagrange polynomials can be done efficiently using the recursion
| using Dune::LagrangeSimplexLocalFiniteElement< D, R, d, k >::Traits = LocalFiniteElementTraits<Impl::LagrangeSimplexLocalBasis<D,R,d,k>, Impl::LagrangeSimplexLocalCoefficients<d,k>, Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,d,k> > > |
Export number types, dimensions, etc.
|
inline |
Default-construct the finite element
|
inline |
Constructs a finite element given a vertex reordering.
|
inline |
Returns the local basis, i.e., the set of shape functions.
|
inline |
Returns the assignment of the degrees of freedom to the element subentities.
|
inline |
Returns object that evaluates degrees of freedom.
|
inlinestatic |
The number of shape functions.
|
inlinestatic |
The reference element that the local finite element is defined on.
1.8.14