SpECTRE Documentation Coverage Report
Current view: top level - Evolution/DgSubcell/Tags - OnSubcells.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 1 4 25.0 %
Date: 2024-04-23 20:50:18
Legend: Lines: hit not hit

          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             : 
      10             : /// \cond
      11             : template <typename X, typename Symm, typename IndexList>
      12             : class Tensor;
      13             : template <typename TagsList>
      14             : class Variables;
      15             : /// \endcond
      16             : 
      17             : namespace evolution::dg::subcell::Tags {
      18             : /// Mark a tag as the being on the subcell grid
      19             : template <typename Tag>
      20           1 : struct OnSubcells : db::PrefixTag, db::SimpleTag {
      21             :   static_assert(tt::is_a_v<Tensor, typename Tag::type>,
      22             :                 "A subcell tag must be either a Tensor or a Variables "
      23             :                 "currently, though this can be generalized if needed.");
      24           0 :   using type = typename Tag::type;
      25           0 :   using tag = Tag;
      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             : // `OnSubcells<VariablesTag<tmpl::list<Tag1, Tag2>>>` instead of the individual
      32             : // `OnSubcells<Tag1>`.
      33             : template <typename TagList>
      34             : struct OnSubcells<::Tags::Variables<TagList>>
      35             :     : ::Tags::Variables<db::wrap_tags_in<OnSubcells, TagList>> {
      36             :  private:
      37             :   using wrapped_tags_list = db::wrap_tags_in<OnSubcells, TagList>;
      38             : 
      39             :  public:
      40             :   using tag = ::Tags::Variables<TagList>;
      41             :   using type = Variables<wrapped_tags_list>;
      42             : };
      43             : /// \endcond
      44             : }  // namespace evolution::dg::subcell::Tags

Generated by: LCOV version 1.14