Dune Core Modules (2.7.0)

raviartthomaslfecache.hh
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
4#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
5
6#include <tuple>
7#include <utility>
8
11
12#include <dune/localfunctions/raviartthomas.hh>
13#include <dune/localfunctions/common/localfiniteelementvariantcache.hh>
14
15namespace Dune {
16
17namespace Impl {
18
19 // Provide implemented Raviart-Thomas local finite elements
20
21 template<class D, class R, std::size_t dim, std::size_t order>
22 struct ImplementedRaviartThomasLocalFiniteElements
23 {};
24
25 template<class D, class R>
26 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,0> : public FixedDimLocalGeometryTypeIndex<2>
27 {
28 using FixedDimLocalGeometryTypeIndex<2>::index;
29 static auto getImplementations()
30 {
31 return std::make_tuple(
32 std::make_pair(index(GeometryTypes::triangle), []() { return RT02DLocalFiniteElement<D,R>(); }),
33 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT0Cube2DLocalFiniteElement<D,R>(); })
34 );
35 }
36 };
37
38 template<class D, class R>
39 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,1> : public FixedDimLocalGeometryTypeIndex<2>
40 {
41 using FixedDimLocalGeometryTypeIndex<2>::index;
42 static auto getImplementations()
43 {
44 return std::make_tuple(
45 std::make_pair(index(GeometryTypes::triangle), []() { return RT12DLocalFiniteElement<D,R>(); }),
46 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT1Cube2DLocalFiniteElement<D,R>(); })
47 );
48 }
49 };
50
51 template<class D, class R>
52 struct ImplementedRaviartThomasLocalFiniteElements<D,R,2,2> : public FixedDimLocalGeometryTypeIndex<2>
53 {
54 using FixedDimLocalGeometryTypeIndex<2>::index;
55 static auto getImplementations()
56 {
57 return std::make_tuple(
58 std::make_pair(index(GeometryTypes::quadrilateral), []() { return RT2Cube2DLocalFiniteElement<D,R>(); })
59 );
60 }
61 };
62
63 template<class D, class R>
64 struct ImplementedRaviartThomasLocalFiniteElements<D,R,3,0> : public FixedDimLocalGeometryTypeIndex<3>
65 {
66 using FixedDimLocalGeometryTypeIndex<3>::index;
67 static auto getImplementations()
68 {
69 return std::make_tuple(
70 std::make_pair(index(GeometryTypes::hexahedron), []() { return RT0Cube3DLocalFiniteElement<D,R>(); })
71 );
72 }
73 };
74
75 template<class D, class R>
76 struct ImplementedRaviartThomasLocalFiniteElements<D,R,3,1> : public FixedDimLocalGeometryTypeIndex<3>
77 {
78 using FixedDimLocalGeometryTypeIndex<3>::index;
79 static auto getImplementations()
80 {
81 return std::make_tuple(
82 std::make_pair(index(GeometryTypes::hexahedron), []() { RT1Cube3DLocalFiniteElement<D,R>(); })
83 );
84 }
85 };
86
87} // namespace Impl
88
89
90
100template<class D, class R, std::size_t dim, std::size_t order>
102
103} // namespace Dune
104
105#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
A cache storing a compile time selection of local finite element implementations.
Definition: localfiniteelementvariantcache.hh:66
constexpr GeometryType triangle
GeometryType representing a triangle.
Definition: type.hh:809
constexpr GeometryType quadrilateral
GeometryType representing a quadrilateral (a square).
Definition: type.hh:815
constexpr GeometryType hexahedron
GeometryType representing a hexahedron.
Definition: type.hh:839
Dune namespace.
Definition: alignedallocator.hh:14
A unique label for each type of element that can occur in a grid.
Helper classes to provide indices for geometrytypes for use in a vector.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 15, 22:36, 2024)