SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Executables/Cce - CharacteristicExtractBase.hpp Hit Total Coverage
Commit: c3e43f8d41800b0ecefb9d1393f1de1d5a280c8f Lines: 0 25 0.0 %
Date: 2026-07-24 22:09:25
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 <string>
       7             : #include <type_traits>
       8             : 
       9             : #include "DataStructures/VariablesTag.hpp"
      10             : #include "Evolution/Systems/Cce/BoundaryData.hpp"
      11             : #include "Evolution/Systems/Cce/IntegrandInputSteps.hpp"
      12             : #include "Evolution/Systems/Cce/System.hpp"
      13             : #include "Evolution/Systems/Cce/Tags.hpp"
      14             : #include "NumericalAlgorithms/SpinWeightedSphericalHarmonics/SwshTags.hpp"
      15             : #include "Time/StepChoosers/Constant.hpp"
      16             : #include "Time/StepChoosers/ErrorControl.hpp"
      17             : #include "Time/StepChoosers/LimitIncrease.hpp"
      18             : #include "Time/StepChoosers/Maximum.hpp"
      19             : #include "Time/StepChoosers/StepToTimes.hpp"
      20             : #include "Utilities/TMPL.hpp"
      21             : 
      22             : template <bool EvolveCcm>
      23           0 : struct CharacteristicExtractDefaults {
      24           0 :   static constexpr bool evolve_ccm = EvolveCcm;
      25           0 :   using evolved_swsh_tags = tmpl::list<Cce::Tags::BondiJ>;
      26           0 :   using evolved_swsh_dt_tags = tmpl::list<Cce::Tags::BondiH>;
      27           0 :   using evolved_coordinates_variables_tag = Tags::Variables<
      28             :       tmpl::conditional_t<evolve_ccm,
      29             :                           tmpl::list<Cce::Tags::CauchyCartesianCoords,
      30             :                                      Cce::Tags::PartiallyFlatCartesianCoords,
      31             :                                      Cce::Tags::InertialRetardedTime>,
      32             :                           tmpl::list<Cce::Tags::CauchyCartesianCoords,
      33             :                                      Cce::Tags::InertialRetardedTime>>>;
      34             : 
      35           0 :   struct swsh_vars_selector {
      36           0 :     static std::string name() { return "SwshVars"; }
      37             :   };
      38             : 
      39           0 :   struct coord_vars_selector {
      40           0 :     static std::string name() { return "CoordVars"; }
      41             :   };
      42             : 
      43           0 :   using cce_boundary_communication_tags =
      44             :       Cce::Tags::characteristic_worldtube_boundary_tags<
      45             :           Cce::Tags::BoundaryValue>;
      46             : 
      47           0 :   using cce_gauge_boundary_tags = tmpl::flatten<tmpl::list<
      48             :       tmpl::transform<
      49             :           tmpl::list<Cce::Tags::BondiR, Cce::Tags::DuRDividedByR,
      50             :                      Cce::Tags::BondiJ, Cce::Tags::Dr<Cce::Tags::BondiJ>,
      51             :                      Cce::Tags::BondiBeta, Cce::Tags::BondiQ, Cce::Tags::BondiU,
      52             :                      Cce::Tags::BondiW, Cce::Tags::BondiH>,
      53             :           tmpl::bind<Cce::Tags::EvolutionGaugeBoundaryValue, tmpl::_1>>,
      54             :       Cce::Tags::BondiUAtScri, Cce::Tags::PartiallyFlatGaugeC,
      55             :       Cce::Tags::PartiallyFlatGaugeD, Cce::Tags::PartiallyFlatGaugeOmega,
      56             :       Cce::Tags::Du<Cce::Tags::PartiallyFlatGaugeOmega>,
      57             :       tmpl::conditional_t<
      58             :           evolve_ccm,
      59             :           tmpl::list<
      60             :               Cce::Tags::CauchyGaugeC, Cce::Tags::CauchyGaugeD,
      61             :               Cce::Tags::CauchyGaugeOmega,
      62             :               Spectral::Swsh::Tags::Derivative<Cce::Tags::CauchyGaugeOmega,
      63             :                                                Spectral::Swsh::Tags::Eth>>,
      64             :           tmpl::list<>>,
      65             :       Spectral::Swsh::Tags::Derivative<Cce::Tags::PartiallyFlatGaugeOmega,
      66             :                                        Spectral::Swsh::Tags::Eth>,
      67             :       Cce::all_boundary_pre_swsh_derivative_tags_for_scri,
      68             :       Cce::all_boundary_swsh_derivative_tags_for_scri>>;
      69             : 
      70           0 :   using scri_values_to_observe =
      71             :       tmpl::list<Cce::Tags::News, Cce::Tags::ScriPlus<Cce::Tags::Strain>,
      72             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi3>,
      73             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi2>,
      74             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi1>,
      75             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi0>,
      76             :                  Cce::Tags::Du<Cce::Tags::TimeIntegral<
      77             :                      Cce::Tags::ScriPlus<Cce::Tags::Psi4>>>,
      78             :                  Cce::Tags::EthInertialRetardedTime>;
      79             : 
      80           0 :   using cce_scri_tags =
      81             :       tmpl::list<Cce::Tags::News, Cce::Tags::ScriPlus<Cce::Tags::Strain>,
      82             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi3>,
      83             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi2>,
      84             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi1>,
      85             :                  Cce::Tags::ScriPlus<Cce::Tags::Psi0>,
      86             :                  Cce::Tags::TimeIntegral<Cce::Tags::ScriPlus<Cce::Tags::Psi4>>,
      87             :                  Cce::Tags::EthInertialRetardedTime>;
      88           0 :   using cce_integrand_tags = tmpl::flatten<tmpl::transform<
      89             :       Cce::bondi_hypersurface_step_tags,
      90             :       tmpl::bind<Cce::integrand_terms_to_compute_for_bondi_variable,
      91             :                  tmpl::_1>>>;
      92           0 :   using ccm_matching_tags = tmpl::list<
      93             :       Cce::Tags::BondiJCauchyView, Cce::Tags::Psi0Match,
      94             :       Cce::Tags::Dy<Cce::Tags::Psi0Match>,
      95             :       Cce::Tags::Psi0, Cce::Tags::Dy<Cce::Tags::BondiJCauchyView>,
      96             :       Cce::Tags::Dy<Cce::Tags::Dy<Cce::Tags::BondiJCauchyView>>>;
      97             : 
      98           0 :   using cce_integration_independent_tags = tmpl::conditional_t<
      99             :       evolve_ccm,
     100             :       tmpl::append<Cce::pre_computation_tags, ccm_matching_tags,
     101             :                    tmpl::list<Cce::Tags::DuRDividedByR>>,
     102             :       tmpl::push_back<Cce::pre_computation_tags, Cce::Tags::DuRDividedByR>>;
     103             : 
     104           0 :   using cce_temporary_equations_tags = tmpl::remove_duplicates<tmpl::flatten<
     105             :       tmpl::transform<cce_integrand_tags,
     106             :                       tmpl::bind<Cce::integrand_temporary_tags, tmpl::_1>>>>;
     107           0 :   using cce_pre_swsh_derivatives_tags = Cce::all_pre_swsh_derivative_tags;
     108           0 :   using cce_transform_buffer_tags = Cce::all_transform_buffer_tags;
     109           0 :   using cce_swsh_derivative_tags = Cce::all_swsh_derivative_tags;
     110           0 :   using cce_angular_coordinate_tags =
     111             :       tmpl::conditional_t<evolve_ccm,
     112             :                           tmpl::list<Cce::Tags::CauchyAngularCoords,
     113             :                                      Cce::Tags::PartiallyFlatAngularCoords>,
     114             :                           tmpl::list<Cce::Tags::CauchyAngularCoords>>;
     115           0 :   using cce_step_choosers =
     116             :       tmpl::list<StepChoosers::Constant, StepChoosers::LimitIncrease,
     117             :                  StepChoosers::Maximum,
     118             :                  StepChoosers::ErrorControl<StepChooserUse::LtsStep,
     119             :                                             Tags::Variables<evolved_swsh_tags>,
     120             :                                             swsh_vars_selector>,
     121             :                  StepChoosers::ErrorControl<StepChooserUse::LtsStep,
     122             :                                             evolved_coordinates_variables_tag,
     123             :                                             coord_vars_selector>>;
     124           0 :   using cce_slab_choosers =
     125             :       tmpl::list<StepChoosers::Constant, StepChoosers::LimitIncrease,
     126             :                  StepChoosers::Maximum, StepChoosers::StepToTimes>;
     127             : 
     128           0 :   using ccm_psi0 = tmpl::list<
     129             :       Cce::Tags::BoundaryValue<Cce::Tags::Psi0Match>,
     130             :       Cce::Tags::BoundaryValue<Cce::Tags::Dlambda<Cce::Tags::Psi0Match>>>;
     131             : };

Generated by: LCOV version 1.14