SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/GrMhd/ValenciaDivClean/Subcell - SwapGrTags.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 1 5 20.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 <cstddef>
       7             : 
       8             : #include "Domain/Tags.hpp"
       9             : #include "Evolution/DgSubcell/ActiveGrid.hpp"
      10             : #include "Evolution/DgSubcell/Tags/ActiveGrid.hpp"
      11             : #include "Evolution/DgSubcell/Tags/Inactive.hpp"
      12             : #include "Evolution/DgSubcell/Tags/Mesh.hpp"
      13             : #include "Evolution/Systems/GrMhd/ValenciaDivClean/System.hpp"
      14             : #include "Utilities/TMPL.hpp"
      15             : 
      16             : /// \cond
      17             : template <size_t Dim>
      18             : class Mesh;
      19             : namespace gsl {
      20             : template <typename T>
      21             : class not_null;
      22             : }  // namespace gsl
      23             : template <typename TagsList>
      24             : class Variables;
      25             : /// \endcond
      26             : 
      27             : namespace grmhd::ValenciaDivClean::subcell {
      28             : /*!
      29             :  * \brief Swaps the inactive and active GR variables.
      30             :  *
      31             :  * The values on the subcells are at the cell-centers.
      32             :  *
      33             :  * It should be possible to reduce memory usage by deallocating the GR variables
      34             :  * on the DG grid when switching to subcell. However, the opposite case is not
      35             :  * true since the GR variables are needed on the subcells if a neighbor is using
      36             :  * subcell in order to compute the neighbor's fluxes.
      37             :  *
      38             :  * \note The `active_grid` is the grid we are swapping to, which may be the same
      39             :  * as the current grid. On output the `active_gr_vars` will match the grid that
      40             :  * `active_grid` is. This mutator is a no-op if they matched on input.
      41             :  */
      42           1 : struct SwapGrTags {
      43           0 :   using return_tags = tmpl::list<typename System::spacetime_variables_tag,
      44             :                                  evolution::dg::subcell::Tags::Inactive<
      45             :                                      typename System::spacetime_variables_tag>>;
      46           0 :   using argument_tags =
      47             :       tmpl::list<::domain::Tags::Mesh<3>, evolution::dg::subcell::Tags::Mesh<3>,
      48             :                  evolution::dg::subcell::Tags::ActiveGrid>;
      49             : 
      50           0 :   static void apply(
      51             :       gsl::not_null<
      52             :           Variables<typename System::spacetime_variables_tag::tags_list>*>
      53             :           active_gr_vars,
      54             :       gsl::not_null<typename evolution::dg::subcell::Tags::Inactive<
      55             :           typename System::spacetime_variables_tag>::type*>
      56             :           inactive_gr_vars,
      57             :       const Mesh<3>& dg_mesh, const Mesh<3>& subcell_mesh,
      58             :       evolution::dg::subcell::ActiveGrid active_grid);
      59             : };
      60             : }  // namespace grmhd::ValenciaDivClean::subcell

Generated by: LCOV version 1.14