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/Tensor/TypeAliases.hpp"
7 : #include "Utilities/Gsl.hpp"
8 :
9 : namespace hydro {
10 :
11 : /*!
12 : * \brief The total mass-energy density measured by a normal observer, $E = n_a
13 : * n_b T^{ab}$
14 : *
15 : * This quantity sources the gravitational field equations in the 3+1
16 : * decomposition (see Eq. (2.138) in \cite BaumgarteShapiro).
17 : *
18 : * Perfect fluid contribution (Eq. (5.33) in \cite BaumgarteShapiro):
19 : *
20 : * \begin{equation}
21 : * E_\mathrm{fluid} = \rho h W^2 - p
22 : * \end{equation}
23 : *
24 : * Magnetic field contribution (Eq. (5.152) in \cite BaumgarteShapiro):
25 : *
26 : * \begin{equation}
27 : * E_\mathrm{em} = b^2 \left(W^2 - \frac{1}{2}\right) - (\alpha b^t)^2
28 : * \end{equation}
29 : *
30 : * where $\alpha b^t = W B^k v_k$.
31 : *
32 : * \param result Output buffer. Will be resized if needed.
33 : * \param rest_mass_density $\rho$
34 : * \param specific_enthalpy $h$
35 : * \param pressure $p$
36 : * \param lorentz_factor $W$
37 : * \param magnetic_field_dot_spatial_velocity $B^k v_k$
38 : * \param comoving_magnetic_field_squared $b^2$
39 : *
40 : * \see gr::Tags::EnergyDensity
41 : */
42 : template <typename DataType>
43 1 : void energy_density(gsl::not_null<Scalar<DataType>*> result,
44 : const Scalar<DataType>& rest_mass_density,
45 : const Scalar<DataType>& specific_enthalpy,
46 : const Scalar<DataType>& pressure,
47 : const Scalar<DataType>& lorentz_factor,
48 : const Scalar<DataType>& magnetic_field_dot_spatial_velocity,
49 : const Scalar<DataType>& comoving_magnetic_field_squared);
50 :
51 : /*!
52 : * \brief The spatial momentum density $S^i = -\gamma^{ij} n^a T_{aj}$
53 : *
54 : * This quantity sources the gravitational field equations in the 3+1
55 : * decomposition (see Eq. (2.138) in \cite BaumgarteShapiro).
56 : *
57 : * Perfect fluid contribution (Eq. (5.34) in \cite BaumgarteShapiro):
58 : *
59 : * \begin{equation}
60 : * S^i_\mathrm{fluid} = \rho h W^2 v^i
61 : * \end{equation}
62 : *
63 : * Magnetic field contribution (Eq. (5.153) in \cite BaumgarteShapiro):
64 : *
65 : * \begin{equation}
66 : * S^i_\mathrm{em} = b^2 W^2 v^i - \alpha b^t \gamma^{ij} b_j
67 : * \end{equation}
68 : *
69 : * where $\alpha b^t \gamma^{ij} b_j = B^k v_k B^i + (B^k v_k)^2 W^2 v^i$.
70 : *
71 : * \param result Output buffer. Will be resized if needed.
72 : * \param rest_mass_density $\rho$
73 : * \param specific_enthalpy $h$
74 : * \param spatial_velocity $v^i$
75 : * \param lorentz_factor $W$
76 : * \param magnetic_field $B^i$
77 : * \param magnetic_field_dot_spatial_velocity $B^k v_k$
78 : * \param comoving_magnetic_field_squared $b^2$
79 : *
80 : * \see gr::Tags::MomentumDensity
81 : */
82 : template <typename DataType>
83 1 : void momentum_density(
84 : gsl::not_null<tnsr::I<DataType, 3>*> result,
85 : const Scalar<DataType>& rest_mass_density,
86 : const Scalar<DataType>& specific_enthalpy,
87 : const tnsr::I<DataType, 3>& spatial_velocity,
88 : const Scalar<DataType>& lorentz_factor,
89 : const tnsr::I<DataType, 3>& magnetic_field,
90 : const Scalar<DataType>& magnetic_field_dot_spatial_velocity,
91 : const Scalar<DataType>& comoving_magnetic_field_squared);
92 :
93 : /*!
94 : * \brief The trace of the spatial stress tensor, $S =
95 : * \gamma^{ij}\gamma_{ia}\gamma_{jb}T^{ab}$
96 : *
97 : * This quantity sources the gravitational field equations in the 3+1
98 : * decomposition (see Eq. (2.138) in \cite BaumgarteShapiro).
99 : *
100 : * Perfect fluid contribution (Eq. (5.36) in \cite BaumgarteShapiro):
101 : *
102 : * \begin{equation}
103 : * S_\mathrm{fluid} = 3 p + \rho h (W^2 - 1)
104 : * \end{equation}
105 : *
106 : * Magnetic field contribution (Eq. (5.155) in \cite BaumgarteShapiro):
107 : *
108 : * \begin{equation}
109 : * S_\mathrm{em} = b^2 (W^2 v^2 + \frac{3}{2}) - \gamma^{ij} b_i b_j
110 : * \end{equation}
111 : *
112 : * where $\gamma^{ij} b_i b_j = b^2 + (B^k v_k)^2 (W^2 v^2 + 1)$.
113 : *
114 : * \param result Output buffer. Will be resized if needed.
115 : * \param rest_mass_density $\rho$
116 : * \param specific_enthalpy $h$
117 : * \param pressure $p$
118 : * \param spatial_velocity_squared $v^2 = \gamma_{ij} v^i v^j$
119 : * \param lorentz_factor $W$
120 : * \param magnetic_field_dot_spatial_velocity $B^k v_k$
121 : * \param comoving_magnetic_field_squared $b^2$
122 : *
123 : * \see gr::Tags::StressTrace
124 : */
125 : template <typename DataType>
126 1 : void stress_trace(gsl::not_null<Scalar<DataType>*> result,
127 : const Scalar<DataType>& rest_mass_density,
128 : const Scalar<DataType>& specific_enthalpy,
129 : const Scalar<DataType>& pressure,
130 : const Scalar<DataType>& spatial_velocity_squared,
131 : const Scalar<DataType>& lorentz_factor,
132 : const Scalar<DataType>& magnetic_field_dot_spatial_velocity,
133 : const Scalar<DataType>& comoving_magnetic_field_squared);
134 :
135 : /*!
136 : * \brief Stress Energy Tesnor, $T^{ab}=
137 : * (\rho h)^{*} u^a u ^b + p^{*} g^{ab} - b^{a} b^{b}$,
138 : *
139 : * where $(\rho h)^{*} = \rho h + b^{2}$ and $p^{*} = p + b^{2}/2$
140 : * are the enthalpy density and fluid pressure augmented by contributions of
141 : * magnetic pressure $p_{mag}$ = b^{2}/2, respectively.
142 : *
143 : * $b$ refers to magnetic field measured in the comoving frame of the fluid
144 : * $b^{a} = ^{*}F^{ab} u_{b}$.
145 : */
146 : template <typename DataType>
147 1 : void stress_energy_tensor(
148 : gsl::not_null<tnsr::AA<DataType, 3>*> result,
149 : const Scalar<DataType>& rest_mass_density,
150 : const Scalar<DataType>& specific_internal_energy,
151 : const Scalar<DataType>& pressure, const Scalar<DataType>& lorentz_factor,
152 : const Scalar<DataType>& lapse,
153 : const Scalar<DataType>& comoving_magnetic_field_magnitude,
154 : const tnsr::I<DataType, 3>& spatial_velocity,
155 : const tnsr::I<DataType, 3>& shift,
156 : const tnsr::I<DataType, 3>& magnetic_field,
157 : const tnsr::ii<DataType, 3>& spatial_metric,
158 : const tnsr::II<DataType, 3>& inverse_spatial_metric);
159 : } // namespace hydro
|