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
|