dune-multidomaingrid 2.10-git
Loading...
Searching...
No Matches
mdgridtraits.hh
Go to the documentation of this file.
1#ifndef DUNE_MULTIDOMAINGRID_MDGRIDTRAITS_HH
2#define DUNE_MULTIDOMAINGRID_MDGRIDTRAITS_HH
3
4#include <vector>
5#include <type_traits>
6
10
11namespace Dune {
12
13namespace mdgrid {
14
15template<int dim, int codim>
16struct AllCodims {
17 static const bool supported = true;
18};
19
20template<int dim, int codim>
22 static const bool supported = (codim == 0 || codim == dim);
23};
24
25template<int dim, std::size_t subDomainsPerCell, std::size_t subDomainCount, template<int dim_, int codim> class supportedCodims = AllCodims>
27
28 typedef int SubDomainIndex;
29 static const SubDomainIndex empty = -1;
30 static const int dimension = dim;
31
33
34 static constexpr bool maxSubDomainIndexIsStatic()
35 {
36 return true;
37 }
38
40 {
41 return subDomainCount;
42 }
43
45 typedef int SizeContainer;
47 typedef int SubDomainSet;
48 };
49
50 template<int codim>
57
58 template<int codim>
59 struct Codim : public std::conditional_t<supportedCodims<dim,codim>::supported,CodimBase<codim>,EmptyCodimBase> {
60 static const bool supported = supportedCodims<dim,codim>::supported;
61 };
62
63 template<int codim, typename SizeContainer>
64 void setupSizeContainer(SizeContainer&) const
65 {}
66
67};
68
69
70template<int dim, std::size_t subDomainsPerCell, template<int dim_, int codim> class supportedCodims = AllCodims>
72
73 typedef int SubDomainIndex;
74 inline static const SubDomainIndex empty = -1;
75 inline static const int dimension = dim;
76
78
79 static constexpr bool maxSubDomainIndexIsStatic()
80 {
81 return false;
82 }
83
84
86 {
87 return _subDomainCount;
88 }
89
91 typedef int SizeContainer;
93 typedef int SubDomainSet;
94
95 template<typename SC>
96 static void setupSizeContainer(const SC&, std::size_t)
97 {}
98
99 };
100
101 template<int codim>
114
115 template<int codim>
116 struct Codim : public std::conditional_t<supportedCodims<dim,codim>::supported,CodimBase<codim>,EmptyCodimBase> {
117 static const bool supported = supportedCodims<dim,codim>::supported;
118 };
119
123
124 template<int codim, typename SizeContainer>
125 void setupSizeContainer(SizeContainer& container) const
126 {
127 Codim<codim>::setupSizeContainer(container,_subDomainCount);
128 }
129
130private:
131
132 const std::size_t _subDomainCount;
133
134};
135
136
137template<int dim, std::size_t maxSubDomains, template<int dim_, int codim> class supportedCodims = AllCodims >
139
140 typedef unsigned int SubDomainIndex;
141 inline static const SubDomainIndex empty = ~SubDomainIndex(0); // this is not used, but has to be present to make the compiler happy
142 inline static const int dimension = dim;
143
144 inline static const std::size_t maxSubDomainsPerCell = maxSubDomains;
145
146 static constexpr bool maxSubDomainIndexIsStatic()
147 {
148 return true;
149 }
150
152 {
153 return maxSubDomains - 1;
154 }
155
157 typedef int SizeContainer;
159 typedef int SubDomainSet;
160 };
161
162 template<int codim>
169
170 template<int codim>
171 struct Codim : public std::conditional_t<supportedCodims<dim,codim>::supported,CodimBase<codim>,EmptyCodimBase> {
172 inline static const bool supported = supportedCodims<dim,codim>::supported;
173 };
174
175 template<int codim>
178
179};
180
181} // namespace mdrid
182
183} // namespace Dune
184
185#endif // DUNE_MULTIDOMAINGRID_MDGRIDTRAITS_HH
bool setContains(const ArrayBasedSet< SI, capacity > &a, const ArrayBasedSet< SI, capacity > &b)
size_type dim() const
Definition arraybasedset.hh:34
Definition mdgridtraits.hh:16
static const bool supported
Definition mdgridtraits.hh:17
Definition mdgridtraits.hh:21
static const bool supported
Definition mdgridtraits.hh:22
Definition mdgridtraits.hh:26
static const std::size_t maxSubDomainsPerCell
Definition mdgridtraits.hh:32
static const int dimension
Definition mdgridtraits.hh:30
static const SubDomainIndex empty
Definition mdgridtraits.hh:29
static constexpr bool maxSubDomainIndexIsStatic()
Definition mdgridtraits.hh:34
int SubDomainIndex
Definition mdgridtraits.hh:28
void setupSizeContainer(SizeContainer &) const
Definition mdgridtraits.hh:64
static constexpr SubDomainIndex maxSubDomainIndex()
Definition mdgridtraits.hh:39
int SizeContainer
Definition mdgridtraits.hh:45
int MultiIndexContainer
Definition mdgridtraits.hh:46
int SubDomainSet
Definition mdgridtraits.hh:47
Definition mdgridtraits.hh:51
static const std::size_t maxSubDomainsPerEntity
Definition mdgridtraits.hh:52
std::array< int, subDomainCount > SizeContainer
Definition mdgridtraits.hh:55
std::array< int, maxSubDomainsPerEntity > MultiIndexContainer
Definition mdgridtraits.hh:54
Dune::mdgrid::ArrayBasedSet< SubDomainIndex, maxSubDomainsPerEntity > SubDomainSet
Definition mdgridtraits.hh:53
Definition mdgridtraits.hh:59
static const bool supported
Definition mdgridtraits.hh:60
Definition mdgridtraits.hh:71
static constexpr bool maxSubDomainIndexIsStatic()
Definition mdgridtraits.hh:79
static const SubDomainIndex empty
Definition mdgridtraits.hh:74
int SubDomainIndex
Definition mdgridtraits.hh:73
static const std::size_t maxSubDomainsPerCell
Definition mdgridtraits.hh:77
SubDomainIndex maxSubDomainIndex() const
Definition mdgridtraits.hh:85
DynamicSubDomainCountTraits(std::size_t subDomainCount)
Definition mdgridtraits.hh:120
static const int dimension
Definition mdgridtraits.hh:75
void setupSizeContainer(SizeContainer &container) const
Definition mdgridtraits.hh:125
static void setupSizeContainer(const SC &, std::size_t)
Definition mdgridtraits.hh:96
int MultiIndexContainer
Definition mdgridtraits.hh:92
Dune::mdgrid::ArrayBasedSet< SubDomainIndex, maxSubDomainsPerEntity > SubDomainSet
Definition mdgridtraits.hh:104
static const std::size_t maxSubDomainsPerEntity
Definition mdgridtraits.hh:103
std::vector< int > SizeContainer
Definition mdgridtraits.hh:106
std::array< int, maxSubDomainsPerEntity > MultiIndexContainer
Definition mdgridtraits.hh:105
static void setupSizeContainer(SizeContainer &container, std::size_t subDomainCount)
Definition mdgridtraits.hh:108
static const bool supported
Definition mdgridtraits.hh:117
Definition mdgridtraits.hh:138
static const int dimension
Definition mdgridtraits.hh:142
static const std::size_t maxSubDomainsPerCell
Definition mdgridtraits.hh:144
static const SubDomainIndex empty
Definition mdgridtraits.hh:141
static constexpr bool maxSubDomainIndexIsStatic()
Definition mdgridtraits.hh:146
unsigned int SubDomainIndex
Definition mdgridtraits.hh:140
void setupSizeContainer(typename Codim< codim >::SizeContainer &) const
Definition mdgridtraits.hh:176
static constexpr SubDomainIndex maxSubDomainIndex()
Definition mdgridtraits.hh:151
int SubDomainSet
Definition mdgridtraits.hh:159
int MultiIndexContainer
Definition mdgridtraits.hh:158
int SizeContainer
Definition mdgridtraits.hh:157
Definition mdgridtraits.hh:163
std::array< int, maxSubDomainsPerEntity > MultiIndexContainer
Definition mdgridtraits.hh:166
static const std::size_t maxSubDomainsPerEntity
Definition mdgridtraits.hh:164
std::array< int, maxSubDomains > SizeContainer
Definition mdgridtraits.hh:167
Dune::mdgrid::IntegralTypeSubDomainSet< SubDomainIndex, maxSubDomainsPerEntity > SubDomainSet
Definition mdgridtraits.hh:165
Definition mdgridtraits.hh:171
static const bool supported
Definition mdgridtraits.hh:172
Definition subdomainset.hh:204
T resize(T... args)