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 : : hydro::Tags::LowerSpatialFourVelocity<DataVector, 3, Frame::Inertial>, 26 : db::ComputeTag { 27 0 : using base = 28 : hydro::Tags::LowerSpatialFourVelocity<DataVector, 3, Frame::Inertial>; 29 0 : using argument_tags = 30 : tmpl::list<hydro::Tags::SpatialVelocity<DataVector, 3, Frame::Inertial>, 31 : gr::Tags::SpatialMetric<DataVector, 3>, 32 : hydro::Tags::LorentzFactor<DataVector>>; 33 0 : static void function(const gsl::not_null<tnsr::i<DataVector, 3>*> result, 34 : const tnsr::I<DataVector, 3>& spatial_velocity, 35 : const tnsr::ii<DataVector, 3>& spatial_metric, 36 : const Scalar<DataVector>& lorentz_factor); 37 : }; 38 : 39 : } // namespace hydro::Tags