dune-pdelab 2.8
Loading...
Searching...
No Matches
raviartthomasfem.hh
Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil -*-
2#ifndef DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
3#define DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
4
5#include <dune/grid/common/capabilities.hh>
6
16
17
18namespace Dune {
19 namespace PDELab {
20
21#ifndef DOXYGEN
22
23 namespace detail {
24
26
31 template<typename GV, int dim, GeometryType::BasicType basic_type, typename D, typename R, std::size_t k>
32 struct RaviartThomasLocalFiniteElementMapBaseSelector
33 {
34 static_assert((AlwaysFalse<GV>::value),"The requested type of Raviart-Thomas element is not implemented, sorry!");
35 };
36
37
38 // ********************************************************************************
39 // Specializations
40 // ********************************************************************************
41
42 template<typename GV, typename D, typename R>
43 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::simplex,D,R,0>
44 {
45 typedef RT0Simplex2DLocalFiniteElementMap<GV,D,R> type;
46 };
47
48 template<typename GV, typename D, typename R>
49 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::simplex,D,R,1>
50 {
51 typedef RT1Simplex2DLocalFiniteElementMap<GV,D,R> type;
52 };
53
54
55 template<typename GV, typename D, typename R>
56 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,0>
57 {
58 typedef RT0Cube2DLocalFiniteElementMap<GV,D,R> type;
59 };
60
61 template<typename GV, typename D, typename R>
62 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,1>
63 {
64 typedef RT1Cube2DLocalFiniteElementMap<GV,D,R> type;
65 };
66
67 template<typename GV, typename D, typename R>
68 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,2>
69 {
70 typedef RT2Cube2DLocalFiniteElementMap<GV,D,R> type;
71 };
72
73
74 template<typename GV, typename D, typename R>
75 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::simplex,D,R,0>
76 {
77 typedef RT0Simplex3DLocalFiniteElementMap<GV,D,R> type;
78 };
79
80
81 template<typename GV, typename D, typename R>
82 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::cube,D,R,0>
83 {
84 typedef RT0Cube3DLocalFiniteElementMap<GV,D,R> type;
85 };
86
87 template<typename GV, typename D, typename R>
88 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::cube,D,R,1>
89 {
90 typedef RT1Cube3DLocalFiniteElementMap<GV,D,R> type;
91 };
92
93 } // end namespace detail
94
95#endif // DOXYGEN
96
97
99
120 template<typename GV,
121 typename D,
122 typename R,
123 std::size_t k,
124 GeometryType::BasicType basic_type = BasicTypeFromDimensionAndTopologyId<
125 GV::dimension,
127 >::value
128 >
130 public detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type
131 {
132
133 public:
134
136 static constexpr int dimension = GV::dimension;
137
140 : detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type(gv)
141 {}
142
143 };
144
145#ifndef DOXYGEN
146
147 // Specialization for grids that don't provide a valid topology id for their cells.
148 template<typename GV, typename D, typename R, std::size_t k>
149 class RaviartThomasLocalFiniteElementMap<GV,D,R,k,GeometryType::none>
150 {
151 static_assert((AlwaysFalse<GV>::value),
152 "Your chosen grid does not export a usable topology id for its cells."
153 "Please provide the correct GeometryType::BasicType as an additional template parameter.");
154 };
155
156#endif // DOXYGEN
157
158 } // end namespace PDELab
159} // end namespace Dune
160
161#endif // DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
For backward compatibility – Do not use this!
static const unsigned int topologyId
Raviart-Thomas elements of order k.
Definition raviartthomasfem.hh:131
static constexpr int dimension
The dimension of the finite elements returned by this map.
Definition raviartthomasfem.hh:136
RaviartThomasLocalFiniteElementMap(const GV &gv)
Constructs a finite element map on the GridView gv.
Definition raviartthomasfem.hh:139
static const unsigned int value
Definition gridfunctionspace/tags.hh:139