Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
grmhd::AnalyticData::MagnetizedTovStar Class Reference

Magnetized TOV star initial data, where metric terms only account for the hydrodynamics not the magnetic fields. More...

#include <MagnetizedTovStar.hpp>

Classes

struct  CutoffPressureFraction
 
struct  PressureExponent
 
struct  VectorPotentialAmplitude
 

Public Types

using options = tmpl::push_back< tov_star::options, PressureExponent, CutoffPressureFraction, VectorPotentialAmplitude >
 
template<typename DataType >
using tags = typename tov_star::template tags< DataType >
 

Public Member Functions

 MagnetizedTovStar (const MagnetizedTovStar &)=delete
 
MagnetizedTovStaroperator= (const MagnetizedTovStar &)=delete
 
 MagnetizedTovStar (MagnetizedTovStar &&) noexcept=default
 
MagnetizedTovStaroperator= (MagnetizedTovStar &&) noexcept=default
 
 MagnetizedTovStar (double central_rest_mass_density, double polytropic_constant, double polytropic_exponent, size_t pressure_exponent, double cutoff_pressure_fraction, double vector_potential_amplitude) noexcept
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tags... >) const noexcept
 Retrieve a collection of variables at (x)
 
void pup (PUP::er &p) noexcept
 

Static Public Attributes

static constexpr Options::String help
 
static constexpr size_t volume_dim = 3_st
 

Protected Member Functions

template<typename DataType >
tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, 3, Frame::Inertial > > variables (const tnsr::I< DataType, 3 > &coords, tmpl::list< hydro::Tags::MagneticField< DataType, 3, Frame::Inertial >>, const RadialVariables< DataType > &radial_vars) const noexcept
 

Protected Attributes

size_t pressure_exponent_ = std::numeric_limits<size_t>::max()
 
double cutoff_pressure_ = std::numeric_limits<double>::signaling_NaN()
 
double vector_potential_amplitude_
 

Friends

bool operator== (const MagnetizedTovStar &lhs, const MagnetizedTovStar &rhs) noexcept
 

Detailed Description

Magnetized TOV star initial data, where metric terms only account for the hydrodynamics not the magnetic fields.

Superposes a poloidal magnetic field on top of a TOV solution where the vector potential has the form

\begin{align*} A_{\phi} = A_b \varpi^2 \max(p-p_{\mathrm{cut}}, 0)^{n_s} \end{align*}

where \(A_b\) controls the amplitude of the magnetic field, \(\varpi^2=x^2+y^2=r^2-z^2\) is the cylindrical radius, \(n_s\) controls the degree of differentiability, and \(p_{\mathrm{cut}}\) controls the pressure cutoff below which the magnetic field is zero.

In Cartesian coordinates the vector potential is:

\begin{align*} A_x&=-\frac{y}{\varpi^2}A_\phi, \\ A_y&=\frac{x}{\varpi^2}A_\phi, \\ A_z&=0, \end{align*}

For the poloidal field this means

\begin{align*} A_x &= -y A_b\max(p-p_{\mathrm{cut}}, 0)^{n_s}, \\ A_y &= x A_b\max(p-p_{\mathrm{cut}}, 0)^{n_s}. \end{align*}

The magnetic field is computed from the vector potential as

\begin{align*} B^i&=n_a\epsilon^{aijk}\partial_jA_k \\ &=-\frac{1}{\sqrt{\gamma}}[ijk]\partial_j A_k, \end{align*}

where \([ijk]\) is the total anti-symmetric symbol. This means that

\begin{align*} B^x&=\frac{1}{\sqrt{\gamma}} (\partial_z A_y-\partial_y A_z), \\ B^y&=\frac{1}{\sqrt{\gamma}} (\partial_x A_z - \partial_z A_x), \\ B^z&=\frac{1}{\sqrt{\gamma}} (\partial_y A_x - \partial_x A_y). \end{align*}

Focusing on the region where the field is non-zero we have:

\begin{align*} \partial_x A_y &= A_b(p-p_{\mathrm{cut}})^{n_s}+ \frac{x^2}{r}A_bn_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_r p \\ \partial_y A_x &= -A_b(p-p_{\mathrm{cut}})^{n_s}- \frac{y^2}{r}A_bn_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_r p \\ \partial_z A_x &= -\frac{yz}{r}A_bn_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_rp \\ \partial_z A_y &= \frac{xz}{r}A_bn_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_rp \end{align*}

The magnetic field is given by:

\begin{align*} B^x&=\frac{1}{\sqrt{\gamma}}\frac{xz}{r} A_bn_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_rp \\ B^y&=\frac{1}{\sqrt{\gamma}}\frac{yz}{r} A_bn_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_rp \\ B^z&=-\frac{A_b}{\sqrt{\gamma}}\left[ 2(p-p_{\mathrm{cut}})^{n_s} \phantom{\frac{a}{b}}\right. \\ &\left.+\frac{x^2+y^2}{r} n_s(p-p_{\mathrm{cut}})^{n_s-1}\partial_r p \right] \end{align*}

Taking the small- \(r\) limit gives the \(r=0\) magnetic field:

\begin{align*} B^x&=0, \\ B^y&=0, \\ B^z&=-\frac{A_b}{\sqrt{\gamma}} 2(p-p_{\mathrm{cut}})^{n_s}. \end{align*}

While the amplitude \(A_b\) is specified in the code, it is more natural to work with the magnetic field strength, which is given by \(\sqrt{b^2}\) (where \(b^a\) is the comoving magnetic field), and in CGS units is

\begin{align*} |B_{\mathrm{CGS}}|&= \sqrt{4 \pi b^2} \left(\frac{c^2}{G M_\odot}\right) \left(\frac{c}{\sqrt{4 \pi \epsilon_0 G}}\right) \\ &= \sqrt{b^2} \times 8.352\times10^{19}\mathrm{G} \,. \end{align*}

We now give values used for standard tests of magnetized stars.

Parameters for desired magnetic field strength:

Note that the magnetic field strength goes as \(A_b\) so any desired value can be achieved by a linear scaling.

Member Data Documentation

◆ help

constexpr Options::String grmhd::AnalyticData::MagnetizedTovStar::help
staticconstexpr
Initial value:
= {
"Magnetized TOV star in areal coordinates."}

◆ vector_potential_amplitude_

double grmhd::AnalyticData::MagnetizedTovStar::vector_potential_amplitude_
protected

The documentation for this class was generated from the following file:
std::numeric_limits::signaling_NaN
T signaling_NaN(T... args)