Classes | Functions
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

◆ kerr_horizon_radius()

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}. \]