SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/GrMhd/ValenciaDivClean - ComputeFluxesFromPrimitives.hpp Hit Total Coverage
Commit: 1f2210958b4f38fdc0400907ee7c6d5af5111418 Lines: 1 2 50.0 %
Date: 2025-12-05 05:03:31
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 1.14