Dune Core Modules (2.8.0)

basistags.hh
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
4#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
5
6#include <type_traits>
8
9namespace Dune {
10namespace Functions {
11
12 namespace Concept {
13
14 struct IndexMergingStrategy
15 {
16 template<typename T>
17 auto require(T&& t) -> decltype(
18 registerIndexMergingStrategy(t)
19 );
20 };
21
22 template<typename T>
23 static constexpr bool isIndexMergingStrategy()
24 {
25 return models<Concept::IndexMergingStrategy,T>();
26 }
27
28 template<typename T>
29 static constexpr bool isIndexMergingStrategy(T&& t)
30 {
31 return models<Concept::IndexMergingStrategy,std::decay_t<T>>();
32 }
33
34 } // namespace Concept
35
36
37namespace BasisFactory {
38
45
46 void registerIndexMergingStrategy(IndexMergingStrategy);
47
80 {};
81
113 : public IndexMergingStrategy
114 {};
115
147 : public IndexMergingStrategy
148 {};
149
181
182
189 {
190 return {};
191 }
192
199 {
200 return {};
201 }
202
209 {
210 return {};
211 }
212
219 {
220 return {};
221 }
222
223} // end namespace BasisFactory
224
225// Backward compatibility
226namespace BasisBuilder {
227
228 using namespace BasisFactory;
229
230}
231
232} // end namespace Functions
233} // end namespace Dune
234
235
236#endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
Infrastructure for concepts.
constexpr FlatLexicographic flatLexicographic()
Creates a lexicographic merging of direct children without blocking.
Definition: basistags.hh:188
constexpr BlockedInterleaved blockedInterleaved()
Creates an interleaved merging of direct children with blocking (i.e. creating blocks at the leaves c...
Definition: basistags.hh:218
constexpr FlatInterleaved flatInterleaved()
Creates an interleaved merging of direct children without blocking.
Definition: basistags.hh:198
constexpr BlockedLexicographic blockedLexicographic()
Creates a lexicographic merging of direct children with blocking (i.e. creating one block per direct ...
Definition: basistags.hh:208
Dune namespace.
Definition: alignedallocator.hh:11
Interleaved merging of direct children with blocking (i.e. creating blocks at the leaves containing o...
Definition: basistags.hh:180
Lexicographic merging of direct children with blocking (i.e. creating one block per direct child).
Definition: basistags.hh:148
Interleaved merging of direct children without blocking.
Definition: basistags.hh:114
Lexicographic merging of direct children without blocking.
Definition: basistags.hh:80
Base class for index merging strategies to simplify detection.
Definition: basistags.hh:44
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 22, 23:30, 2024)