SpECTRE Documentation Coverage Report
Current view: top level - Evolution/Systems/CurvedScalarWave/Worldtube - SingletonChare.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 6.7 % 15 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/DataBox/DataBox.hpp"
       7              : #include "DataStructures/DataBox/Tag.hpp"
       8              : #include "Evolution/Initialization/Evolution.hpp"
       9              : #include "Evolution/Systems/CurvedScalarWave/Tags.hpp"
      10              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/ChangeSlabSize.hpp"
      11              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/InitializeElementFacesGridCoordinates.hpp"
      12              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/InitializeEvolvedVariables.hpp"
      13              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/IterateAccelerationTerms.hpp"
      14              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/ObserveWorldtubeSolution.hpp"
      15              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/ReceiveElementData.hpp"
      16              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/SendAccelerationTerms.hpp"
      17              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/SendToElements.hpp"
      18              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/UpdateAcceleration.hpp"
      19              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/SingletonActions/UpdateFunctionsOfTime.hpp"
      20              : #include "Evolution/Systems/CurvedScalarWave/Worldtube/System.hpp"
      21              : #include "IO/Observer/Actions/RegisterSingleton.hpp"
      22              : #include "Options/String.hpp"
      23              : #include "Parallel/Algorithms/AlgorithmSingleton.hpp"
      24              : #include "Parallel/GlobalCache.hpp"
      25              : #include "Parallel/Invoke.hpp"
      26              : #include "Parallel/ParallelComponentHelpers.hpp"
      27              : #include "Parallel/PhaseControl/ExecutePhaseChange.hpp"
      28              : #include "Parallel/PhaseDependentActionList.hpp"
      29              : #include "Parallel/Tags/ResourceInfo.hpp"
      30              : #include "ParallelAlgorithms/Actions/AddComputeTags.hpp"
      31              : #include "ParallelAlgorithms/Actions/FunctionsOfTimeAreReady.hpp"
      32              : #include "ParallelAlgorithms/Actions/InitializeItems.hpp"
      33              : #include "ParallelAlgorithms/Actions/MutateApply.hpp"
      34              : #include "ParallelAlgorithms/Actions/TerminatePhase.hpp"
      35              : #include "Time/Actions/SelfStartActions.hpp"
      36              : #include "Time/AdvanceTime.hpp"
      37              : #include "Time/CleanHistory.hpp"
      38              : #include "Time/RecordTimeStepperData.hpp"
      39              : #include "Time/SelfStart.hpp"
      40              : #include "Time/UpdateU.hpp"
      41              : #include "Utilities/System/ParallelInfo.hpp"
      42              : 
      43              : namespace CurvedScalarWave::Worldtube {
      44              : 
      45            0 : struct Registration {
      46              :   template <typename ParallelComponent, typename DbTagsList,
      47              :             typename ArrayIndex>
      48              :   static std::pair<observers::TypeOfObservation, observers::ObservationKey>
      49            0 :   register_info(const db::DataBox<DbTagsList>& /*box*/,
      50              :                 const ArrayIndex& /*array_index*/) {
      51              :     return {observers::TypeOfObservation::Reduction,
      52              :             observers::ObservationKey{"/Worldtube"}};
      53              :   }
      54              : };
      55              : 
      56              : /*!
      57              :  * \brief The singleton component that represents the worldtube.
      58              :  *
      59              :  * \details The component receives from and sends data to the elements abutting
      60              :  * the worldtube. It holds and calculates a solution for the regular field
      61              :  * \f$\Psi^R\f$ which valid in a neighborhood of the scalar charge.
      62              :  */
      63              : template <class Metavariables>
      64            1 : struct WorldtubeSingleton {
      65            0 :   static constexpr size_t Dim = Metavariables::volume_dim;
      66            0 :   using chare_type = ::Parallel::Algorithms::Singleton;
      67            0 :   static constexpr bool checkpoint_data = true;
      68            0 :   using metavariables = Metavariables;
      69            0 :   using evolved_vars = ::Tags::Variables<
      70              :       tmpl::list<CurvedScalarWave::Tags::Psi, CurvedScalarWave::Tags::Pi>>;
      71              : 
      72            0 :   using initialization_actions = tmpl::list<
      73              :       ::Initialization::Actions::InitializeItems<
      74              :           ::Initialization::TimeStepping<Metavariables, TimeStepper, false,
      75              :                                          false>,
      76              :           Initialization::InitializeEvolvedVariables,
      77              :           Initialization::InitializeElementFacesGridCoordinates<Dim>>,
      78              :       ::Initialization::Actions::AddComputeTags<
      79              :           tmpl::list<Tags::EvolvedParticlePositionVelocityCompute<Dim>,
      80              :                      Tags::GeodesicAccelerationCompute<Dim>,
      81              :                      Tags::BackgroundQuantitiesCompute<Dim>>>,
      82              :       Parallel::Actions::TerminatePhase>;
      83              : 
      84            0 :   using worldtube_system = System<Dim>;
      85            0 :   using step_actions = tmpl::list<
      86              :       Actions::UpdateFunctionsOfTime, Actions::ChangeSlabSize,
      87              :       Actions::ReceiveElementData,
      88              :       ::Actions::MutateApply<IterateAccelerationTerms>,
      89              :       Actions::SendAccelerationTerms<Metavariables>,
      90              :       ::Actions::MutateApply<UpdateAcceleration>,
      91              :       ::Actions::MutateApply<RecordTimeStepperData<worldtube_system>>,
      92              :       ::Actions::MutateApply<UpdateU<worldtube_system>>,
      93              :       ::Actions::MutateApply<CleanHistory<worldtube_system>>,
      94              :       Actions::SendToElements<Metavariables>,
      95              :       domain::Actions::CheckFunctionsOfTimeAreReady<Dim>>;
      96            0 :   using phase_dependent_action_list = tmpl::list<
      97              :       Parallel::PhaseActions<Parallel::Phase::Initialization,
      98              :                              initialization_actions>,
      99              :       Parallel::PhaseActions<
     100              :           Parallel::Phase::InitializeTimeStepperHistory,
     101              :           SelfStart::self_start_procedure<step_actions, worldtube_system>>,
     102              :       Parallel::PhaseActions<
     103              :           Parallel::Phase::Register,
     104              :           tmpl::list<observers::Actions::RegisterSingletonWithObserverWriter<
     105              :                          Registration>,
     106              :                      Parallel::Actions::TerminatePhase>>,
     107              :       Parallel::PhaseActions<
     108              :           Parallel::Phase::Restart,
     109              :           tmpl::list<observers::Actions::RegisterSingletonWithObserverWriter<
     110              :                          Registration>,
     111              :                      Parallel::Actions::TerminatePhase>>,
     112              :       Parallel::PhaseActions<
     113              :           Parallel::Phase::Evolve,
     114              :           tmpl::list<Actions::ObserveWorldtubeSolution, step_actions,
     115              :                      ::Actions::MutateApply<AdvanceTime<>>,
     116              :                      PhaseControl::Actions::ExecutePhaseChange>>>;
     117              : 
     118            0 :   using simple_tags_from_options = Parallel::get_simple_tags_from_options<
     119              :       Parallel::get_initialization_actions_list<phase_dependent_action_list>>;
     120              : 
     121            0 :   static void execute_next_phase(
     122              :       const typename Parallel::Phase next_phase,
     123              :       Parallel::CProxy_GlobalCache<Metavariables>& global_cache) {
     124              :     auto& local_cache = *Parallel::local_branch(global_cache);
     125              :     Parallel::get_parallel_component<WorldtubeSingleton<metavariables>>(
     126              :         local_cache)
     127              :         .start_phase(next_phase);
     128              :   }
     129              : };
     130              : }  // namespace CurvedScalarWave::Worldtube
        

Generated by: LCOV version 2.0-1