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