dune-pdelab 2.7-git
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
15
16
17namespace Dune {
18 namespace PDELab {
19
20#ifndef DOXYGEN
21
22 namespace detail {
23
25
30 template<typename GV, int dim, GeometryType::BasicType basic_type, typename D, typename R, std::size_t k>
31 struct RaviartThomasLocalFiniteElementMapBaseSelector
32 {
33 static_assert((AlwaysFalse<GV>::value),"The requested type of Raviart-Thomas element is not implemented, sorry!");
34 };
35
36
37 // ********************************************************************************
38 // Specializations
39 // ********************************************************************************
40
41 template<typename GV, typename D, typename R>
42 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::simplex,D,R,0>
43 {
44 typedef RT0Simplex2DLocalFiniteElementMap<GV,D,R> type;
45 };
46
47 template<typename GV, typename D, typename R>
48 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::simplex,D,R,1>
49 {
50 typedef RT1Simplex2DLocalFiniteElementMap<GV,D,R> type;
51 };
52
53
54 template<typename GV, typename D, typename R>
55 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,0>
56 {
57 typedef RT0Cube2DLocalFiniteElementMap<GV,D,R> type;
58 };
59
60 template<typename GV, typename D, typename R>
61 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,1>
62 {
63 typedef RT1Cube2DLocalFiniteElementMap<GV,D,R> type;
64 };
65
66 template<typename GV, typename D, typename R>
67 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,2,GeometryType::cube,D,R,2>
68 {
69 typedef RT2Cube2DLocalFiniteElementMap<GV,D,R> type;
70 };
71
72
73 template<typename GV, typename D, typename R>
74 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::cube,D,R,0>
75 {
76 typedef RT0Cube3DLocalFiniteElementMap<GV,D,R> type;
77 };
78
79 template<typename GV, typename D, typename R>
80 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,GeometryType::cube,D,R,1>
81 {
82 typedef RT1Cube3DLocalFiniteElementMap<GV,D,R> type;
83 };
84
85 } // end namespace detail
86
87#endif // DOXYGEN
88
89
91
112 template<typename GV,
113 typename D,
114 typename R,
115 std::size_t k,
116 GeometryType::BasicType basic_type = BasicTypeFromDimensionAndTopologyId<
117 GV::dimension,
118 Capabilities::hasSingleGeometryType<typename GV::Grid>::topologyId
119 >::value
120 >
122 public detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type
123 {
124
125 public:
126
128 static constexpr int dimension = GV::dimension;
129
132 : detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type(gv)
133 {}
134
135 };
136
137#ifndef DOXYGEN
138
139 // Specialization for grids that don't provide a valid topology id for their cells.
140 template<typename GV, typename D, typename R, std::size_t k>
141 class RaviartThomasLocalFiniteElementMap<GV,D,R,k,GeometryType::none>
142 {
143 static_assert((AlwaysFalse<GV>::value),
144 "Your chosen grid does not export a usable topology id for its cells."
145 "Please provide the correct GeometryType::BasicType as an additional template parameter.");
146 };
147
148#endif // DOXYGEN
149
150 } // end namespace PDELab
151} // end namespace Dune
152
153#endif // DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Raviart-Thomas elements of order k.
Definition: raviartthomasfem.hh:123
static constexpr int dimension
The dimension of the finite elements returned by this map.
Definition: raviartthomasfem.hh:128
RaviartThomasLocalFiniteElementMap(const GV &gv)
Constructs a finite element map on the GridView gv.
Definition: raviartthomasfem.hh:131
static const unsigned int value
Definition: gridfunctionspace/tags.hh:139