Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include "Evolution/Executables/Cce/CharacteristicExtractBase.hpp"
7 : #include "Evolution/Systems/Cce/AnalyticSolutions/BouncingBlackHole.hpp"
8 : #include "Evolution/Systems/Cce/AnalyticSolutions/GaugeWave.hpp"
9 : #include "Evolution/Systems/Cce/AnalyticSolutions/LinearizedBondiSachs.hpp"
10 : #include "Evolution/Systems/Cce/AnalyticSolutions/RobinsonTrautman.hpp"
11 : #include "Evolution/Systems/Cce/AnalyticSolutions/RotatingSchwarzschild.hpp"
12 : #include "Evolution/Systems/Cce/AnalyticSolutions/SphericalMetricData.hpp"
13 : #include "Evolution/Systems/Cce/AnalyticSolutions/TeukolskyWave.hpp"
14 : #include "Evolution/Systems/Cce/AnalyticSolutions/WorldtubeData.hpp"
15 : #include "Evolution/Systems/Cce/BoundaryData.hpp"
16 : #include "Evolution/Systems/Cce/Components/CharacteristicEvolution.hpp"
17 : #include "Evolution/Systems/Cce/Components/WorldtubeBoundary.hpp"
18 : #include "Evolution/Systems/Cce/Events/ObserveFields.hpp"
19 : #include "Evolution/Systems/Cce/Events/ObserveTimeStep.hpp"
20 : #include "Evolution/Systems/Cce/Initialize/ConformalFactor.hpp"
21 : #include "Evolution/Systems/Cce/Initialize/InitializeJ.hpp"
22 : #include "Evolution/Systems/Cce/Initialize/InverseCubic.hpp"
23 : #include "Evolution/Systems/Cce/Initialize/NoIncomingRadiation.hpp"
24 : #include "Evolution/Systems/Cce/Initialize/ZeroNonSmooth.hpp"
25 : #include "Evolution/Systems/Cce/IntegrandInputSteps.hpp"
26 : #include "Evolution/Systems/Cce/OptionTags.hpp"
27 : #include "Evolution/Systems/Cce/System.hpp"
28 : #include "Evolution/Systems/Cce/Tags.hpp"
29 : #include "Evolution/Systems/Cce/WorldtubeDataManager.hpp"
30 : #include "IO/Observer/ObserverComponent.hpp"
31 : #include "Options/Protocols/FactoryCreation.hpp"
32 : #include "Options/String.hpp"
33 : #include "Parallel/Algorithms/AlgorithmSingleton.hpp"
34 : #include "Parallel/Phase.hpp"
35 : #include "ParallelAlgorithms/Events/Factory.hpp"
36 : #include "ParallelAlgorithms/EventsAndTriggers/Event.hpp"
37 : #include "ParallelAlgorithms/EventsAndTriggers/EventsAndTriggers.hpp"
38 : #include "ParallelAlgorithms/EventsAndTriggers/LogicalTriggers.hpp"
39 : #include "ParallelAlgorithms/EventsAndTriggers/Trigger.hpp"
40 : #include "Time/TimeSteppers/Factory.hpp"
41 : #include "Time/TimeSteppers/LtsTimeStepper.hpp"
42 : #include "Time/Triggers/TimeTriggers.hpp"
43 : #include "Utilities/ProtocolHelpers.hpp"
44 :
45 : /// \cond
46 : namespace PUP {
47 : class er;
48 : } // namespace PUP
49 : /// \endcond
50 :
51 : template <template <typename> class BoundaryComponent>
52 : struct EvolutionMetavars : CharacteristicExtractDefaults<Cce::System<false>> {
53 0 : using cce_boundary_component = BoundaryComponent<EvolutionMetavars>;
54 :
55 0 : using component_list =
56 : tmpl::list<observers::ObserverWriter<EvolutionMetavars>,
57 : cce_boundary_component,
58 : Cce::CharacteristicEvolution<EvolutionMetavars>>;
59 :
60 : struct factory_creation
61 : : tt::ConformsTo<Options::protocols::FactoryCreation> {
62 0 : using factory_classes = tmpl::map<
63 : tmpl::pair<LtsTimeStepper, TimeSteppers::lts_time_steppers>,
64 : tmpl::pair<StepChooser<StepChooserUse::LtsStep>, cce_step_choosers>,
65 : tmpl::pair<StepChooser<StepChooserUse::Slab>, cce_slab_choosers>,
66 : tmpl::pair<TimeSequence<double>,
67 : TimeSequences::all_time_sequences<double>>,
68 : tmpl::pair<TimeSequence<std::uint64_t>,
69 : TimeSequences::all_time_sequences<std::uint64_t>>,
70 : tmpl::pair<Event, tmpl::list<Cce::Events::ObserveFields,
71 : Cce::Events::ObserveTimeStep>>,
72 : tmpl::pair<Trigger, tmpl::append<Triggers::logical_triggers,
73 : Triggers::time_triggers>>>;
74 : };
75 :
76 0 : using observed_reduction_data_tags = tmpl::list<>;
77 :
78 : static constexpr Options::String help{
79 : "Perform Cauchy Characteristic Extraction using .h5 input data.\n"
80 : "Uses regularity-preserving formulation."};
81 :
82 0 : static constexpr std::array<Parallel::Phase, 4> default_phase_order{
83 : {Parallel::Phase::Initialization,
84 : Parallel::Phase::InitializeTimeStepperHistory, Parallel::Phase::Evolve,
85 : Parallel::Phase::Exit}};
86 :
87 : // NOLINTNEXTLINE(google-runtime-references)
88 0 : void pup(PUP::er& /*p*/) {}
89 : };
|