Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 : #include <string>
8 :
9 : #include "DataStructures/DataBox/Tag.hpp"
10 : #include "DataStructures/DataBox/TagName.hpp"
11 : #include "Domain/BoundaryVariables.hpp"
12 : #include "Utilities/TMPL.hpp"
13 : #include "Utilities/TypeTraits/IsA.hpp"
14 :
15 : namespace Tags {
16 : template <size_t Dim, typename TagsList>
17 0 : struct BoundaryVariables : db::SimpleTag {
18 : static_assert(
19 : tt::is_a_v<tmpl::list, TagsList>,
20 : "The TagsList passed to Tags::BoundaryVariables is not a typelist");
21 0 : using tags_list = TagsList;
22 0 : using type = ::BoundaryVariables<Dim, TagsList>;
23 0 : static std::string name() {
24 : std::string tag_name{"BoundaryVariables("};
25 : size_t iter = 0;
26 : tmpl::for_each<TagsList>([&tag_name, &iter](auto tag) {
27 : tag_name += db::tag_name<tmpl::type_from<decltype(tag)>>();
28 : if (iter + 1 != tmpl::size<TagsList>::value) {
29 : tag_name += ",";
30 : }
31 : iter++;
32 : });
33 : return tag_name + ")";
34 : }
35 : };
36 : } // namespace Tags
|