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