SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/GrMhd/ValenciaDivClean - ComputeFluxesFromPrimitives.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 50.0 % 2 1
Test Date: 2026-10-22 17:29:42
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/Variables.hpp"
       7              : #include "Evolution/Systems/GrMhd/ValenciaDivClean/ConservativeFromPrimitive.hpp"
       8              : #include "Evolution/Systems/GrMhd/ValenciaDivClean/Fluxes.hpp"
       9              : #include "Utilities/Gsl.hpp"
      10              : 
      11              : namespace grmhd::ValenciaDivClean {
      12              : namespace detail {
      13              : template <typename FluxTags, typename BoundaryVarsType, typename... ReturnTags,
      14              :           typename... ConservativeTags, typename... ArgumentTags,
      15              :           typename... FluxArgumentTags>
      16              : void compute_fluxes_from_primitives_impl(
      17              :     const gsl::not_null<Variables<FluxTags>*> flux_vars,
      18              :     const BoundaryVarsType& boundary_vars, tmpl::list<ReturnTags...> /*meta*/,
      19              :     tmpl::list<ConservativeTags...> /*meta*/,
      20              :     tmpl::list<ArgumentTags...> /*meta*/,
      21              :     tmpl::list<FluxArgumentTags...> /*meta*/) {
      22              :   Variables<typename tmpl::list<ConservativeTags...>> conserved_vars{
      23              :       flux_vars->number_of_grid_points()};
      24              :   grmhd::ValenciaDivClean::ConservativeFromPrimitive::apply(
      25              :       make_not_null(&get<ConservativeTags>(conserved_vars))...,
      26              :       get<ArgumentTags>(boundary_vars)...);
      27              :   grmhd::ValenciaDivClean::ComputeFluxes::apply(
      28              :       make_not_null(&get<ReturnTags>(*flux_vars))...,
      29              :       get<ConservativeTags>(conserved_vars)...,
      30              :       get<FluxArgumentTags>(boundary_vars)...);
      31              : }
      32              : }  // namespace detail
      33              : 
      34              : /*!
      35              :  * \brief Helper function that computes fluxes from a given set of primitive
      36              :  * variables. Primarily used for filling neighbor data when flux information is
      37              :  * needed for boundaries.
      38              :  *
      39              :  * \warning This computes the conservative variables internally. If you also
      40              :  * need those, you shouldn't call this function.
      41              :  */
      42              : template <typename FluxTags, typename BoundaryVarsType>
      43            1 : void compute_fluxes_from_primitives(
      44              :     const gsl::not_null<Variables<FluxTags>*> flux_vars,
      45              :     const BoundaryVarsType& boundary_vars) {
      46              :   using ConservativeTags =
      47              :       typename grmhd::ValenciaDivClean::ConservativeFromPrimitive::return_tags;
      48              :   using FluxArgumentTags =
      49              :       typename grmhd::ValenciaDivClean::ComputeFluxes::argument_tags;
      50              :   using flux_arg_tags = tmpl::back<tmpl::split_at<
      51              :       FluxArgumentTags, tmpl::next<tmpl::index_of<
      52              :                             FluxArgumentTags, tmpl::back<ConservativeTags>>>>>;
      53              :   detail::compute_fluxes_from_primitives_impl(
      54              :       flux_vars, boundary_vars,
      55              :       typename grmhd::ValenciaDivClean::ComputeFluxes::return_tags{},
      56              :       ConservativeTags{},
      57              :       typename grmhd::ValenciaDivClean::ConservativeFromPrimitive::
      58              :           argument_tags{},
      59              :       flux_arg_tags{});
      60              : }
      61              : }  // namespace grmhd::ValenciaDivClean
        

Generated by: LCOV version 2.0-1