Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <concepts>
7 : #include <cstddef>
8 : #include <string>
9 : #include <unordered_map>
10 :
11 : #include "DataStructures/DataBox/ConstructibleFromTags.hpp"
12 : #include "Utilities/Serialization/Serializable.hpp"
13 :
14 : /// \cond
15 : template <size_t VolumeDim>
16 : class ElementId;
17 : /// \endcond
18 :
19 : namespace evolution::dg {
20 : /// Concept for a class usable in `EqualRateRegions`.
21 : template <typename T, size_t Dim>
22 : concept equal_rate_region_generator =
23 : std::default_initializable<T> and std::movable<T> and serializable<T> and
24 : db::constructible_from_tags<T> and
25 : requires(const T gen, const size_t region_id,
26 : const ElementId<Dim> element_id) {
27 : {
28 : gen.regions()
29 : } -> std::same_as<std::unordered_map<std::string, size_t>>;
30 : { gen.is_in_region(region_id, element_id) } -> std::same_as<bool>;
31 : };
32 : } // namespace evolution::dg
|