DUNE-FUNCTIONS (unstable)

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>
7 #include <dune/common/concept.hh>
8 
9 namespace Dune {
10 namespace 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 
37 namespace BasisFactory {
38 
45 
46  void registerIndexMergingStrategy(IndexMergingStrategy);
47 
79  : public IndexMergingStrategy
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
226 namespace [[deprecated("Will be removed after Dune 2.10")]] 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:13
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.80.0 (May 13, 22:30, 2024)