gr::Solutions Namespace Reference

Classes which implement analytic solutions to Einstein's equations. More...

Classes

class  KerrSchild
Kerr black hole in Kerr-Schild coordinates. More...

class  Minkowski
The Minkowski solution for flat space in Dim spatial dimensions. More...

class  TovSolution
TOV solver based on Lindblom's method. More...

Functions

template<typename DataType >
Scalar< DataType > kerr_horizon_radius (const std::array< DataType, 2 > &theta_phi, const double &mass, const std::array< double, 3 > &dimensionless_spin) noexcept
Radius of Kerr horizon in Kerr-Schild coordinates. More...

template Scalar< DataVectorkerr_horizon_radius (const std::array< DataVector, 2 > &theta_phi, const double &mass, const std::array< double, 3 > &dimensionless_spin) noexcept

template Scalar< double > kerr_horizon_radius (const std::array< double, 2 > &theta_phi, const double &mass, const std::array< double, 3 > &dimensionless_spin) noexcept

bool operator== (const KerrSchild &lhs, const KerrSchild &rhs) noexcept

bool operator!= (const KerrSchild &lhs, const KerrSchild &rhs) noexcept

template<size_t Dim>
constexpr bool operator== (const Minkowski< Dim > &, const Minkowski< Dim > &) noexcept

template<size_t Dim>
constexpr bool operator!= (const Minkowski< Dim > &, const Minkowski< Dim > &) noexcept

Detailed Description

Classes which implement analytic solutions to Einstein's equations.

Function Documentation

template<typename DataType >
 Scalar< DataType > gr::Solutions::kerr_horizon_radius ( const std::array< DataType, 2 > & theta_phi, const double & mass, const std::array< double, 3 > & dimensionless_spin )
noexcept

Radius of Kerr horizon in Kerr-Schild coordinates.

Details

Computes the radius of a Kerr black hole as a function of angles. The input argument theta_phi is typically the output of the theta_phi_points() method of a YlmSpherepack object; i.e., a std::array of two DataVectors containing the values of theta and phi at each point on a Strahlkorper.

Note
If the spin is nearly extremal, this function has accuracy limited to roughly $10^{-8}$, because of roundoff amplification from computing $M + \sqrt{M^2-a^2}$.

Derivation:

Define spherical coordinates $(r,\theta,\phi)$ in the usual way from the Cartesian Kerr-Schild coordinates $(x,y,z)$ (i.e. $x = r \sin\theta \cos\phi$ and so on). Then the relationship between $r$ and the radial Boyer-Lindquist coordinate $r_{BL}$ is

$r_{BL}^2 = \frac{1}{2}(r^2 - a^2) + \left(\frac{1}{4}(r^2-a^2)^2 + r^2(\vec{a}\cdot \hat{x})^2\right)^{1/2},$

where $\vec{a}$ is the Kerr spin vector (with units of mass), $\hat{x}$ means $(x/r,y/r,z/r)$, and the dot product is taken as in flat space.

The horizon is a surface of constant $r_{BL}$. Therefore we can solve the above equation for $r^2$ as a function of angles, yielding

$r^2 = \frac{r_{BL}^2 (r_{BL}^2 + a^2)} {r_{BL}^2+(\vec{a}\cdot \hat{x})^2},$

where the angles are encoded in $\hat x$ and everything else on the right-hand side is constant.

kerr_horizon_radius evaluates $r$ using the above equation, and using the standard expression for the Boyer-Lindquist radius of the Kerr horizon:

$r_{BL} = r_+ = M + \sqrt{M^2-a^2}.$