dune-functions  2.5.1
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 
9 namespace Dune {
10 namespace 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 
37 namespace BasisBuilder {
38 
45 
47 
62  : public IndexMergingStrategy
63  {};
64 
79  : public IndexMergingStrategy
80  {};
81 
96  : public IndexMergingStrategy
97  {};
98 
113 
114 
121  {
122  return {};
123  }
124 
131  {
132  return {};
133  }
134 
141  {
142  return {};
143  }
144 
151  {
152  return {};
153  }
154 
155 } // end namespace BasisBuilder
156 } // end namespace Functions
157 } // end namespace Dune
158 
159 
160 #endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
constexpr LeafBlockedInterleaved leafBlockedInterleaved()
Creates an interleaved merging of direct children with blocking (i.e. creating blocks at the leaves c...
Definition: basistags.hh:150
constexpr BlockedLexicographic blockedLexicographic()
Creates a lexicographic merging of direct children with blocking (i.e. creating one block per direct ...
Definition: basistags.hh:140
Lexicographic merging of direct children without blocking.
Definition: basistags.hh:61
Lexicographic merging of direct children with blocking (i.e. creating one block per direct child)...
Definition: basistags.hh:95
Base class for index merging strategies to simplify detection.
Definition: basistags.hh:44
constexpr FlatLexicographic flatLexicographic()
Creates a lexicographic merging of direct children without blocking.
Definition: basistags.hh:120
Definition: polynomial.hh:7
static constexpr bool isIndexMergingStrategy()
Definition: basistags.hh:23
auto require(T &&t) -> decltype(registerIndexMergingStrategy(t))
void registerIndexMergingStrategy(IndexMergingStrategy)
Interleaved merging of direct children without blocking.
Definition: basistags.hh:78
constexpr FlatInterleaved flatInterleaved()
Creates an interleaved merging of direct children without blocking.
Definition: basistags.hh:130
Interleaved merging of direct children with blocking (i.e. creating blocks at the leaves containing o...
Definition: basistags.hh:112