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/GeneralRelativity/TagsDeclarations.hpp" 9 : #include "PointwiseFunctions/Hydro/Tags.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : /// \cond 13 : class DataVector; 14 : namespace gsl { 15 : template <typename T> 16 : class not_null; 17 : } // namespace gsl 18 : /// \endcond 19 : 20 : namespace grmhd::ValenciaDivClean::Tags { 21 : /*! 22 : * \brief Compute the magnitude of the comoving magnetic field. 23 : * 24 : * \f{align} 25 : * \sqrt{b^2} = \left( \frac{B^2}{W^2} + (B^iv_i)^2 \right)^{1/2} 26 : * \f} 27 : * 28 : * \note This ComputeTag is for observation and monitoring purpose, not related 29 : * to the actual time evolution. 30 : * 31 : */ 32 1 : struct ComovingMagneticFieldMagnitudeCompute 33 : : hydro::Tags::ComovingMagneticFieldMagnitude<DataVector>, 34 : db::ComputeTag { 35 0 : using argument_tags = tmpl::list<hydro::Tags::MagneticField<DataVector, 3>, 36 : hydro::Tags::SpatialVelocity<DataVector, 3>, 37 : hydro::Tags::LorentzFactor<DataVector>, 38 : gr::Tags::SpatialMetric<DataVector, 3>>; 39 0 : using return_type = Scalar<DataVector>; 40 0 : using base = hydro::Tags::ComovingMagneticFieldMagnitude<DataVector>; 41 : 42 0 : static void function( 43 : gsl::not_null<Scalar<DataVector>*> comoving_magnetic_field_magnitude, 44 : const tnsr::I<DataVector, 3>& magnetic_field, 45 : const tnsr::I<DataVector, 3>& spatial_velocity, 46 : const Scalar<DataVector>& lorentz_factor, 47 : const tnsr::ii<DataVector, 3, Frame::Inertial>& spatial_metric); 48 : }; 49 : } // namespace grmhd::ValenciaDivClean::Tags