Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include "DataStructures/DataBox/DataBoxTag.hpp" 7 : #include "DataStructures/DataBox/Tag.hpp" 8 : #include "DataStructures/DataVector.hpp" 9 : #include "DataStructures/Tensor/Tensor.hpp" 10 : #include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp" 11 : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp" 12 : #include "PointwiseFunctions/Hydro/Tags.hpp" 13 : #include "Utilities/TMPL.hpp" 14 : 15 : namespace grmhd::GhValenciaDivClean { 16 : /// %Tags for the combined system of the Generalized Harmonic formulation for 17 : /// the Einstein field equations and the Valencia GRMHD formulation. 18 : namespace Tags { 19 : namespace detail { 20 : // A const reference to another tag, used for rerouting arguments in the 21 : // combined system utilities 22 : template <typename Tag, typename Type = db::const_item_type<Tag, tmpl::list<>>> 23 : struct TemporaryReference { 24 : using tag = Tag; 25 : using type = const Type&; 26 : }; 27 : } // namespace detail 28 : 29 : /// Represents the trace reversed stress-energy tensor of the matter in the MHD 30 : /// sector of the GRMHD system 31 1 : struct TraceReversedStressEnergy : db::SimpleTag { 32 0 : using type = tnsr::aa<DataVector, 3>; 33 : }; 34 : 35 : /// Represents the stress-energy tensor of the matter in the MHD sector of the 36 : /// GRMHD system 37 1 : struct StressEnergy : db::SimpleTag { 38 0 : using type = tnsr::aa<DataVector, 3>; 39 : }; 40 : 41 : /// The comoving magnetic field \f$b^\mu\f$ 42 1 : struct ComovingMagneticField : db::SimpleTag { 43 0 : using type = tnsr::A<DataVector, 3>; 44 : }; 45 : 46 : /// The fluid four-velocity \f$u^\mu\f$ 47 1 : struct FourVelocity : db::SimpleTag { 48 0 : using type = tnsr::A<DataVector, 3>; 49 : }; 50 : 51 : /// The down-index comoving magnetic field \f$b_\mu\f$ 52 1 : struct ComovingMagneticFieldOneForm : db::SimpleTag { 53 0 : using type = tnsr::a<DataVector, 3>; 54 : }; 55 : 56 : /// The down-index four-velocity \f$u_\mu\f$ 57 1 : struct FourVelocityOneForm : db::SimpleTag { 58 0 : using type = tnsr::a<DataVector, 3>; 59 : }; 60 : 61 : /// \brief Tags sent for GRMHD primitive variable reconstruction. All tags sent 62 : /// are the reconstruciton+spacetime tags 63 1 : using primitive_grmhd_reconstruction_tags = 64 : tmpl::list<hydro::Tags::RestMassDensity<DataVector>, 65 : hydro::Tags::ElectronFraction<DataVector>, 66 : hydro::Tags::Temperature<DataVector>, 67 : hydro::Tags::LorentzFactorTimesSpatialVelocity<DataVector, 3>, 68 : hydro::Tags::MagneticField<DataVector, 3>, 69 : hydro::Tags::DivergenceCleaningField<DataVector>>; 70 : 71 : /// \brief Tags sent for spacetime evolution. All tags sent are the 72 : /// reconstruciton+spacetime tags 73 1 : using spacetime_reconstruction_tags = 74 : tmpl::list<gr::Tags::SpacetimeMetric<DataVector, 3>, 75 : gh::Tags::Pi<DataVector, 3>, gh::Tags::Phi<DataVector, 3>>; 76 : 77 : /// \brief All tags sent for primitive reconstruction, both GRMHD and spacetime 78 : /// evolution tags. 79 1 : using primitive_grmhd_and_spacetime_reconstruction_tags = 80 : tmpl::append<primitive_grmhd_reconstruction_tags, 81 : spacetime_reconstruction_tags>; 82 : } // namespace Tags 83 : } // namespace grmhd::GhValenciaDivClean