SpECTRE Documentation Coverage Report
Current view: top level - Elliptic/Systems - GetFluxesComputer.hpp Hit Total Coverage
Commit: 1f2210958b4f38fdc0400907ee7c6d5af5111418 Lines: 4 5 80.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 <type_traits>
       7             : 
       8             : #include "Utilities/TMPL.hpp"
       9             : 
      10             : namespace elliptic {
      11             : namespace detail {
      12             : template <typename System, typename = std::void_t<>>
      13             : struct fluxes_computer_linearized {
      14             :   using type = typename System::fluxes_computer;
      15             : };
      16             : template <typename System>
      17             : struct fluxes_computer_linearized<
      18             :     System, std::void_t<typename System::fluxes_computer_linearized>> {
      19             :   using type = typename System::fluxes_computer_linearized;
      20             : };
      21             : }  // namespace detail
      22             : 
      23             : /// The `System::fluxes_computer` or the `System::fluxes_computer_linearized`,
      24             : /// depending on the `Linearized` parameter. If the system has no
      25             : /// `fluxes_computer_linearized` alias it is assumed that the linear flux is
      26             : /// functionally identical to the non-linear flux, so the
      27             : /// `System::fluxes_computer` is returned either way.
      28             : template <typename System, bool Linearized>
      29           1 : using get_fluxes_computer = tmpl::conditional_t<
      30             :     Linearized, typename detail::fluxes_computer_linearized<System>::type,
      31             :     typename System::fluxes_computer>;
      32             : 
      33             : /// The `argument_tags` of either the `System::fluxes_computer` or the
      34             : /// `System::fluxes_computer_linearized`, depending on the `Linearized`
      35             : /// parameter.
      36             : template <typename System, bool Linearized>
      37           1 : using get_fluxes_argument_tags =
      38             :     typename get_fluxes_computer<System, Linearized>::argument_tags;
      39             : 
      40             : /// The `volume_tags` of either the `System::fluxes_computer` or the
      41             : /// `System::fluxes_computer_linearized`, depending on the `Linearized`
      42             : /// parameter.
      43             : template <typename System, bool Linearized>
      44           1 : using get_fluxes_volume_tags =
      45             :     typename get_fluxes_computer<System, Linearized>::volume_tags;
      46             : 
      47             : /// The `const_global_cache_tags` of either the `System::fluxes_computer` or the
      48             : /// `System::fluxes_computer_linearized`, depending on the `Linearized`
      49             : /// parameter.
      50             : template <typename System, bool Linearized>
      51           1 : using get_fluxes_const_global_cache_tags =
      52             :     typename get_fluxes_computer<System, Linearized>::const_global_cache_tags;
      53             : }  // namespace elliptic

Generated by: LCOV version 1.14