Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <vector> 7 : 8 : #include "ApparentHorizons/Tags.hpp" 9 : #include "Domain/Creators/RegisterDerivedWithCharm.hpp" 10 : #include "Domain/Creators/TimeDependence/RegisterDerivedWithCharm.hpp" 11 : #include "Domain/FunctionsOfTime/RegisterDerivedWithCharm.hpp" 12 : #include "Evolution/DgSubcell/GetTciDecision.hpp" 13 : #include "Evolution/DgSubcell/NeighborReconstructedFaceSolution.hpp" 14 : #include "Evolution/DgSubcell/NeighborTciDecision.hpp" 15 : #include "Evolution/DiscontinuousGalerkin/Limiters/Tags.hpp" 16 : #include "Evolution/Executables/GrMhd/GhValenciaDivClean/GhValenciaDivCleanBase.hpp" 17 : #include "Evolution/Systems/GeneralizedHarmonic/ConstraintDamping/RegisterDerivedWithCharm.hpp" 18 : #include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp" 19 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/BoundaryCorrections/RegisterDerived.hpp" 20 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/FiniteDifference/Factory.hpp" 21 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/FiniteDifference/RegisterDerivedWithCharm.hpp" 22 : #include "Evolution/Systems/GrMhd/ValenciaDivClean/Tags.hpp" 23 : #include "Evolution/VariableFixing/Tags.hpp" 24 : #include "ParallelAlgorithms/Interpolation/Callbacks/ObserveTimeSeriesOnSurface.hpp" 25 : #include "ParallelAlgorithms/Interpolation/InterpolationTarget.hpp" 26 : #include "ParallelAlgorithms/Interpolation/Tags.hpp" 27 : #include "PointwiseFunctions/Hydro/EquationsOfState/RegisterDerivedWithCharm.hpp" 28 : #include "Utilities/ErrorHandling/SegfaultHandler.hpp" 29 : #include "Utilities/Serialization/RegisterDerivedClassesWithCharm.hpp" 30 : #include "Utilities/TMPL.hpp" 31 : 32 : template <typename InitialData, typename... InterpolationTargetTags> 33 : struct EvolutionMetavars 34 : : public GhValenciaDivCleanTemplateBase< 35 : EvolutionMetavars<InitialData, InterpolationTargetTags...>, true> { 36 0 : using base = GhValenciaDivCleanTemplateBase< 37 : EvolutionMetavars<InitialData, InterpolationTargetTags...>, true>; 38 0 : using const_global_cache_tags = typename base::const_global_cache_tags; 39 0 : using observed_reduction_data_tags = 40 : typename base::observed_reduction_data_tags; 41 0 : using component_list = typename base::component_list; 42 0 : using factory_creation = typename base::factory_creation; 43 : template <typename ParallelComponent> 44 0 : using registration_list = 45 : typename base::template registration_list<ParallelComponent>; 46 : 47 : static constexpr Options::String help{ 48 : "Evolve the Valencia formulation of the GRMHD system with divergence " 49 : "cleaning, coupled to a dynamic spacetime evolved with the Generalized " 50 : "Harmonic formulation\n"}; 51 : }; 52 : 53 : static const std::vector<void (*)()> charm_init_node_funcs{ 54 : &setup_error_handling, 55 : &setup_memory_allocation_failure_reporting, 56 : &disable_openblas_multithreading, 57 : &domain::creators::register_derived_with_charm, 58 : &domain::creators::time_dependence::register_derived_with_charm, 59 : &domain::FunctionsOfTime::register_derived_with_charm, 60 : &grmhd::GhValenciaDivClean::BoundaryCorrections:: 61 : register_derived_with_charm, 62 : &grmhd::GhValenciaDivClean::fd::register_derived_with_charm, 63 : &EquationsOfState::register_derived_with_charm, 64 : &gh::ConstraintDamping::register_derived_with_charm, 65 : ®ister_factory_classes_with_charm<metavariables>}; 66 : 67 : static const std::vector<void (*)()> charm_init_proc_funcs{ 68 : &enable_floating_point_exceptions, &enable_segfault_handler};