Line data Source code
1 1 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : /// \file 5 : /// Defines tags related to domain quantities 6 : 7 : #pragma once 8 : 9 : #include "Domain/Tags.hpp" 10 : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp" 11 : #include "PointwiseFunctions/Hydro/Tags.hpp" 12 : 13 : namespace Frame { 14 : struct Fluid; 15 : struct Inertial; 16 : } // namespace Frame 17 : 18 : namespace Particles::MonteCarlo { 19 : 20 : /// Inverse Jacobian of the map from inertial coordinate to an orthonormal frame 21 : /// comoving with the fluid. That frame uses the 4-velocity as its time axis, 22 : /// and constructs the other members of the tetrads using Gram-Schmidt's 23 : /// algorithm. 24 1 : struct InverseJacobianInertialToFluidCompute 25 : : domain::Tags::InverseJacobian<4, Frame::Inertial, Frame::Fluid>, 26 : db::ComputeTag { 27 0 : using base = domain::Tags::InverseJacobian<4, typename Frame::Inertial, 28 : typename Frame::Fluid>; 29 0 : using return_type = typename base::type; 30 0 : using argument_tags = 31 : tmpl::list<hydro::Tags::SpatialVelocity<DataVector, 3, Frame::Inertial>, 32 : hydro::Tags::LorentzFactor<DataVector>, 33 : gr::Tags::Lapse<DataVector>, 34 : gr::Tags::Shift<DataVector, 3, Frame::Inertial>, 35 : gr::Tags::SpatialMetric<DataVector, 3> >; 36 : 37 0 : static void function(gsl::not_null<return_type*> inv_jacobian, 38 : const tnsr::I<DataVector, 3>& spatial_velocity, 39 : const Scalar<DataVector>& lorentz_factor, 40 : const Scalar<DataVector>& lapse, 41 : const tnsr::I<DataVector, 3, Frame::Inertial>& shift, 42 : const tnsr::ii<DataVector, 3>& spatial_metric); 43 : }; 44 : 45 : } // namespace Particles::MonteCarlo