SpECTRE
v2025.03.17
|
Bondi-Michel accretion [137] with superposed magnetic field in Schwarzschild spacetime in Cartesian Kerr-Schild coordinates. More...
#include <BondiMichel.hpp>
Classes | |
struct | IntermediateVars |
struct | MagFieldStrength |
The strength of the radial magnetic field. More... | |
struct | Mass |
The mass of the black hole. More... | |
struct | PolytropicExponent |
The polytropic exponent for the polytropic fluid. More... | |
struct | SonicDensity |
The rest mass density of the fluid at the sonic radius. More... | |
struct | SonicRadius |
The radius at which the fluid becomes supersonic. More... | |
Public Types | |
using | equation_of_state_type = EquationsOfState::PolytropicFluid< true > |
using | options = implementation defined |
![]() | |
template<typename DataType > | |
using | tags = implementation defined |
Public Member Functions | |
BondiMichel (const BondiMichel &)=default | |
BondiMichel & | operator= (const BondiMichel &)=default |
BondiMichel (BondiMichel &&)=default | |
BondiMichel & | operator= (BondiMichel &&)=default |
BondiMichel (double mass, double sonic_radius, double sonic_density, double polytropic_exponent, double mag_field_strength) | |
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, const double, tmpl::list< Tags... >) const |
Retrieve a collection of hydro variables at (x, t) | |
template<typename DataType , typename Tag > | |
tuples::TaggedTuple< Tag > | variables (const tnsr::I< DataType, 3 > &x, const double, tmpl::list< Tag >) const |
void | pup (PUP::er &) override |
const EquationsOfState::PolytropicFluid< true > & | equation_of_state () const |
virtual auto | get_clone () const -> std::unique_ptr< InitialData >=0 |
Static Public Attributes | |
static constexpr Options::String | help |
![]() | |
static constexpr size_t | volume_dim = 3_st |
Protected Member Functions | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::RestMassDensity< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::RestMassDensity< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::ElectronFraction< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::ElectronFraction< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificInternalEnergy< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::SpecificInternalEnergy< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Pressure< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::Pressure< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Temperature< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpatialVelocity< DataType, 3 > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::SpatialVelocity< DataType, 3 > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::MagneticField< DataType, 3 > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, 3 > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::DivergenceCleaningField< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::LorentzFactor< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::LorentzFactor< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificEnthalpy< DataType > >, const IntermediateVars< DataType > &vars) const -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > > |
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 > &, tmpl::list< Tag >, const IntermediateVars< DataType > &vars) const |
Protected Attributes | |
double | mass_ = std::numeric_limits<double>::signaling_NaN() |
double | sonic_radius_ = std::numeric_limits<double>::signaling_NaN() |
double | sonic_density_ = std::numeric_limits<double>::signaling_NaN() |
double | polytropic_exponent_ = std::numeric_limits<double>::signaling_NaN() |
double | mag_field_strength_ = std::numeric_limits<double>::signaling_NaN() |
double | sonic_fluid_speed_squared_ |
double | sonic_sound_speed_squared_ |
double | polytropic_constant_ = std::numeric_limits<double>::signaling_NaN() |
double | mass_accretion_rate_over_four_pi_ |
double | bernoulli_constant_squared_minus_one_ |
double | rest_mass_density_at_infinity_ |
EquationsOfState::PolytropicFluid< true > | equation_of_state_ {} |
gr::Solutions::KerrSchild | background_spacetime_ {} |
Friends | |
bool | operator== (const BondiMichel &lhs, const BondiMichel &rhs) |
Bondi-Michel accretion [137] with superposed magnetic field in Schwarzschild spacetime in Cartesian Kerr-Schild coordinates.
An analytic solution to the 3-D GRMHD system. The user specifies the sonic radius
In the case of the interstellar medium, the sound speed is
The density is found via root-finding, through the Bernoulli equation. As one approaches the sonic radius, a second root makes an appearance and one must take care to bracket the correct root. This is done by using the upper bound
Additionally specified by the user are the polytropic exponent
The accretion rate is
and at the sonic radius
The polytropic constant is given by
The density as a function of the sound speed is
The density at the horizon is given by:
Using the Lorentz invariance of
where
Finally, we get
where the last equality is useful for comparison to papers that give
To help with comparing to other codes the following script can be used to compute
The density at the horizon is given by:
which gives [171]
The magnetic field
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
protected |
|
staticconstexpr |
|
protected |
|
protected |
|
protected |
|
protected |