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/Tag.hpp"
7 : #include "DataStructures/Tensor/TypeAliases.hpp"
8 : #include "PointwiseFunctions/Hydro/TagsDeclarations.hpp"
9 : #include "Utilities/TMPL.hpp"
10 :
11 : /// \cond
12 : namespace gsl {
13 : template <typename>
14 : struct not_null;
15 : } // namespace gsl
16 : /// \endcond
17 :
18 : namespace hydro {
19 : /// @{
20 : /*!
21 : * \ingroup EquationsOfStateGroup
22 : * \brief Computes the relativistic specific enthalpy \f$h\f$ as:
23 : * \f$ h = 1 + \epsilon + \frac{p}{\rho} \f$
24 : * where \f$\epsilon\f$ is the specific internal energy, \f$p\f$
25 : * is the pressure, and \f$\rho\f$ is the rest mass density.
26 : */
27 : template <typename DataType>
28 1 : void relativistic_specific_enthalpy(
29 : gsl::not_null<Scalar<DataType>*> result,
30 : const Scalar<DataType>& rest_mass_density,
31 : const Scalar<DataType>& specific_internal_energy,
32 : const Scalar<DataType>& pressure);
33 :
34 : template <typename DataType>
35 1 : Scalar<DataType> relativistic_specific_enthalpy(
36 : const Scalar<DataType>& rest_mass_density,
37 : const Scalar<DataType>& specific_internal_energy,
38 : const Scalar<DataType>& pressure);
39 : /// @}
40 :
41 : namespace Tags {
42 : /// Compute item for the relativistic specific enthalpy \f$h\f$.
43 : ///
44 : /// Can be retrieved using `hydro::Tags::SpecificEnthalpy`
45 : template <typename DataType>
46 1 : struct SpecificEnthalpyCompute : SpecificEnthalpy<DataType>, db::ComputeTag {
47 0 : using argument_tags =
48 : tmpl::list<RestMassDensity<DataType>, SpecificInternalEnergy<DataType>,
49 : Pressure<DataType>>;
50 :
51 0 : using return_type = Scalar<DataType>;
52 :
53 0 : static constexpr auto function = static_cast<void (*)(
54 : gsl::not_null<Scalar<DataType>*>, const Scalar<DataType>&,
55 : const Scalar<DataType>&, const Scalar<DataType>&)>(
56 : &relativistic_specific_enthalpy<DataType>);
57 :
58 0 : using base = SpecificEnthalpy<DataType>;
59 : };
60 : } // namespace Tags
61 : } // namespace hydro
|