SpECTRE  v2024.04.12
gr::Solutions Namespace Reference

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

Classes

class  GaugePlaneWave
 Gauge plane wave in flat spacetime. More...
 
class  GaugeWave
 Gauge wave in flat spacetime. More...
 
class  HarmonicSchwarzschild
 Schwarzschild black hole in Cartesian coordinates with harmonic gauge. More...
 
class  KerrSchild
 Kerr black hole in Kerr-Schild coordinates. More...
 
class  Minkowski
 The Minkowski solution for flat space in Dim spatial dimensions. More...
 
class  SphericalKerrSchild
 Kerr black hole in Spherical Kerr-Schild coordinates. More...
 

Functions

template<size_t Dim>
bool operator== (const GaugeWave< Dim > &lhs, const GaugeWave< Dim > &rhs)
 
template<size_t Dim>
bool operator!= (const GaugeWave< Dim > &lhs, const GaugeWave< Dim > &rhs)
 
bool operator== (const HarmonicSchwarzschild &lhs, const HarmonicSchwarzschild &rhs)
 Return whether two harmonic Schwarzschild solutions are equivalent.
 
bool operator!= (const HarmonicSchwarzschild &lhs, const HarmonicSchwarzschild &rhs)
 Return whether two harmonic Schwarzschild solutions are not equivalent.
 
template<typename DataType >
Scalar< DataType > kerr_schild_radius_from_boyer_lindquist (const double boyer_lindquist_radius, const std::array< DataType, 2 > &theta_phi, double mass, const std::array< double, 3 > &dimensionless_spin)
 The Kerr-Schild radius corresponding to a Boyer-Lindquist radius. More...
 
template<typename DataType >
Scalar< DataType > kerr_horizon_radius (const std::array< DataType, 2 > &theta_phi, double mass, const std::array< double, 3 > &dimensionless_spin)
 The Kerr-Schild radius corresponding to a Kerr horizon. More...
 
bool operator== (const KerrSchild &lhs, const KerrSchild &rhs)
 
bool operator!= (const KerrSchild &lhs, const KerrSchild &rhs)
 
template<size_t Dim>
constexpr bool operator== (const Minkowski< Dim > &, const Minkowski< Dim > &)
 
template<size_t Dim>
constexpr bool operator!= (const Minkowski< Dim > &, const Minkowski< Dim > &)
 
bool operator== (const SphericalKerrSchild &lhs, const SphericalKerrSchild &rhs)
 
bool operator!= (const SphericalKerrSchild &lhs, const SphericalKerrSchild &rhs)
 

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,
double  mass,
const std::array< double, 3 > &  dimensionless_spin 
)

The Kerr-Schild radius corresponding to a Kerr horizon.

Details

kerr_horizon_radius evaluates \(r\) using the above equation in the documentation for kerr_schild_radius_from_boyer_lindquist, and using the standard expression for the Boyer-Lindquist radius of the Kerr horizon:

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

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

◆ kerr_schild_radius_from_boyer_lindquist()

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

The Kerr-Schild radius corresponding to a Boyer-Lindquist radius.

Details

Computes the radius of a surface of constant Boyer-Lindquist radius as a function of angles. The input argument theta_phi is typically the output of the theta_phi_points() method of a ylm::Spherepack object; i.e., a std::array of two DataVectors containing the values of theta and phi at each point on a Strahlkorper.

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.

We 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.