TimeDerivativeTerms.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
8 #include "Evolution/Systems/RelativisticEuler/Valencia/TagsDeclarations.hpp"
10 #include "PointwiseFunctions/GeneralRelativity/TagsDeclarations.hpp"
11 #include "PointwiseFunctions/Hydro/TagsDeclarations.hpp"
12 #include "Utilities/TMPL.hpp"
13 
14 /// \cond
15 namespace gsl {
16 template <typename T>
17 class not_null;
18 } // namespace gsl
19 
20 class DataVector;
21 /// \endcond
22 
24 /*!
25  * \brief Compute the time derivative of the conserved variables for the
26  * Valencia formulation of the relativistic Euler equations.
27  */
28 template <size_t Dim>
31  using type = Scalar<DataVector>;
32  };
34  using type = Scalar<DataVector>;
35  };
36 
38  using type = tnsr::I<DataVector, Dim, Frame::Inertial>;
39  };
41  using type = tnsr::II<DataVector, Dim, Frame::Inertial>;
42  };
43 
44  using temporary_tags = tmpl::list<
45  // Flux terms
47 
48  // Source terms
50 
51  using argument_tags = tmpl::list<
55 
56  // For fluxes (and maybe sources)
60 
61  // For sources
67 
68  static void apply(
69  gsl::not_null<Scalar<DataVector>*> /*non_flux_terms_dt_tilde_d*/,
70  gsl::not_null<Scalar<DataVector>*> non_flux_terms_dt_tilde_tau,
71  gsl::not_null<tnsr::i<DataVector, Dim, Frame::Inertial>*>
72  non_flux_terms_dt_tilde_s,
73 
74  gsl::not_null<tnsr::I<DataVector, Dim, Frame::Inertial>*> tilde_d_flux,
75  gsl::not_null<tnsr::I<DataVector, Dim, Frame::Inertial>*> tilde_tau_flux,
76  gsl::not_null<tnsr::Ij<DataVector, Dim, Frame::Inertial>*> tilde_s_flux,
77 
78  // For fluxes
79  gsl::not_null<Scalar<DataVector>*> pressure_lapse_sqrt_det_spatial_metric,
80  gsl::not_null<Scalar<DataVector>*> transport_velocity,
81 
82  // For sources
83  gsl::not_null<tnsr::I<DataVector, Dim, Frame::Inertial>*> tilde_s_up,
84  gsl::not_null<tnsr::II<DataVector, Dim, Frame::Inertial>*>
85  densitized_stress,
86 
87  // For fluxes and sources
88  const Scalar<DataVector>& tilde_d, const Scalar<DataVector>& tilde_tau,
89  const tnsr::i<DataVector, Dim, Frame::Inertial>& tilde_s,
91  const tnsr::I<DataVector, Dim, Frame::Inertial>& shift,
92  const Scalar<DataVector>& sqrt_det_spatial_metric,
93  const Scalar<DataVector>& pressure,
94  const tnsr::I<DataVector, Dim, Frame::Inertial>& spatial_velocity,
95 
96  // For sources
97  const tnsr::i<DataVector, Dim, Frame::Inertial>& d_lapse,
98  const tnsr::iJ<DataVector, Dim, Frame::Inertial>& d_shift,
99  const tnsr::ijj<DataVector, Dim, Frame::Inertial>& d_spatial_metric,
100  const tnsr::II<DataVector, Dim, Frame::Inertial>& inv_spatial_metric,
101  const tnsr::ii<DataVector, Dim, Frame::Inertial>&
102  extrinsic_curvature) noexcept;
103 };
104 } // namespace RelativisticEuler::Valencia
hydro::Tags::Pressure
The fluid pressure .
Definition: Tags.hpp:119
DataBoxTag.hpp
Frame::Inertial
Definition: IndexType.hpp:44
RelativisticEuler::Valencia::TimeDerivativeTerms
Compute the time derivative of the conserved variables for the Valencia formulation of the relativist...
Definition: TimeDerivativeTerms.hpp:29
RelativisticEuler::Valencia::TimeDerivativeTerms::PressureLapseSqrtDetSpatialMetric
Definition: TimeDerivativeTerms.hpp:30
RelativisticEuler::Valencia::TimeDerivativeTerms::DensitizedStress
Definition: TimeDerivativeTerms.hpp:40
RelativisticEuler::Valencia
The Valencia formulation of the relativistic Euler System See Chapter 7 of Relativistic Hydrodynamics...
Definition: Characteristics.hpp:30
db::SimpleTag
Tags for the DataBox inherit from this type.
Definition: Tag.hpp:23
RelativisticEuler::Valencia::TimeDerivativeTerms::TransportVelocity
Definition: TimeDerivativeTerms.hpp:33
gr::lapse
Scalar< DataType > lapse(const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric) noexcept
Compute lapse from shift and spacetime metric.
RelativisticEuler::Valencia::Tags::TildeTau
The densitized energy density .
Definition: Tags.hpp:33
DataVector
Stores a collection of function values.
Definition: DataVector.hpp:42
RelativisticEuler::Valencia::Tags::TildeS
The densitized momentum density .
Definition: Tags.hpp:39
gr::Tags::Shift
Definition: Tags.hpp:48
gr::shift
tnsr::I< DataType, SpatialDim, Frame > shift(const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) noexcept
Compute shift from spacetime metric and inverse spatial metric.
Scalar
Tensor< T, Symmetry<>, index_list<> > Scalar
Definition: TypeAliases.hpp:21
TypeAliases.hpp
hydro::Tags::SpatialVelocity
The spatial velocity of the fluid, where . Here is the spatial part of the 4-velocity of the fluid,...
Definition: Tags.hpp:142
RelativisticEuler::Valencia::Tags::TildeD
The densitized rest-mass density .
Definition: Tags.hpp:28
Tags::deriv
Prefix indicating spatial derivatives.
Definition: PartialDerivatives.hpp:53
gr::Tags::ExtrinsicCurvature
Definition: Tags.hpp:110
PartialDerivatives.hpp
RelativisticEuler::Valencia::TimeDerivativeTerms::TildeSUp
Definition: TimeDerivativeTerms.hpp:37
gsl
Implementations from the Guideline Support Library.
Definition: Gsl.hpp:80
gr::Tags::Lapse
Definition: Tags.hpp:52
TMPL.hpp
StrahlkorperGr::extrinsic_curvature
void extrinsic_curvature(gsl::not_null< tnsr::ii< DataVector, 3, Frame > * > result, const tnsr::ii< DataVector, 3, Frame > &grad_normal, const tnsr::i< DataVector, 3, Frame > &unit_normal_one_form, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector) noexcept
Extrinsic curvature of a 2D Strahlkorper embedded in a 3D space.
gr::Tags::InverseSpatialMetric
Inverse of the spatial metric.
Definition: Tags.hpp:33
gsl::not_null
Require a pointer to not be a nullptr
Definition: Gsl.hpp:183
gr::Tags::SqrtDetSpatialMetric
Definition: Tags.hpp:44