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

Analytic initial data for axially symmetric Bondi-Hoyle accretion. More...

#include <BondiHoyleAccretion.hpp>

Classes

struct  BhDimlessSpin
 The dimensionless black hole spin, \(a_* = a/M\). More...
 
struct  BhMass
 The mass of the black hole, \(M\). More...
 
struct  FlowSpeed
 The magnitude of the spatial velocity far from the black hole. More...
 
struct  MagFieldStrength
 The strength of the magnetic field. More...
 
struct  PolytropicConstant
 The polytropic constant of the fluid. More...
 
struct  PolytropicExponent
 The polytropic exponent of the fluid. More...
 
struct  RestMassDensity
 The rest mass density of the fluid far from the black hole. More...
 

Public Types

using equation_of_state_type = EquationsOfState::PolytropicFluid< true >
 
using options = tmpl::list< BhMass, BhDimlessSpin, RestMassDensity, FlowSpeed, MagFieldStrength, PolytropicConstant, PolytropicExponent >
 
- Public Types inherited from grmhd::AnalyticDataBase
template<typename DataType >
using tags = tmpl::push_back< typename gr::AnalyticSolution< 3 >::template tags< DataType >, hydro::Tags::RestMassDensity< DataType >, hydro::Tags::ElectronFraction< 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 > >
 

Public Member Functions

 BondiHoyleAccretion (const BondiHoyleAccretion &)=default
 
BondiHoyleAccretionoperator= (const BondiHoyleAccretion &)=default
 
 BondiHoyleAccretion (BondiHoyleAccretion &&)=default
 
BondiHoyleAccretionoperator= (BondiHoyleAccretion &&)=default
 
 BondiHoyleAccretion (double bh_mass, double bh_dimless_spin, double rest_mass_density, double flow_speed, double magnetic_field_strength, double polytropic_constant, double polytropic_exponent)
 
auto get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tags... >) const
 Retrieve a collection of hydro variables at x
 
template<typename DataType , typename Tag , Requires< not tmpl::list_contains_v< tmpl::push_back< hydro::grmhd_tags< DataType >, hydro::Tags::SpecificEnthalpy< DataType > >, Tag > > = nullptr>
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tag >) const
 Retrieve the metric variables at x
 
void pup (PUP::er &) override
 
const EquationsOfState::PolytropicFluid< true > & equation_of_state () const
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::RestMassDensity< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::RestMassDensity< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::ElectronFraction< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::ElectronFraction< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificInternalEnergy< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::SpecificInternalEnergy< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Pressure< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Pressure< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpatialVelocity< DataType, 3 > >) const -> tuples::TaggedTuple< hydro::Tags::SpatialVelocity< DataType, 3 > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::MagneticField< DataType, 3 > >) const -> tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, 3 > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::DivergenceCleaningField< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::LorentzFactor< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::LorentzFactor< DataType > >
 Retrieve hydro variable at x
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificEnthalpy< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > >
 Retrieve hydro variable at x
 
virtual auto get_clone () const -> std::unique_ptr< InitialData >=0
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from grmhd::AnalyticDataBase
static constexpr size_t volume_dim = 3_st
 

Friends

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

Detailed Description

Analytic initial data for axially symmetric Bondi-Hoyle accretion.

In the context of studying Bondi-Hoyle accretion, i.e. non-spherical accretion on to a Kerr black hole moving relative to a gas cloud, this class implements the method proposed by [65] to initialize the GRMHD variables. The fluid quantities are initialized with their (constant) values far from the black hole, e.g. \(\rho = \rho_\infty\). Here we assume a polytropic equation of state, so only the rest mass density, as well as the polytropic constant and the polytropic exponent, are provided as inputs. The spatial velocity is initialized using a field that ensures that the injected gas reproduces a continuous parallel wind at large distances. The direction of this flow is chosen to be along the black hole spin. In Kerr (or "spherical Kerr-Schild", see gr::KerrSchildCoords) coordinates,

\begin{align*} v^r &= \frac{1}{\sqrt{\gamma_{rr}}}v_\infty \cos\theta\\ v^\theta &= -\frac{1}{\sqrt{\gamma_{\theta\theta}}}v_\infty \sin\theta\\ v^\phi &= 0. \end{align*}

where \(\gamma_{ij} = g_{ij}\) is the spatial metric, and \(v_\infty\) is the flow speed far from the black hole. Note that \(v_\infty^2 = v_i v^i\). Finally, following the work by [149], the magnetic field is initialized using Wald's solution to Maxwell's equations in Kerr black hole spacetime. In Kerr ("spherical Kerr-Schild") coordinates, the spatial components of the Faraday tensor read

\begin{align*} F_{r\theta} &= a B_0 \left[1 + \frac{2Mr}{\Sigma^2}(r^2 - a^2)\right] \sin\theta\cos\theta\\ F_{\theta\phi} &= B_0\left[\Delta + \frac{2Mr}{\Sigma^2}(r^4 - a^4)\right]\sin\theta\cos\theta\\ F_{\phi r} &= - B_0\left[r + \frac{M a^2}{\Sigma^2} (r^2 - a^2\cos^2\theta)(1 + \cos^2\theta)\right]\sin^2\theta. \end{align*}

where \(\Sigma = r^2 + a^2\cos^2\theta\) and \(\Delta = r^2 - 2Mr + a^2\). The associated Eulerian magnetic field is

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

where \(\gamma = \text{det}(\gamma_{ij})\). Wald's solution reproduces a uniform magnetic field far from the black hole.

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ help

constexpr Options::String grmhd::AnalyticData::BondiHoyleAccretion::help
staticconstexpr
Initial value:
= {
"Axially symmetric accretion on to a Kerr black hole."}

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