System.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <cstddef>
7 
8 #include "DataStructures/Tensor/EagerMath/Magnitude.hpp"
10 #include "Evolution/Conservative/ConservativeDuDt.hpp"
11 #include "Evolution/Systems/RadiationTransport/M1Grey/Fluxes.hpp"
12 #include "Evolution/Systems/RadiationTransport/M1Grey/Sources.hpp"
13 #include "Evolution/Systems/RadiationTransport/M1Grey/Tags.hpp"
14 #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
15 #include "PointwiseFunctions/Hydro/Tags.hpp"
16 #include "Utilities/TMPL.hpp"
17 
18 namespace Tags {
19 template <class>
20 class Variables;
21 } // namespace Tags
22 
23 /// \ingroup EvolutionSystemsGroup
24 /// \brief Items related to general relativistic radiation transport
25 namespace RadiationTransport {
26 /// The M1 scheme for radiation transport
27 ///
28 /// References:
29 /// - Post-merger evolution of a neutron star-black hole binary with
30 /// neutrino transport, \cite Foucart2015vpa
31 namespace M1Grey {
32 
33 template <typename NeutrinoSpeciesList>
34 struct System;
35 
36 template <typename... NeutrinoSpecies>
37 struct System<tmpl::list<NeutrinoSpecies...>> {
38  static constexpr bool is_in_flux_conservative_form = true;
39  static constexpr bool has_primitive_and_conservative_vars = false;
40  static constexpr size_t volume_dim = 3;
41  // If coupling to hydro, we'll want 3D equations of state
42  // i.e. P(rho,T,Ye)... but this is not implemented yet.
43  // For early tests of M1, we'll ignore coupling to the fluid
44  // and provide analytical expressions for its 4-velocity / LorentzFactor
45  //static constexpr size_t thermodynamic_dim = 3;
46 
48  tmpl::list<Tags::TildeE<Frame::Inertial, NeutrinoSpecies>...,
50 
51  using spacetime_variables_tag = ::Tags::Variables<tmpl::list<
56  ::Tags::deriv<gr::Tags::Lapse<DataVector>, tmpl::size_t<3>,
58  ::Tags::deriv<gr::Tags::Shift<3, Frame::Inertial, DataVector>,
59  tmpl::size_t<3>, Frame::Inertial>,
60  ::Tags::deriv<gr::Tags::SpatialMetric<3, Frame::Inertial, DataVector>,
61  tmpl::size_t<3>, Frame::Inertial>,
63 
65  tmpl::list<hydro::Tags::LorentzFactor<DataVector>,
67 
68  using m1_variables_tag = ::Tags::Variables<tmpl::list<
73 
74  template <typename Tag>
76  Tag, gr::Tags::InverseSpatialMetric<3, Frame::Inertial, DataVector>>;
77 
78  using volume_fluxes = ComputeFluxes<NeutrinoSpecies...>;
79 
80  using volume_sources = ComputeSources<NeutrinoSpecies...>;
81 
83 
84  using sourced_variables =
85  tmpl::list<Tags::TildeE<Frame::Inertial, NeutrinoSpecies>...,
87 };
88 } // namespace M1Grey
89 } // namespace RadiationTransport
Definition: Variables.hpp:46
The spatial velocity of the fluid, where . Here is the spatial part of the 4-velocity of the fluid...
Definition: Tags.hpp:156
Definition: Digraph.hpp:11
The M1 closure factor of neutrinos of a given species .
Definition: Tags.hpp:68
Items related to general relativistic radiation transport.
Definition: Fluxes.cpp:16
Definition: Tags.hpp:59
The densitized pressure tensor of neutrinos of a given species computed from , using the M1 closure...
Definition: Tags.hpp:47
Inverse of the spatial metric.
Definition: Tags.hpp:36
Compute the curvature source terms for the flux-balanced grey M1 radiation transport.
Definition: Sources.hpp:74
Calculate for a conservative system.
Definition: ConservativeDuDt.hpp:26
The densitized momentum density of neutrinos of a given species .
Definition: Tags.hpp:36
The fluid-frame densitized energy density of neutrinos of a given species .
Definition: Tags.hpp:78
The normal component of the fluid-frame momentum density of neutrinos of a given species ...
Definition: Tags.hpp:88
Definition: Tags.hpp:28
Defines class Variables.
Definition: Tags.hpp:54
Definition: DataBoxTag.hpp:29
Definition: System.hpp:34
Wraps the template metaprogramming library used (brigand)
The magnitude of a (co)vector with respect to a specific metric.
Definition: Magnitude.hpp:90
Definition: IndexType.hpp:44
The spatial components of the fluid-frame momentum density of neutrinos of a given species ...
Definition: Tags.hpp:98
The fluxes of the conservative variables in the M1 scheme.
Definition: Fluxes.hpp:61
Definition: Tags.hpp:148