dune-pdelab 2.7-git
Loading...
Searching...
No Matches
gridfunctionspace/tags.hh
Go to the documentation of this file.
1// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=8 sw=2 sts=2:
3
4#ifndef DUNE_PDELAB_GRIDFUNCTIONSPACE_TAGS_HH
5#define DUNE_PDELAB_GRIDFUNCTIONSPACE_TAGS_HH
6
7#include <dune/grid/common/gridenums.hh>
8#include <dune/typetree/utility.hh>
9
12
13#include <numeric>
14
15namespace Dune {
16 namespace PDELab {
17
21
23
25
27
29
31
33
34 template<typename ProxiedGFSTag>
36 : public ProxiedGFSTag
37 {};
38
41
43
54
57
64
67
79 {
80
82
101 InterleavedOrderingTag(std::initializer_list<std::size_t> sizes)
102 : _offsets(sizes.size() + 1,0)
103 {
104 std::partial_sum(sizes.begin(),sizes.end(),_offsets.begin() + 1);
105 }
106
108 InterleavedOrderingTag(std::vector<std::size_t> sizes)
109 : _offsets(sizes.size() + 1,0)
110 {
111 std::partial_sum(sizes.begin(),sizes.end(),_offsets.begin() + 1);
112 }
113
115 const std::vector<std::size_t>& offsets() const
116 {
117 return _offsets;
118 }
119
120 private:
121
122 std::vector<std::size_t> _offsets;
123 };
124
126 template<bool v>
128 {
129 static const bool no_const_ordering_size = v;
130 };
131
132 namespace {
133
134 // Use this compile-time bridge to shup up GCC warnings
135
136 template<int i>
137 struct shift_if_nonnegative
138 {
139 static const unsigned int value = 1 << i;
140 };
141
142 template<>
143 struct shift_if_nonnegative<-1>
144 {
145 static const unsigned int value = 0;
146 };
147
148 }
149
151
155 template<int p0 = -1, int p1 = -1, int p2 = -1, int p3 = -1, int p4 = -1>
157 {
158
159 static const unsigned int partition_mask =
160 shift_if_nonnegative<p0>::value |
161 shift_if_nonnegative<p1>::value |
162 shift_if_nonnegative<p2>::value |
163 shift_if_nonnegative<p3>::value |
164 shift_if_nonnegative<p4>::value;
165
166 };
167
169 {};
170
172
182 template<typename Params>
184 : public Params
185 {};
186
188
192
195
198
201
205
209
213
217
218 namespace Experimental {
219
221
222 }
223
224 template<typename GFS, typename Tag>
226 {
228 };
229
230 template<typename GFS>
232 {
234 };
235
236
237 template<typename GFS>
239 {
241 };
242
243
244#ifndef DOXYGEN
245
247
262 template<typename GFS>
263 struct gfs_to_lfs {
264
266 //typedef Dune::PDELab::MultiIndex<std::size_t,TypeTree::TreeInfo<GFS>::depth> MultiIndex;
268
269 };
270
271#endif // DOXYGEN
272
274 } // namespace PDELab
275} // namespace Dune
276
277#endif // DUNE_PDELAB_GRIDFUNCTIONSPACE_TAGS_HH
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
A multi-index representing a degree of freedom in a GridFunctionSpace.
Definition: dofindex.hh:148
Definition: simpledofindex.hh:16
Definition: gridfunctionspace/tags.hh:22
Definition: gridfunctionspace/tags.hh:24
Definition: gridfunctionspace/tags.hh:26
Definition: gridfunctionspace/tags.hh:28
Definition: gridfunctionspace/tags.hh:30
Definition: gridfunctionspace/tags.hh:32
Definition: gridfunctionspace/tags.hh:37
Tag for the intermediate base class of the CompositeGridFunctionSpace.
Definition: gridfunctionspace/tags.hh:40
Indicate blocking of the unknowns by grid entity.
Definition: gridfunctionspace/tags.hh:53
Indicate lexicographic ordering of the unknowns of non-leaf grid function spaces.
Definition: gridfunctionspace/tags.hh:63
Indicate interleaved ordering of the unknowns of non-leaf grid function spaces according to a given b...
Definition: gridfunctionspace/tags.hh:79
InterleavedOrderingTag(std::vector< std::size_t > sizes)
Constructs an InterleavedOrderingTag with a block structure given by the std::vector sizes.
Definition: gridfunctionspace/tags.hh:108
const std::vector< std::size_t > & offsets() const
Returns a list of offsets for the child blocks.
Definition: gridfunctionspace/tags.hh:115
InterleavedOrderingTag(std::initializer_list< std::size_t > sizes)
Constructs an InterleavedOrderingTag with a block structure given by the initializer list sizes.
Definition: gridfunctionspace/tags.hh:101
Mixin indicating whether a leaf GridFunctionSpace should never assume a const ordering size.
Definition: gridfunctionspace/tags.hh:128
static const bool no_const_ordering_size
Definition: gridfunctionspace/tags.hh:129
Helper for building the bitmask describing the grid partitions contained in a GFS.
Definition: gridfunctionspace/tags.hh:157
static const unsigned int partition_mask
Definition: gridfunctionspace/tags.hh:159
Definition: gridfunctionspace/tags.hh:169
Tag indicating a standard ordering for a leaf GridfunctionSpace.
Definition: gridfunctionspace/tags.hh:185
Definition: gridfunctionspace/tags.hh:191
Tag denoting a PowerLocalFunctionSpace.
Definition: gridfunctionspace/tags.hh:194
Tag denoting a CompositeLocalFunctionSpace.
Definition: gridfunctionspace/tags.hh:197
Tag denoting a LeafLocalFunctionSpace.
Definition: gridfunctionspace/tags.hh:200
Definition: gridfunctionspace/tags.hh:204
Definition: gridfunctionspace/tags.hh:208
Definition: gridfunctionspace/tags.hh:212
Definition: gridfunctionspace/tags.hh:216
Definition: gridfunctionspace/tags.hh:220
Definition: gridfunctionspace/tags.hh:226
Dune::PDELab::DOFIndex< std::size_t, TypeTree::TreeInfo< GFS >::depth, 2 > type
Definition: gridfunctionspace/tags.hh:227
SimpleDOFIndex< typename GFS::Traits::SizeType > type
Definition: gridfunctionspace/tags.hh:233
Definition: gridfunctionspace/tags.hh:239
_build_dof_index_type< GFS, typenameGFS::OrderingTag >::type type
Definition: gridfunctionspace/tags.hh:240
static const unsigned int value
Definition: gridfunctionspace/tags.hh:139