Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 : #include <string>
8 :
9 : #include "DataStructures/DataBox/Tag.hpp"
10 : #include "DataStructures/Tensor/IndexType.hpp"
11 : #include "DataStructures/Tensor/TypeAliases.hpp"
12 : #include "PointwiseFunctions/GeneralRelativity/TagsDeclarations.hpp"
13 : #include "PointwiseFunctions/Hydro/Tags.hpp"
14 : #include "PointwiseFunctions/Hydro/TagsDeclarations.hpp"
15 : #include "Utilities/Gsl.hpp"
16 :
17 : namespace hydro::Tags {
18 :
19 : /*!
20 : * \brief Computes $u_i=W \gamma_{ij} v^j$, where $W$ is the Lorentz factor,
21 : * $\gamma_{ij}$ is the spatial metric, and $v^j$ is the spatial velocity.
22 : *
23 : */
24 1 : struct LowerSpatialFourVelocityCompute
25 : : LowerSpatialFourVelocity<DataVector, 3, Frame::Inertial>,
26 : db::ComputeTag {
27 0 : using base = LowerSpatialFourVelocity<DataVector, 3, Frame::Inertial>;
28 0 : using argument_tags =
29 : tmpl::list<SpatialVelocity<DataVector, 3, Frame::Inertial>,
30 : gr::Tags::SpatialMetric<DataVector, 3>,
31 : LorentzFactor<DataVector>>;
32 0 : static void function(const gsl::not_null<tnsr::i<DataVector, 3>*> result,
33 : const tnsr::I<DataVector, 3>& spatial_velocity,
34 : const tnsr::ii<DataVector, 3>& spatial_metric,
35 : const Scalar<DataVector>& lorentz_factor);
36 : };
37 :
38 : } // namespace hydro::Tags
|