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<false> { 53 0 : using system = Cce::System<evolve_ccm>; 54 : static constexpr bool local_time_stepping = true; 55 0 : using cce_boundary_component = BoundaryComponent<EvolutionMetavars>; 56 : 57 0 : using component_list = 58 : tmpl::list<observers::ObserverWriter<EvolutionMetavars>, 59 : cce_boundary_component, 60 : Cce::CharacteristicEvolution<EvolutionMetavars>>; 61 : 62 : struct factory_creation 63 : : tt::ConformsTo<Options::protocols::FactoryCreation> { 64 0 : using factory_classes = tmpl::map< 65 : tmpl::pair<LtsTimeStepper, TimeSteppers::lts_time_steppers>, 66 : tmpl::pair<StepChooser<StepChooserUse::LtsStep>, cce_step_choosers>, 67 : tmpl::pair<StepChooser<StepChooserUse::Slab>, cce_slab_choosers>, 68 : tmpl::pair<TimeSequence<double>, 69 : TimeSequences::all_time_sequences<double>>, 70 : tmpl::pair<TimeSequence<std::uint64_t>, 71 : TimeSequences::all_time_sequences<std::uint64_t>>, 72 : tmpl::pair<Event, tmpl::list<Cce::Events::ObserveFields, 73 : Cce::Events::ObserveTimeStep>>, 74 : tmpl::pair<Trigger, tmpl::append<Triggers::logical_triggers, 75 : Triggers::time_triggers>>>; 76 : }; 77 : 78 0 : using observed_reduction_data_tags = tmpl::list<>; 79 : 80 : static constexpr Options::String help{ 81 : "Perform Cauchy Characteristic Extraction using .h5 input data.\n" 82 : "Uses regularity-preserving formulation."}; 83 : 84 0 : static constexpr std::array<Parallel::Phase, 4> default_phase_order{ 85 : {Parallel::Phase::Initialization, 86 : Parallel::Phase::InitializeTimeStepperHistory, Parallel::Phase::Evolve, 87 : Parallel::Phase::Exit}}; 88 : 89 : // NOLINTNEXTLINE(google-runtime-references) 90 0 : void pup(PUP::er& /*p*/) {} 91 : };