8 #include "DataStructures/VariablesTag.hpp"
9 #include "Evolution/Systems/Cce/Actions/BoundaryComputeAndSendToEvolution.hpp"
10 #include "Evolution/Systems/Cce/Actions/CalculateScriInputs.hpp"
11 #include "Evolution/Systems/Cce/Actions/CharacteristicEvolutionBondiCalculations.hpp"
12 #include "Evolution/Systems/Cce/Actions/FilterSwshVolumeQuantity.hpp"
13 #include "Evolution/Systems/Cce/Actions/InitializeCharacteristicEvolutionScri.hpp"
14 #include "Evolution/Systems/Cce/Actions/InitializeCharacteristicEvolutionTime.hpp"
15 #include "Evolution/Systems/Cce/Actions/InitializeCharacteristicEvolutionVariables.hpp"
16 #include "Evolution/Systems/Cce/Actions/InitializeFirstHypersurface.hpp"
17 #include "Evolution/Systems/Cce/Actions/InsertInterpolationScriData.hpp"
18 #include "Evolution/Systems/Cce/Actions/RequestBoundaryData.hpp"
19 #include "Evolution/Systems/Cce/Actions/ScriObserveInterpolated.hpp"
20 #include "Evolution/Systems/Cce/Actions/TimeManagement.hpp"
21 #include "Evolution/Systems/Cce/Actions/UpdateGauge.hpp"
22 #include "Evolution/Systems/Cce/LinearSolve.hpp"
23 #include "Evolution/Systems/Cce/PreSwshDerivatives.hpp"
24 #include "Evolution/Systems/Cce/PrecomputeCceDependencies.hpp"
25 #include "Evolution/Systems/Cce/ScriPlusValues.hpp"
26 #include "Evolution/Systems/Cce/SwshDerivatives.hpp"
27 #include "IO/Observer/ObserverComponent.hpp"
28 #include "Parallel/Actions/SetupDataBox.hpp"
29 #include "Parallel/Actions/TerminatePhase.hpp"
31 #include "ParallelAlgorithms/Actions/MutateApply.hpp"
32 #include "ParallelAlgorithms/Initialization/Actions/RemoveOptionsAndTerminatePhase.hpp"
34 #include "Time/Actions/RecordTimeStepperData.hpp"
91 template <
class Metavariables>
94 using metavariables = Metavariables;
96 using initialize_action_list = tmpl::list<
100 typename Metavariables::evolved_coordinates_variables_tag,
101 typename Metavariables::evolved_swsh_tag>,
103 typename Metavariables::scri_values_to_observe>,
105 typename Metavariables::cce_boundary_component,
111 using initialization_tags =
116 template <
typename BondiTag>
117 using hypersurface_computation = tmpl::list<
120 tmpl::transform<integrand_terms_to_compute_for_bondi_variable<BondiTag>,
122 tmpl::bind<ComputeBondiIntegrand, tmpl::_1>>>,
128 std::is_same_v<BondiTag, Tags::BondiU>,
137 using compute_scri_quantities_and_observe = tmpl::list<
141 tmpl::transform<
typename metavariables::cce_scri_tags,
143 tmpl::bind<CalculateScriPlusValue, tmpl::_1>>>,
145 typename metavariables::scri_values_to_observe,
146 tmpl::bind<Actions::InsertInterpolationScriData, tmpl::_1>>,
150 using record_time_stepper_data_and_step =
152 typename Metavariables::evolved_coordinates_variables_tag>,
154 tmpl::list<typename Metavariables::evolved_swsh_tag>>>,
156 typename Metavariables::evolved_coordinates_variables_tag>,
158 tmpl::list<typename Metavariables::evolved_swsh_tag>>>,
161 using extract_action_list = tmpl::list<
163 typename Metavariables::cce_boundary_component,
167 tmpl::bind<hypersurface_computation, tmpl::_1>>,
169 compute_scri_quantities_and_observe, record_time_stepper_data_and_step,
173 using phase_dependent_action_list =
175 Metavariables::Phase::Initialization,
176 initialize_action_list>,
178 Metavariables::Phase::Evolve,
179 extract_action_list>>;
181 using const_global_cache_tag_list =
183 phase_dependent_action_list>;
185 static void initialize(Parallel::CProxy_GlobalCache<
186 Metavariables>& ) noexcept {}
188 static void execute_next_phase(
189 const typename Metavariables::Phase next_phase,
190 const Parallel::CProxy_GlobalCache<Metavariables>&
191 global_cache) noexcept {
192 auto& local_cache = *(global_cache.ckLocalBranch());
193 Parallel::get_parallel_component<CharacteristicEvolution<Metavariables>>(
195 .start_phase(next_phase);
Requests boundary data be sent from WorldtubeBoundaryComponent to EvolutionComponent.
Definition: RequestBoundaryData.hpp:84
Definition: ScriPlusValues.hpp:24
Add into the DataBox default constructed items for the collection of tags requested by any of the act...
Definition: SetupDataBox.hpp:81
Initializes the contents of the CharacteristicEvolution component for performing the time evolution o...
Definition: InitializeCharacteristicEvolutionTime.hpp:60
tmpl::remove_duplicates< tmpl::join< tmpl::transform< ActionsList, detail::get_const_global_cache_tags_from_parallel_struct< tmpl::_1 > >> > get_const_global_cache_tags_from_actions
Given a list of Actions, get a list of the unique tags specified in the actions' const_global_cache_t...
Definition: ParallelComponentHelpers.hpp:88
Takes the boundary data needed to perform the CCE linear solves as arguments and puts them in the Dat...
Definition: ReceiveWorldtubeData.hpp:40
Requests boundary data be sent from WorldtubeBoundaryComponent to EvolutionComponent (template parame...
Definition: RequestBoundaryData.hpp:44
Initializes the CharacteristicEvolution component with contents needed to perform the interpolation a...
Definition: InitializeCharacteristicEvolutionScri.hpp:43
Definition: RemoveOptionsAndTerminatePhase.hpp:27
A set of procedures for computing the set of inputs to the CCE integrand computations that can be com...
Definition: PrecomputeCceDependencies.hpp:61
tmpl::list< Tags::BondiBeta, Tags::BondiQ, Tags::BondiU, Tags::BondiW, Tags::BondiH > bondi_hypersurface_step_tags
Definition: IntegrandInputSteps.hpp:23
Advance time one substep.
Definition: AdvanceTime.hpp:50
Computational structs for evaluating the hypersurface integrals during CCE evolution....
Definition: LinearSolve.hpp:109
Checks the interpolation managers and if they are ready, performs the interpolation and sends the dat...
Definition: ScriObserveInterpolated.hpp:102
tmpl::remove_duplicates< tmpl::flatten< tmpl::list< AllocationTagsList, tmpl::transform< InitializationActionsList, detail::get_initialization_tags_from_action< tmpl::_1 > >> >> get_initialization_tags
Given a list of initialization actions, and possibly a list of tags needed for allocation of an array...
Definition: ParallelComponentHelpers.hpp:252
Terminates if the current Tags::TimeStepId has time value later or equal to Tags::EndTime.
Definition: TimeManagement.hpp:35
List of all the actions to be executed in the specified phase.
Definition: PhaseDependentActionList.hpp:16
The nodegroup parallel component that is responsible for writing data to disk.
Definition: ObserverComponent.hpp:51
Given initial boundary data for and , computes the initial hypersurface quantities and gauge values...
Definition: InitializeFirstHypersurface.hpp:38
Apply the function Mutator::apply to the DataBox.
Definition: MutateApply.hpp:40
Updates all of the gauge quantities associated with the additional regularity-preserving gauge transf...
Definition: UpdateGauge.hpp:36
Perform all of the computations for dependencies of the hypersurface equations that do not themselves...
Definition: CharacteristicEvolutionBondiCalculations.hpp:63
Records the variables and their time derivatives in the time stepper history.
Definition: RecordTimeStepperData.hpp:49
A struct that stores the charm++ types relevant for a particular singleton component.
Definition: AlgorithmSingletonDeclarations.hpp:29
The set of utilities for performing Cauchy characteristic evolution and Cauchy characteristic matchin...
Definition: BoundaryComputeAndSendToEvolution.hpp:28
Filters the spherical volume data stored in BondiTag according to the filter parameters in the Parall...
Definition: FilterSwshVolumeQuantity.hpp:43
The component for handling the CCE evolution and waveform output.
Definition: CharacteristicEvolution.hpp:92
Perform variable updates for one substep.
Definition: UpdateU.hpp:49
Initializes the main data storage for the CharacteristicEvolution component, which is the singleton t...
Definition: InitializeCharacteristicEvolutionVariables.hpp:65