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

Generated by: LCOV version 1.14