SpECTRE  2021.08.02
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::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< fm_disk::options, ThresholdDensity, InversePlasmaBeta, BFieldNormGridRes >
 
using equation_of_state_type = EquationsOfState::PolytropicFluid< true >
 

Public Member Functions

 MagnetizedFmDisk (const MagnetizedFmDisk &)=delete
 
MagnetizedFmDiskoperator= (const MagnetizedFmDisk &)=delete
 
 MagnetizedFmDisk (MagnetizedFmDisk &&) noexcept=default
 
MagnetizedFmDiskoperator= (MagnetizedFmDisk &&) noexcept=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()) noexcept
 
void pup (PUP::er &) noexcept
 
const EquationsOfState::PolytropicFluid< true > & equation_of_state () const noexcept
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3 > &x, const double t, tmpl::list< Tags... >) const noexcept
 The fluid variables in Cartesian Kerr-Schild coordinates at (x, t) More...
 
template<typename DataType , typename Tag >
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataType, 3 > &x, const double t, tmpl::list< Tag >) const noexcept
 
template<typename DataType , bool NeedSpacetime>
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::RestMassDensity< DataType > >, const IntermediateVariables< DataType, NeedSpacetime > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::RestMassDensity< DataType > >
 
template<typename DataType , bool NeedSpacetime>
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificEnthalpy< DataType > >, const IntermediateVariables< DataType, NeedSpacetime > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > >
 
template<typename DataType , bool NeedSpacetime>
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Pressure< DataType > >, const IntermediateVariables< DataType, NeedSpacetime > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::Pressure< DataType > >
 
template<typename DataType , bool NeedSpacetime>
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificInternalEnergy< DataType > >, const IntermediateVariables< DataType, NeedSpacetime > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::SpecificInternalEnergy< DataType > >
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpatialVelocity< DataType, 3 > >, const IntermediateVariables< DataType, true > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::SpatialVelocity< DataType, 3 > >
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::LorentzFactor< DataType > >, const IntermediateVariables< DataType, true > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::LorentzFactor< DataType > >
 
template<typename DataType , bool NeedSpacetime>
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::MagneticField< DataType, 3 > >, const IntermediateVariables< DataType, NeedSpacetime > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, 3 > >
 
template<typename DataType , bool NeedSpacetime>
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::DivergenceCleaningField< DataType > >, const IntermediateVariables< DataType, NeedSpacetime > &vars, size_t index) const noexcept -> tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > >
 
template<typename DataType , typename Tag , Requires< not tmpl::list_contains_v< hydro::grmhd_tags< DataType >, Tag > > = nullptr>
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataType, 3 > &, tmpl::list< Tag >, IntermediateVariables< DataType, true > &vars, const size_t index) const noexcept
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tags... >) const noexcept
 The grmhd variables in Cartesian Kerr-Schild coordinates at (x, t) More...
 
template<typename DataType , typename Tag >
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tag >) const noexcept
 The grmhd variables in Cartesian Kerr-Schild coordinates at (x, t) More...
 

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) noexcept
 

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. [47], [89], [111]) initial setup for the GRMHD variables, consisting of a Fishbone-Moncrief disk [42] (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.

Member Function Documentation

◆ variables() [1/3]

template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > RelativisticEuler::Solutions::FishboneMoncriefDisk::variables ( const tnsr::I< DataType, 3 > &  x,
const double  t,
tmpl::list< Tags... >   
) const
inlinenoexcept

The fluid variables in Cartesian Kerr-Schild coordinates at (x, t)

Note
The functions are optimized for retrieving the hydro variables before the metric variables.

◆ variables() [2/3]

template<typename DataType , typename Tag >
tuples::TaggedTuple< Tag > grmhd::AnalyticData::MagnetizedFmDisk::variables ( const tnsr::I< DataType, 3 > &  x,
tmpl::list< Tag >   
) const
inlinenoexcept

The grmhd variables in Cartesian Kerr-Schild coordinates at (x, t)

Note
The functions are optimized for retrieving the hydro variables before the metric variables.

◆ variables() [3/3]

template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > grmhd::AnalyticData::MagnetizedFmDisk::variables ( const tnsr::I< DataType, 3 > &  x,
tmpl::list< Tags... >   
) const
inlinenoexcept

The grmhd variables in Cartesian Kerr-Schild coordinates at (x, t)

Note
The functions are optimized for retrieving the hydro variables before the metric variables.

Member Data Documentation

◆ help

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