2 #ifndef DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
3 #define DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
5 #include <dune/common/static_assert.hh>
6 #include <dune/grid/common/capabilities.hh>
31 template<
typename GV,
int dim, GeometryType::BasicType basic_type,
typename D,
typename R, std::
size_t k>
32 struct RaviartThomasLocalFiniteElementMapBaseSelector
34 dune_static_assert((
AlwaysFalse<GV>::value),
"The requested type of Raviart-Thomas element is not implemented, sorry!");
42 template<
typename GV,
typename D,
typename R>
43 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::simplex,D,R,0>
45 typedef RT0Simplex2DLocalFiniteElementMap<GV,D,R> type;
48 template<
typename GV,
typename D,
typename R>
49 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::simplex,D,R,1>
51 typedef RT1Simplex2DLocalFiniteElementMap<GV,D,R> type;
55 template<
typename GV,
typename D,
typename R>
56 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,0>
58 typedef RT0Cube2DLocalFiniteElementMap<GV,D,R> type;
61 template<
typename GV,
typename D,
typename R>
62 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,1>
64 typedef RT1Cube2DLocalFiniteElementMap<GV,D,R> type;
67 template<
typename GV,
typename D,
typename R>
68 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,2>
70 typedef RT2Cube2DLocalFiniteElementMap<GV,D,R> type;
74 template<
typename GV,
typename D,
typename R>
75 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::cube,D,R,0>
77 typedef RT0Cube3DLocalFiniteElementMap<GV,D,R> type;
80 template<
typename GV,
typename D,
typename R>
81 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::cube,D,R,1>
83 typedef RT1Cube3DLocalFiniteElementMap<GV,D,R> type;
113 template<
typename GV,
117 GeometryType::BasicType basic_type = BasicTypeFromDimensionAndTopologyId<
119 Capabilities::hasSingleGeometryType<typename GV::Grid>::topologyId
123 public detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type
130 : detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type(gv)
138 template<
typename GV,
typename D,
typename R, std::
size_t k>
139 class RaviartThomasLocalFiniteElementMap<GV,D,R,k,GeometryType::none>
142 "Your chosen grid does not export a usable topology id for its cells."
143 "Please provide the correct GeometryType::BasicType as an additional template parameter.");
151 #endif // DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
RaviartThomasLocalFiniteElementMap(const GV &gv)
Constructs a finite element map on the GridView gv.
Definition: raviartthomasfem.hh:129
Raviart-Thomas elements of order k.
Definition: raviartthomasfem.hh:122
static const unsigned int value
Definition: gridfunctionspace/tags.hh:175