DUNE PDELab (git)

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
4// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file AUTHORS.md
5// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception OR LGPL-3.0-or-later
6
7#ifndef DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
8#define DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
9
10#include <type_traits>
12
13namespace Dune {
14namespace Functions {
15
16 namespace Concept {
17
18 struct IndexMergingStrategy
19 {
20 template<typename T>
21 auto require(T&& t) -> decltype(
22 registerIndexMergingStrategy(t)
23 );
24 };
25
26 template<typename T>
27 static constexpr bool isIndexMergingStrategy()
28 {
29 return models<Concept::IndexMergingStrategy,T>();
30 }
31
32 template<typename T>
33 static constexpr bool isIndexMergingStrategy(T&& t)
34 {
35 return models<Concept::IndexMergingStrategy,std::decay_t<T>>();
36 }
37
38 } // namespace Concept
39
40
41namespace BasisFactory {
42
49
50 void registerIndexMergingStrategy(IndexMergingStrategy);
51
84 {};
85
117 : public IndexMergingStrategy
118 {};
119
151 : public IndexMergingStrategy
152 {};
153
185
186
193 {
194 return {};
195 }
196
203 {
204 return {};
205 }
206
213 {
214 return {};
215 }
216
223 {
224 return {};
225 }
226
227} // end namespace BasisFactory
228
229// Backward compatibility
230namespace [[deprecated("Will be removed after Dune 2.10")]] BasisBuilder {
231
232 using namespace BasisFactory;
233
234}
235
236} // end namespace Functions
237} // end namespace Dune
238
239
240#endif // DUNE_FUNCTIONS_FUNCTIONSPACEBASES_BASISTAGS_HH
Infrastructure for concepts.
constexpr FlatLexicographic flatLexicographic()
Creates a lexicographic merging of direct children without blocking.
Definition: basistags.hh:192
constexpr BlockedInterleaved blockedInterleaved()
Creates an interleaved merging of direct children with blocking (i.e. creating blocks at the leaves c...
Definition: basistags.hh:222
constexpr FlatInterleaved flatInterleaved()
Creates an interleaved merging of direct children without blocking.
Definition: basistags.hh:202
constexpr BlockedLexicographic blockedLexicographic()
Creates a lexicographic merging of direct children with blocking (i.e. creating one block per direct ...
Definition: basistags.hh:212
Dune namespace.
Definition: alignedallocator.hh:13
Interleaved merging of direct children with blocking (i.e. creating blocks at the leaves containing o...
Definition: basistags.hh:184
Lexicographic merging of direct children with blocking (i.e. creating one block per direct child).
Definition: basistags.hh:152
Interleaved merging of direct children without blocking.
Definition: basistags.hh:118
Lexicographic merging of direct children without blocking.
Definition: basistags.hh:84
Base class for index merging strategies to simplify detection.
Definition: basistags.hh:48
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 23, 23:29, 2024)