5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
11#include <dune/geometry/type.hh>
12#include <dune/geometry/typeindex.hh>
30 template<
class D,
class R, std::
size_t dim, std::
size_t order>
31 struct ImplementedLagrangeFiniteElements :
public FixedDimLocalGeometryTypeIndex<dim>
33 using FixedDimLocalGeometryTypeIndex<dim>::index;
34 static auto getImplementations()
36 return std::make_tuple(
37 std::make_pair(index(GeometryTypes::simplex(dim)), []() {
return LagrangeSimplexLocalFiniteElement<D,R,dim,order>(); }),
38 std::make_pair(index(GeometryTypes::cube(dim)), []() {
return LagrangeCubeLocalFiniteElement<D,R,dim,order>(); })
43 template<
class D,
class R, std::
size_t dim>
44 struct ImplementedLagrangeFiniteElements<D,R,dim,0> :
public FixedDimLocalGeometryTypeIndex<dim>
46 using FixedDimLocalGeometryTypeIndex<dim>::index;
47 static auto getImplementations()
49 return std::make_tuple(
50 std::make_pair(index(GeometryTypes::simplex(dim)), []() {
return P0LocalFiniteElement<D,R,dim>(GeometryTypes::simplex(dim)); }),
51 std::make_pair(index(GeometryTypes::cube(dim)), []() {
return P0LocalFiniteElement<D,R,dim>(GeometryTypes::cube(dim)); }),
52 std::make_pair(index(GeometryTypes::none(dim)), []() {
return P0LocalFiniteElement<D,R,dim>(GeometryTypes::none(dim)); })
57 template<
class D,
class R>
58 struct ImplementedLagrangeFiniteElements<D,R,3,0> :
public FixedDimLocalGeometryTypeIndex<3>
60 using FixedDimLocalGeometryTypeIndex<3>::index;
61 static auto getImplementations()
63 return std::make_tuple(
64 std::make_pair(index(GeometryTypes::tetrahedron), []() {
return P0LocalFiniteElement<D,R,3>(GeometryTypes::tetrahedron); }),
65 std::make_pair(index(GeometryTypes::hexahedron), []() {
return P0LocalFiniteElement<D,R,3>(GeometryTypes::hexahedron); }),
66 std::make_pair(index(GeometryTypes::prism), []() {
return P0LocalFiniteElement<D,R,3>(GeometryTypes::prism); }),
67 std::make_pair(index(GeometryTypes::pyramid), []() {
return P0LocalFiniteElement<D,R,3>(GeometryTypes::pyramid); })
72 template<
class D,
class R>
73 struct ImplementedLagrangeFiniteElements<D,R,3,1> :
public FixedDimLocalGeometryTypeIndex<3>
75 using FixedDimLocalGeometryTypeIndex<3>::index;
76 static auto getImplementations()
78 return std::make_tuple(
79 std::make_pair(index(GeometryTypes::tetrahedron), []() {
return LagrangeSimplexLocalFiniteElement<D,R,3,1>(); }),
80 std::make_pair(index(GeometryTypes::hexahedron), []() {
return LagrangeCubeLocalFiniteElement<D,R,3,1>(); }),
81 std::make_pair(index(GeometryTypes::prism), []() {
return LagrangePrismLocalFiniteElement<D,R,1>(); }),
82 std::make_pair(index(GeometryTypes::pyramid), []() {
return LagrangePyramidLocalFiniteElement<D,R,1>(); })
87 template<
class D,
class R>
88 struct ImplementedLagrangeFiniteElements<D,R,3,2> :
public FixedDimLocalGeometryTypeIndex<3>
90 using FixedDimLocalGeometryTypeIndex<3>::index;
91 static auto getImplementations()
93 return std::make_tuple(
94 std::make_pair(index(GeometryTypes::tetrahedron), []() {
return LagrangeSimplexLocalFiniteElement<D,R,3,2>(); }),
95 std::make_pair(index(GeometryTypes::hexahedron), []() {
return LagrangeCubeLocalFiniteElement<D,R,3,2>(); }),
96 std::make_pair(index(GeometryTypes::prism), []() {
return LagrangePrismLocalFiniteElement<D,R,2>(); }),
97 std::make_pair(index(GeometryTypes::pyramid), []() {
return LagrangePyramidLocalFiniteElement<D,R,2>(); })
117template<
class D,
class R, std::
size_t dim, std::
size_t order>
Definition bdfmcube.hh:18
A cache storing a compile time selection of local finite element implementations.
Definition localfiniteelementvariantcache.hh:68