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/Hydro/TagsDeclarations.hpp" 9 : #include "Utilities/TMPL.hpp" 10 : 11 : /// \cond 12 : namespace gsl { 13 : template <typename> 14 : struct not_null; 15 : } // namespace gsl 16 : ///// \endcond 17 : 18 : namespace hydro { 19 : /// @{ 20 : /*! 21 : * \brief Computes the inverse plasma beta 22 : * 23 : * The inverse plasma beta \f$\beta^{-1} = b^2 / (2 p)\f$, where 24 : * \f$b^2\f$ is the square of the comoving magnetic field amplitude 25 : * and \f$p\f$ is the fluid pressure. 26 : */ 27 : template <typename DataType> 28 1 : void inverse_plasma_beta( 29 : gsl::not_null<Scalar<DataType>*> result, 30 : const Scalar<DataType>& comoving_magnetic_field_magnitude, 31 : const Scalar<DataType>& fluid_pressure); 32 : 33 : template <typename DataType> 34 1 : Scalar<DataType> inverse_plasma_beta( 35 : const Scalar<DataType>& comoving_magnetic_field_magnitude, 36 : const Scalar<DataType>& fluid_pressure); 37 : /// @} 38 : 39 1 : namespace Tags { 40 : /// Can be retrieved using `hydro::Tags::InversePlasmaBeta` 41 : template <typename DataType> 42 1 : struct InversePlasmaBetaCompute : InversePlasmaBeta<DataType>, db::ComputeTag { 43 0 : using base = InversePlasmaBeta<DataType>; 44 0 : using return_type = Scalar<DataType>; 45 : 46 0 : using argument_tags = 47 : tmpl::list<ComovingMagneticFieldMagnitude<DataType>, Pressure<DataType>>; 48 : 49 0 : static constexpr auto function = static_cast<void (*)( 50 : gsl::not_null<Scalar<DataType>*>, const Scalar<DataType>&, 51 : const Scalar<DataType>&)>(&inverse_plasma_beta<DataType>); 52 : }; 53 : } // namespace Tags 54 : } // namespace hydro