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