SpECTRE
v2025.03.17
|
Fluid disk orbiting a Kerr black hole. More...
#include <FishboneMoncriefDisk.hpp>
Classes | |
struct | BhDimlessSpin |
The dimensionless black hole spin, | |
struct | BhMass |
The mass of the black hole, | |
struct | InnerEdgeRadius |
The radial coordinate of the inner edge of the disk, in units of | |
struct | IntermediateVariables |
struct | MaxPressureRadius |
The radial coordinate of the maximum pressure, in units of | |
struct | Noise |
The magnitude of noise added to pressure/energy of the Disk to drive MRI. More... | |
struct | PolytropicConstant |
The polytropic constant of the fluid. More... | |
struct | PolytropicExponent |
The polytropic exponent of the fluid. More... | |
Public Types | |
using | equation_of_state_type = EquationsOfState::PolytropicFluid< true > |
using | options = implementation defined |
template<typename DataType > | |
using | tags = implementation defined |
![]() | |
using | tags = implementation defined |
Public Member Functions | |
FishboneMoncriefDisk (const FishboneMoncriefDisk &)=default | |
FishboneMoncriefDisk & | operator= (const FishboneMoncriefDisk &)=default |
FishboneMoncriefDisk (FishboneMoncriefDisk &&)=default | |
FishboneMoncriefDisk & | operator= (FishboneMoncriefDisk &&)=default |
FishboneMoncriefDisk (double bh_mass, double bh_dimless_spin, double inner_edge_radius, double max_pressure_radius, double polytropic_constant, double polytropic_exponent, double noise) | |
auto | get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override |
template<typename DataType > | |
DataType | sigma (const DataType &r_sqrd, const DataType &sin_theta_sqrd) const |
template<typename DataType > | |
DataType | inv_ucase_a (const DataType &r_sqrd, const DataType &sin_theta_sqrd, const DataType &delta) const |
template<typename DataType > | |
DataType | four_velocity_t_sqrd (const DataType &r_sqrd, const DataType &sin_theta_sqrd) const |
template<typename DataType > | |
DataType | angular_velocity (const DataType &r_sqrd, const DataType &sin_theta_sqrd) const |
template<typename DataType > | |
DataType | potential (const DataType &r_sqrd, const DataType &sin_theta_sqrd) const |
void | pup (PUP::er &p) override |
const EquationsOfState::PolytropicFluid< true > & | equation_of_state () const |
template<typename DataType , typename... Tags> | |
tuples::TaggedTuple< Tags... > | variables (const tnsr::I< DataType, 3 > &x, const double, tmpl::list< Tags... >) const |
The variables in Cartesian Spherical-Kerr-Schild coordinates at (x, t) | |
template<typename DataType , typename Tag > | |
tuples::TaggedTuple< Tag > | variables (const tnsr::I< DataType, 3 > &x, const double, tmpl::list< Tag >) const |
The variables in Cartesian Spherical-Kerr-Schild coordinates at (x, t) | |
virtual auto | get_clone () const -> std::unique_ptr< InitialData >=0 |
![]() | |
auto | variables (const tnsr::I< DataType, Dim > &x, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
auto | variables (const tnsr::I< DataType, Dim > &x, const double t, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
auto | variables (ExtraVars &extra_variables, const tnsr::I< DataType, Dim > &x, Args &... extra_args, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
Static Public Attributes | |
static constexpr Options::String | help |
![]() | |
static constexpr size_t | volume_dim |
Protected Member Functions | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::RestMassDensity< DataType > >, gsl::not_null< IntermediateVariables< 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 > >, gsl::not_null< IntermediateVariables< DataType > * > vars) const -> tuples::TaggedTuple< hydro::Tags::ElectronFraction< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificEnthalpy< DataType > >, gsl::not_null< IntermediateVariables< DataType > * > vars) const -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Pressure< DataType > >, gsl::not_null< IntermediateVariables< 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 > >, gsl::not_null< IntermediateVariables< DataType > * > vars) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificInternalEnergy< DataType > >, gsl::not_null< IntermediateVariables< DataType > * > vars) const -> tuples::TaggedTuple< hydro::Tags::SpecificInternalEnergy< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpatialVelocity< DataType, 3 > >, gsl::not_null< IntermediateVariables< 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::LorentzFactor< DataType > >, gsl::not_null< IntermediateVariables< DataType > * > vars) const -> tuples::TaggedTuple< hydro::Tags::LorentzFactor< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::MagneticField< DataType, 3 > >, gsl::not_null< IntermediateVariables< 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 > >, gsl::not_null< IntermediateVariables< DataType > * > vars) const -> tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > > |
template<typename DataType , typename Tag , Requires< not tmpl::list_contains_v< tmpl::push_back< hydro::grmhd_tags< DataType >, hydro::Tags::SpecificEnthalpy< DataType >, hydro::Tags::SpatialVelocity< DataType, 3 >, hydro::Tags::LorentzFactor< DataType > >, Tag > > = nullptr> | |
tuples::TaggedTuple< Tag > | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tag >, gsl::not_null< IntermediateVariables< DataType > * > vars) const |
template<typename DataType , typename Func > | |
void | variables_impl (gsl::not_null< IntermediateVariables< DataType > * > vars, Func f) const |
Protected Attributes | |
double | bh_mass_ = std::numeric_limits<double>::signaling_NaN() |
double | bh_spin_a_ = std::numeric_limits<double>::signaling_NaN() |
double | inner_edge_radius_ = std::numeric_limits<double>::signaling_NaN() |
double | max_pressure_radius_ = std::numeric_limits<double>::signaling_NaN() |
double | polytropic_constant_ = std::numeric_limits<double>::signaling_NaN() |
double | polytropic_exponent_ = std::numeric_limits<double>::signaling_NaN() |
double | angular_momentum_ = std::numeric_limits<double>::signaling_NaN() |
double | rho_max_ = std::numeric_limits<double>::signaling_NaN() |
double | noise_ = std::numeric_limits<double>::signaling_NaN() |
EquationsOfState::PolytropicFluid< true > | equation_of_state_ {} |
gr::Solutions::SphericalKerrSchild | background_spacetime_ {} |
Friends | |
class | grmhd::AnalyticData::MagnetizedFmDisk |
bool | operator== (const FishboneMoncriefDisk &lhs, const FishboneMoncriefDisk &rhs) |
Fluid disk orbiting a Kerr black hole.
The Fishbone-Moncrief solution to the 3D relativistic Euler system [70], representing the isentropic flow of a thick fluid disk orbiting a Kerr black hole. In Boyer-Lindquist coordinates
where
Self-gravity is neglected, so that the fluid variables are determined as functions of the metric. Following the treatment by Kozlowski et al. [118] (but using signature +2) the solution is expressed in terms of the quantities
where
where
and
Once
so that
and the pressure can be obtained from a thermodynamic relation of the form
Following [165], the rest mass density is normalized to be 1. at maximum.
Once all the variables are known in Boyer-Lindquist (or Kerr) coordinates, it is straightforward to write them in Cartesian Kerr-Schild coordinates. The coordinate transformation in gr::KerrSchildCoords helps read the Jacobian matrix, which, applied to the azimuthal flow of the disk, gives
where
where
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
staticconstexpr |