2#ifndef DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
3#define DUNE_PDELAB_FINITEELEMENTMAP_RAVIARTTHOMASFEM_HH
7#include <dune/pdelab/common/topologyutility.hh>
8#include <dune/pdelab/finiteelementmap/rt0simplex2dfem.hh>
9#include <dune/pdelab/finiteelementmap/rt1simplex2dfem.hh>
10#include <dune/pdelab/finiteelementmap/rt0cube2dfem.hh>
11#include <dune/pdelab/finiteelementmap/rt1cube2dfem.hh>
12#include <dune/pdelab/finiteelementmap/rt2cube2dfem.hh>
13#include <dune/pdelab/finiteelementmap/rt0simplex3dfem.hh>
14#include <dune/pdelab/finiteelementmap/rt0cube3dfem.hh>
15#include <dune/pdelab/finiteelementmap/rt1cube3dfem.hh>
31 template<
typename GV,
int dim, GeometryType::BasicType basic_type,
typename D,
typename R, std::
size_t k>
32 struct RaviartThomasLocalFiniteElementMapBaseSelector
34 static_assert((AlwaysFalse<GV>::value),
"The requested type of Raviart-Thomas element is not implemented, sorry!");
42 template<
typename GV,
typename D,
typename R>
45 typedef RT0Simplex2DLocalFiniteElementMap<GV,D,R> type;
48 template<
typename GV,
typename D,
typename R>
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>
77 typedef RT0Simplex3DLocalFiniteElementMap<GV,D,R> type;
81 template<
typename GV,
typename D,
typename R>
82 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,
GeometryType::
cube,D,R,0>
84 typedef RT0Cube3DLocalFiniteElementMap<GV,D,R> type;
87 template<
typename GV,
typename D,
typename R>
88 struct RaviartThomasLocalFiniteElementMapBaseSelector<GV,3,
GeometryType::
cube,D,R,1>
90 typedef RT1Cube3DLocalFiniteElementMap<GV,D,R> type;
120 template<
typename GV,
126 Capabilities::hasSingleGeometryType<typename GV::Grid>::topologyId
130 public detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::dimension,basic_type,D,R,k>::type
140 : detail::RaviartThomasLocalFiniteElementMapBaseSelector<GV,GV::
dimension,basic_type,D,R,k>::type(gv)
148 template<
typename GV,
typename D,
typename R, std::
size_t k>
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.");
Unique label for each type of entities that can occur in DUNE grids.
Definition: type.hh:114
BasicType
Each entity can be tagged by one of these basic types plus its space dimension.
Definition: type.hh:120
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
A set of traits classes to store static information about grid implementation.
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
constexpr GeometryType cube(unsigned int dim)
Returns a GeometryType representing a hypercube of dimension dim.
Definition: type.hh:462
constexpr GeometryType none(unsigned int dim)
Returns a GeometryType representing a singular of dimension dim.
Definition: type.hh:471
constexpr GeometryType simplex(unsigned int dim)
Returns a GeometryType representing a simplex of dimension dim.
Definition: type.hh:453
Dune namespace.
Definition: alignedallocator.hh:13
template which always yields a false value
Definition: typetraits.hh:124