EvolveGhValenciaDivClean.hpp
1 // 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/DiscontinuousGalerkin/Limiters/Tags.hpp"
13 #include "Evolution/Executables/GrMhd/GhValenciaDivClean/GhValenciaDivCleanBase.hpp"
14 #include "Evolution/Systems/GeneralizedHarmonic/ConstraintDamping/RegisterDerivedWithCharm.hpp"
15 #include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp"
16 #include "Evolution/Systems/GrMhd/GhValenciaDivClean/BoundaryConditions/RegisterDerived.hpp"
17 #include "Evolution/Systems/GrMhd/GhValenciaDivClean/BoundaryCorrections/RegisterDerived.hpp"
18 #include "Evolution/Systems/GrMhd/ValenciaDivClean/Tags.hpp"
19 #include "Evolution/VariableFixing/Tags.hpp"
20 #include "NumericalAlgorithms/Interpolation/Callbacks/ObserveTimeSeriesOnSurface.hpp"
21 #include "NumericalAlgorithms/Interpolation/InterpolationTarget.hpp"
22 #include "NumericalAlgorithms/Interpolation/Tags.hpp"
24 #include "Utilities/TMPL.hpp"
25 
26 template <typename InitialData, typename... InterpolationTargetTags>
27 struct EvolutionMetavars
28  : public virtual GhValenciaDivCleanDefaults,
30  EvolutionMetavars<InitialData, InterpolationTargetTags...>> {
31  using const_global_cache_tags = typename GhValenciaDivCleanTemplateBase<
32  EvolutionMetavars>::const_global_cache_tags;
33  using observed_reduction_data_tags = typename GhValenciaDivCleanTemplateBase<
34  EvolutionMetavars>::observed_reduction_data_tags;
35  using component_list = typename GhValenciaDivCleanTemplateBase<
36  EvolutionMetavars>::component_list;
37  using factory_creation = typename GhValenciaDivCleanTemplateBase<
38  EvolutionMetavars>::factory_creation;
39  template <typename ParallelComponent>
40  using registration_list = typename GhValenciaDivCleanTemplateBase<
41  EvolutionMetavars>::template registration_list<ParallelComponent>;
42 
43  static constexpr Options::String help{
44  "Evolve the Valencia formulation of the GRMHD system with divergence "
45  "cleaning, coupled to a dynamic spacetime evolved with the Generalized "
46  "Harmonic formulation\n"};
47 };
48 
49 static const std::vector<void (*)()> charm_init_node_funcs{
50  &setup_error_handling,
52  &domain::creators::register_derived_with_charm,
53  &domain::creators::time_dependence::register_derived_with_charm,
54  &domain::FunctionsOfTime::register_derived_with_charm,
55  &grmhd::GhValenciaDivClean::BoundaryConditions::register_derived_with_charm,
56  &grmhd::GhValenciaDivClean::BoundaryCorrections::
57  register_derived_with_charm,
58  &GeneralizedHarmonic::ConstraintDamping::register_derived_with_charm,
59  &Parallel::register_derived_classes_with_charm<TimeStepper>,
62  &Parallel::register_factory_classes_with_charm<metavariables>};
63 
64 static const std::vector<void (*)()> charm_init_proc_funcs{
RegisterDerivedClassesWithCharm.hpp
vector
disable_openblas_multithreading
void disable_openblas_multithreading() noexcept
Disable OpenBLAS multithreading since it conflicts with Charm++ parallelism.
EvolutionMetavars
Definition: EvolveBurgers.hpp:103
enable_floating_point_exceptions
void enable_floating_point_exceptions()
GhValenciaDivCleanDefaults
Definition: GhValenciaDivCleanBase.hpp:188
PhaseChange
PhaseChange objects determine the storage types and logic for moving between phases based on runtime ...
Definition: PhaseChange.hpp:141
Options::String
const char *const String
The string used in option structs.
Definition: Options.hpp:32
GhValenciaDivCleanTemplateBase
Definition: GhValenciaDivCleanBase.hpp:251
Parallel::register_derived_classes_with_charm
void register_derived_classes_with_charm() noexcept
Register derived classes of the Base class.
Definition: RegisterDerivedClassesWithCharm.hpp:35
TMPL.hpp