SpECTRE  v2024.04.12
grmhd::AnalyticData::MagnetizedFmDisk Class Reference

Magnetized fluid disk orbiting a Kerr black hole. More...

#include <MagnetizedFmDisk.hpp>

Classes

struct  BFieldNormGridRes
 Grid resolution used in magnetic field normalization. More...
 
struct  InversePlasmaBeta
 The maximum-magnetic-pressure-to-maximum-fluid-pressure ratio. More...
 
struct  ThresholdDensity
 The rest mass density (in units of the maximum rest mass density in the disk) below which the matter in the disk is initially unmagetized. More...
 

Public Types

template<typename DataType >
using tags = tmpl::push_back< typename gr::AnalyticSolution< 3 >::template tags< DataType >, hydro::Tags::RestMassDensity< DataType >, hydro::Tags::SpecificInternalEnergy< DataType >, hydro::Tags::Temperature< DataType >, hydro::Tags::Pressure< DataType >, hydro::Tags::SpatialVelocity< DataType, 3 >, hydro::Tags::MagneticField< DataType, 3 >, hydro::Tags::DivergenceCleaningField< DataType >, hydro::Tags::LorentzFactor< DataType >, hydro::Tags::SpecificEnthalpy< DataType > >
 
using options = tmpl::push_back< FmDisk::options, ThresholdDensity, InversePlasmaBeta, BFieldNormGridRes >
 
using equation_of_state_type = typename FmDisk::equation_of_state_type
 

Public Member Functions

 MagnetizedFmDisk (const MagnetizedFmDisk &)=default
 
MagnetizedFmDiskoperator= (const MagnetizedFmDisk &)=default
 
 MagnetizedFmDisk (MagnetizedFmDisk &&)=default
 
MagnetizedFmDiskoperator= (MagnetizedFmDisk &&)=default
 
 MagnetizedFmDisk (double bh_mass, double bh_dimless_spin, double inner_edge_radius, double max_pressure_radius, double polytropic_constant, double polytropic_exponent, double threshold_density, double inverse_plasma_beta, size_t normalization_grid_res=BFieldNormGridRes::suggested_value())
 
auto get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override
 
void pup (PUP::er &) override
 
const equation_of_state_type & equation_of_state () const
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tags... >) const
 The variables in Cartesian Kerr-Schild coordinates at (x, t).
 
template<typename DataType , typename Tag >
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tag >) const
 The variables in Cartesian Kerr-Schild coordinates at (x, t).
 
virtual auto get_clone () const -> std::unique_ptr< InitialData >=0
 

Static Public Attributes

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

Friends

bool operator== (const MagnetizedFmDisk &lhs, const MagnetizedFmDisk &rhs)
 

Detailed Description

Magnetized fluid disk orbiting a Kerr black hole.

In the context of simulating accretion disks, this class implements a widely used (e.g. [73], [152], [190]) initial setup for the GRMHD variables, consisting of a Fishbone-Moncrief disk [64] (see also RelativisticEuler::Solutions::FishboneMoncriefDisk), threaded by a weak poloidal magnetic field. The magnetic field is constructed from an axially symmetric toroidal magnetic potential which, in Kerr ("spherical Kerr-Schild") coordinates, has the form

\begin{align*} A_\phi(r,\theta) \propto \text{max}(\rho(r,\theta) - \rho_\text{thresh}, 0), \end{align*}

where \(\rho_\text{thresh}\) is a user-specified threshold density that confines the magnetic flux to exist inside of the fluid disk only. A commonly used value for this parameter is \(\rho_\text{thresh} = 0.2\rho_\text{max}\), where \(\rho_\text{max}\) is the maximum value of the rest mass density in the disk. Using this potential, the Eulerian magnetic field takes the form

\begin{align*} B^r = \frac{F_{\theta\phi}}{\sqrt{\gamma}},\quad B^\theta = \frac{F_{\phi r}}{\sqrt{\gamma}},\quad B^\phi = 0, \end{align*}

where \(F_{ij} = \partial_i A_j - \partial_j A_i\) are the spatial components of the Faraday tensor, and \(\gamma\) is the determinant of the spatial metric. The magnetic field is then normalized so that the plasma- \(\beta\) parameter, \(\beta = 2p/b^2\), equals some value specified by the user. Here, \(p\) is the fluid pressure, and

\begin{align*} b^2 = b^\mu b_\mu = \frac{B_iB^i}{W^2} + (B^iv_i)^2 \end{align*}

is the norm of the magnetic field in the fluid frame, with \(v_i\) being the spatial velocity, and \(W\) the Lorentz factor.

Note
When using Kerr-Schild coordinates, the horizon that is at constant \(r\) is not spherical, but instead spheroidal. This could make application of boundary condition and computing various fluxes across the horizon more complicated than they need to be. Thus, similar to RelativisticEuler::Solutions::FishboneMoncriefDisk we use Spherical Kerr-Schild coordinates, see gr::Solutions::SphericalKerrSchild, in which constant \(r\) is spherical. Because we compute variables in Kerr-Schild coordinates, there is a necessary extra step of transforming them back to Spherical Kerr-Schild coordinates.
Warning
Spherical Kerr-Schild coordinates and "spherical Kerr-Schild" coordinates are not same.

Member Function Documentation

◆ get_clone()

auto grmhd::AnalyticData::MagnetizedFmDisk::get_clone ( ) const -> std::unique_ptr< evolution::initial_data::InitialData >
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String grmhd::AnalyticData::MagnetizedFmDisk::help
staticconstexpr
Initial value:
= {
"Magnetized Fishbone-Moncrief disk."}

The documentation for this class was generated from the following file: