SpECTRE
v2024.04.12
|
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 | |
BondiHoyleAccretion & | operator= (const BondiHoyleAccretion &)=default |
BondiHoyleAccretion (BondiHoyleAccretion &&)=default | |
BondiHoyleAccretion & | operator= (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) |
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.
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
staticconstexpr |