dune-functions 2.9.0
basistags.hh
Go to the documentation of this file.
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>
7#include <dune/common/concept.hh>
8
9namespace Dune {
10namespace Functions {
11
12 namespace Concept {
13
15 {
16 template<typename T>
17 auto require(T&& t) -> decltype(
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
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
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
Definition: polynomial.hh:10
static constexpr bool isIndexMergingStrategy()
Definition: basistags.hh:23
void registerIndexMergingStrategy(IndexMergingStrategy)
auto require(T &&t) -> decltype(registerIndexMergingStrategy(t))
Base class for index merging strategies to simplify detection.
Definition: basistags.hh:44
Lexicographic merging of direct children without blocking.
Definition: basistags.hh:80
Interleaved merging of direct children without blocking.
Definition: basistags.hh:114
Lexicographic merging of direct children with blocking (i.e. creating one block per direct child).
Definition: basistags.hh:148
Interleaved merging of direct children with blocking (i.e. creating blocks at the leaves containing o...
Definition: basistags.hh:180