Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include "DataStructures/DataBox/PrefixHelpers.hpp"
7 : #include "DataStructures/DataBox/Tag.hpp"
8 : #include "DataStructures/VariablesTag.hpp"
9 : #include "Evolution/DgSubcell/ActiveGrid.hpp"
10 :
11 : /// \cond
12 : template <typename TagsList>
13 : class Variables;
14 : /// \endcond
15 :
16 : namespace evolution::dg::subcell::Tags {
17 : /// Mark a tag as holding data for the inactive grid.
18 : ///
19 : /// As an example, if the evolution in the element is currently being done on
20 : /// the DG grid then the subcell evolved variables would be in
21 : /// `Inactive<evolved_vars>`.
22 : template <typename Tag>
23 1 : struct Inactive : db::PrefixTag, db::SimpleTag {
24 0 : using tag = Tag;
25 0 : using type = typename tag::type;
26 : };
27 :
28 : /// \cond
29 : // This tag currently exposes its constituents as subitems. Possible
30 : // compile-time optimization: Remove this template specialization and use
31 : // `Inactive<VariablesTag<tmpl::list<Tag1, Tag2>>>` instead of the individual
32 : // `Inactive<Tag1>`.
33 : template <typename TagList>
34 : struct Inactive<::Tags::Variables<TagList>>
35 : : ::Tags::Variables<db::wrap_tags_in<Inactive, TagList>> {
36 : using tag = ::Tags::Variables<TagList>;
37 : using type = Variables<db::wrap_tags_in<Inactive, TagList>>;
38 : };
39 : /// \endcond
40 : } // namespace evolution::dg::subcell::Tags
|