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/Systems/GrMhd/GhValenciaDivClean/Actions/SetInitialData.hpp" 7 : #include "PointwiseFunctions/AnalyticData/GhGrMhd/Factory.hpp" 8 : #include "PointwiseFunctions/AnalyticSolutions/GeneralRelativity/Factory.hpp" 9 : #include "PointwiseFunctions/AnalyticSolutions/GhGrMhd/Factory.hpp" 10 : #include "PointwiseFunctions/AnalyticSolutions/GhRelativisticEuler/Factory.hpp" 11 : #include "PointwiseFunctions/AnalyticSolutions/RadiationTransport/MonteCarlo/Factory.hpp" 12 : #include "Utilities/TMPL.hpp" 13 : 14 : // Check if SpEC is linked and therefore we can load SpEC initial data 15 : #ifdef HAS_SPEC_EXPORTER 16 : #include "PointwiseFunctions/AnalyticData/GrMhd/SpecInitialData.hpp" 17 : using SpecInitialDataList = tmpl::list<grmhd::AnalyticData::SpecInitialData<1>, 18 : grmhd::AnalyticData::SpecInitialData<2>, 19 : grmhd::AnalyticData::SpecInitialData<3>>; 20 : #else 21 0 : using SpecInitialDataList = NoSuchType; 22 : #endif 23 : 24 : // Check if FUKA is linked and therefore we can load FUKA initial data 25 : #ifdef HAS_FUKA_EXPORTER 26 : #include "PointwiseFunctions/AnalyticData/GrMhd/FukaInitialData.hpp" 27 : using FukaInitialDataList = tmpl::list<grmhd::AnalyticData::FukaInitialData>; 28 : #else 29 0 : using FukaInitialDataList = NoSuchType; 30 : #endif 31 : 32 0 : namespace ghmhd::GhValenciaDivClean::InitialData { 33 : // These are solutions that can be used for analytic prescriptions 34 0 : using analytic_solutions_and_data_list = 35 : tmpl::append<gh::RelativisticEuler::Solutions::all_solutions, 36 : gh::grmhd::Solutions::all_solutions, 37 : RadiationTransport::MonteCarlo::Solutions::all_solutions, 38 : gh::grmhd::AnalyticData::all_analytic_data>; 39 0 : using initial_data_list = tmpl::flatten<tmpl::list< 40 : analytic_solutions_and_data_list, 41 : tmpl::flatten<tmpl::list< 42 : grmhd::GhValenciaDivClean::NumericInitialData, 43 : tmpl::conditional_t<std::is_same_v<SpecInitialDataList, NoSuchType>, 44 : tmpl::list<>, SpecInitialDataList>, 45 : tmpl::conditional_t<std::is_same_v<FukaInitialDataList, NoSuchType>, 46 : tmpl::list<>, FukaInitialDataList>>>>>; 47 : } // namespace ghmhd::GhValenciaDivClean::InitialData