SpECTRE  v2024.06.18
gr::Solutions::KerrSchild Class Reference

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

#include <KerrSchild.hpp>

Classes

struct  Center
 
class  IntermediateComputer
 
class  IntermediateVars
 
struct  internal_tags
 
struct  Mass
 
struct  Spin
 
struct  Velocity
 

Public Types

using options = tmpl::list< Mass, Spin, Center, Velocity >
 
template<typename DataType , typename Frame = Frame::Inertial>
using tags = tmpl::flatten< tmpl::list< AnalyticSolution< 3_st >::tags< DataType, Frame >, gr::Tags::DerivDetSpatialMetric< DataType, 3, Frame >, gr::Tags::TraceExtrinsicCurvature< DataType >, gr::Tags::SpatialChristoffelFirstKind< DataType, 3, Frame >, gr::Tags::SpatialChristoffelSecondKind< DataType, 3, Frame >, gr::Tags::TraceSpatialChristoffelSecondKind< DataType, 3, Frame >, gr::Tags::SpacetimeChristoffelSecondKind< DataType, 3, Frame > > >
 
template<typename DataType , typename Frame = ::Frame::Inertial>
using CachedBuffer = CachedTempBuffer< internal_tags::x_minus_center_unboosted< DataType, Frame >, internal_tags::x_minus_center< DataType, Frame >, internal_tags::a_dot_x< DataType >, internal_tags::a_dot_x_squared< DataType >, internal_tags::half_xsq_minus_asq< DataType >, internal_tags::r_squared< DataType >, internal_tags::r< DataType >, internal_tags::a_dot_x_over_rsquared< DataType >, internal_tags::deriv_log_r_denom< DataType >, internal_tags::deriv_log_r< DataType, Frame >, internal_tags::H_denom< DataType >, internal_tags::H< DataType >, internal_tags::deriv_H_temp1< DataType >, internal_tags::deriv_H_temp2< DataType >, internal_tags::deriv_H_unboosted< DataType, Frame >, internal_tags::deriv_H< DataType, Frame >, internal_tags::denom< DataType >, internal_tags::a_dot_x_over_r< DataType >, internal_tags::null_form_unboosted< DataType, Frame >, internal_tags::null_form< DataType, Frame >, internal_tags::deriv_null_form_unboosted< DataType, Frame >, internal_tags::deriv_null_form< DataType, Frame >, internal_tags::null_form_dot_deriv_H< DataType >, internal_tags::null_form_dot_deriv_null_form< DataType, Frame >, internal_tags::lapse_squared< DataType >, gr::Tags::Lapse< DataType >, internal_tags::deriv_lapse_multiplier< DataType >, internal_tags::shift_multiplier< DataType >, gr::Tags::Shift< DataType, 3, Frame >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< DataType, 3, Frame >, gr::Tags::InverseSpatialMetric< DataType, 3, Frame >, DerivSpatialMetric< DataType, Frame >, ::Tags::dt< gr::Tags::SpatialMetric< DataType, 3, Frame > >, gr::Tags::ExtrinsicCurvature< DataType, 3, Frame >, gr::Tags::SpatialChristoffelFirstKind< DataType, 3, Frame >, gr::Tags::SpatialChristoffelSecondKind< DataType, 3, Frame > >
 
- Public Types inherited from gr::AnalyticSolution< 3_st >
using DerivLapse = ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< volume_dim >, Frame >
 
using DerivShift = ::Tags::deriv< gr::Tags::Shift< DataType, volume_dim, Frame >, tmpl::size_t< volume_dim >, Frame >
 
using DerivSpatialMetric = ::Tags::deriv< gr::Tags::SpatialMetric< DataType, volume_dim, Frame >, tmpl::size_t< volume_dim >, Frame >
 
using tags = tmpl::list< gr::Tags::Lapse< DataType >, ::Tags::dt< gr::Tags::Lapse< DataType > >, DerivLapse< DataType, Frame >, gr::Tags::Shift< DataType, volume_dim, Frame >, ::Tags::dt< gr::Tags::Shift< DataType, volume_dim, Frame > >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< DataType, volume_dim, Frame >, ::Tags::dt< gr::Tags::SpatialMetric< DataType, volume_dim, Frame > >, DerivSpatialMetric< DataType, Frame >, gr::Tags::SqrtDetSpatialMetric< DataType >, gr::Tags::ExtrinsicCurvature< DataType, volume_dim, Frame >, gr::Tags::InverseSpatialMetric< DataType, volume_dim, Frame > >
 

Public Member Functions

 KerrSchild (double mass, const std::array< double, 3 > &dimensionless_spin, const std::array< double, 3 > &center, const std::array< double, 3 > &boost_velocity={{0., 0., 0.}}, const Options::Context &context={})
 
 KerrSchild (CkMigrateMessage *)
 
 KerrSchild (const KerrSchild &)=default
 
KerrSchildoperator= (const KerrSchild &)=default
 
 KerrSchild (KerrSchild &&)=default
 
KerrSchildoperator= (KerrSchild &&)=default
 
template<typename DataType , typename Frame , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, volume_dim, Frame > &x, double, tmpl::list< Tags... >) const
 
void pup (PUP::er &p)
 
double mass () const
 
const std::array< double, volume_dim > & center () const
 
const std::array< double, volume_dim > & dimensionless_spin () const
 
const std::array< double, volume_dim > & boost_velocity () const
 
bool zero_spin () const
 
bool zero_velocity () const
 

Static Public Attributes

static constexpr Options::String help
 
- Static Public Attributes inherited from gr::AnalyticSolution< 3_st >
static constexpr size_t volume_dim
 

Detailed Description

Kerr black hole in Kerr-Schild coordinates.

Details

The metric is \(g_{\mu\nu} = \eta_{\mu\nu} + 2 H l_\mu l_\nu\), where \(\eta_{\mu\nu}\) is the Minkowski metric, \(H\) is a scalar function, and \(l_\mu\) is the outgoing null vector. \(H\) and \(l_\mu\) are known functions of the coordinates and of the mass and spin vector.

The following are input file options that can be specified:

  • Mass (default: 1.)
  • Center (default: {0,0,0})
  • Spin (default: {0,0,0})

Kerr-Schild Coordinates

A Kerr-Schild coordinate system is defined by

\begin{equation} g_{\mu\nu} \equiv \eta_{\mu\nu} + 2 H l_\mu l_\nu, \end{equation}

where \(H\) is a scalar function of the coordinates, \(\eta_{\mu\nu}\) is the Minkowski metric, and \(l^\mu\) is a null vector. Note that the form of the metric along with the nullness of \(l^\mu\) allows one to raise and lower indices of \(l^\mu\) using \(\eta_{\mu\nu}\), and that \(l^t l^t = l_t l_t = l^i l_i\). Note also that

\begin{equation} g^{\mu\nu} \equiv \eta^{\mu\nu} - 2 H l^\mu l^\nu, \end{equation}

and that \(\sqrt{-g}=1\). Also, \(l_\mu\) is a geodesic with respect to both the physical metric and the Minkowski metric:

\begin{equation} l^\mu \partial_\mu l_\nu = l^\mu\nabla_\mu l_\nu = 0. \end{equation}

The corresponding 3+1 quantities are

\begin{eqnarray} \gamma_{i j} &=& \delta_{i j} + 2 H l_i l_j,\\ \gamma^{i j} &=& \delta^{i j} - {2 H l^i l^j \over 1+2H l^t l^t},\\ {\rm det} \gamma_{i j}&=& 1+2H l^t l^t,\\ \partial_k ({\rm det} \gamma_{i j})&=& 2 l^t l^t \partial_k H,\\ \beta^i &=& - {2 H l^t l^i \over 1+2H l^t l^t},\\ N &=& \left(1+2 H l^t l^t\right)^{-1/2},\quad\hbox{(lapse)}\\ \alpha &=& \left(1+2 H l^t l^t\right)^{-1}, \quad\hbox{(densitized lapse)}\\ K_{i j} &=& - \left(1+2 H l^t l^t\right)^{1/2} \left[l_i l_j \partial_{t} H + 2 H l_{(i} \partial_{t} l_{j)}\right] \nonumber \\ &&-2\left(1+2 H l^t l^t\right)^{-1/2} \left[H l^t \partial_{(i}l_{j)} + H l_{(i}\partial_{j)}l^t + l^t l_{(i}\partial_{j)} H + 2H^2 l^t l_{(i} l^k\partial_{k}l_{j)} + H l^t l_i l_j l^k \partial_{k} H\right],\\ \partial_{k}\gamma_{i j}&=& 2 l_i l_j\partial_{k} H + 4 H l_{(i} \partial_{k}l_{j)},\\ \partial_{k}N &=& -\left(1+2 H l^t l^t\right)^{-3/2} \left(l^tl^t\partial_{k}H+2Hl^t\partial_{k}l^t\right),\\ \partial_{k}\beta^i &=& - 2\left(1+2H l^t l^t\right)^{-1} \left(l^tl^i\partial_{k}H+Hl^t\partial_{k}l^i+Hl^i\partial_{k}l^t\right) + 4 H l^t l^i \left(1+2H l^t l^t\right)^{-2} \left(l^tl^t\partial_{k}H+2Hl^t\partial_{k}l^t\right),\\ \Gamma^k{}_{i j}&=& -\delta^{k m}\left(l_i l_j \partial_{m}H + 2l_{(i} \partial_{m}l_{j)} \right) + 2 H l_{(i}\partial_{j)} l^k \nonumber \\ &&+\left(1+2 H l^t l^t\right)^{-1} \left[2 l^k l_{(i}\partial_{j)} H +2 H l_i l_j l^k l^m \partial_{m}H +2 H l^k \partial_{(i}l_{j)} +4 H^2 l^k l_{(i} (l^m \partial_{m}l_{j)} -\partial_{j)} l^t) \right]. \end{eqnarray}

Note that \(l^i\) is not equal to \(\gamma^{i j} l_j\); it is equal to \(g^{i \mu} l_\mu\).

Kerr Spacetime

Spin in the z direction

Assume Cartesian coordinates \((t,x,y,z)\). Then for stationary Kerr spacetime with mass \(M\) and angular momentum \(a M\) in the \(z\) direction,

\begin{eqnarray} H &=& {M r^3 \over r^4 + a^2 z^2},\\ l_\mu &=& \left(1,{rx+ay\over r^2+a^2},{ry-ax\over r^2+a^2},{z\over r}\right), \end{eqnarray}

where \(r\) is defined by

\begin{equation} \label{eq:rdefinition1} {x^2+y^2\over a^2+r^2} + {z^2\over r^2} = 1, \end{equation}

or equivalently,

\begin{equation} r^2 = {1\over 2}(x^2 + y^2 + z^2 - a^2) + \left({1\over 4}(x^2 + y^2 + z^2 - a^2)^2 + a^2 z^2\right)^{1/2}. \end{equation}

Possibly useful formula:

\begin{equation} \partial_{i} r = {x_i + z \delta_{i z} \displaystyle {a^2\over r^2} \over 2 r\left(1 - \displaystyle {x^2 + y^2 + z^2 - a^2\over 2 r^2}\right)}. \end{equation}

Spin in an arbitrary direction

For arbitrary spin direction, let \(\vec{x}\equiv (x,y,z)\) and \(\vec{a}\) be a flat-space three-vector with magnitude-squared ( \(\delta_{ij}\) norm) equal to \(a^2\). Then the Kerr-Schild quantities for Kerr spacetime are:

\begin{eqnarray} H &=& {M r^3 \over r^4 + (\vec{a}\cdot\vec{x})^2},\\ \vec{l} &=& {r\vec{x}-\vec{a}\times\vec{x}+(\vec{a}\cdot\vec{x})\vec{a}/r \over r^2+a^2 },\\ l_t &=& 1,\\ \label{eq:rdefinition2} r^2 &=& {1\over 2}(\vec{x}\cdot\vec{x}-a^2) + \left({1\over 4}(\vec{x}\cdot\vec{x}-a^2)^2 + (\vec{a}\cdot\vec{x})^2\right)^{1/2}, \end{eqnarray}

where \(\vec{l}\equiv (l_x,l_y,l_z)\), and all dot and cross products are evaluated as flat-space 3-vector operations.

Possibly useful formulae:

\begin{equation} \partial_{i} r = {x_i + (\vec{a}\cdot\vec{x})a_i/r^2 \over 2 r\left(1 - \displaystyle {\vec{x}\cdot\vec{x}-a^2\over 2 r^2}\right)}, \end{equation}

\begin{equation} {\partial_{i} H \over H} = {3\partial_{i}r\over r} - {4 r^3 \partial_{i}r + 2(\vec{a}\cdot\vec{x})\vec{a} \over r^4 + (\vec{a}\cdot\vec{x})^2}, \end{equation}

\begin{equation} (r^2+a^2)\partial_{j} l_i = (x_i-2 r l_i-(\vec{a}\cdot\vec{x})a_i/r^2)\partial_{j}r + r\delta_{ij} + a_i a_j/r + \epsilon^{ijk} a_k. \end{equation}

Cartesian and Spherical Coordinates for Kerr

The Kerr-Schild coordinates are defined in terms of the Cartesian coordinates \((x,y,z)\). If one wishes to express Kerr-Schild coordinates in terms of the spherical polar coordinates \((\tilde{r},\theta,\phi)\) then one can make the obvious and usual transformation

\begin{equation} \label{eq:sphertocartsimple} x=\tilde{r}\sin\theta\cos\phi,\quad y=\tilde{r}\sin\theta\sin\phi,\quad z=\tilde{r}\cos\theta. \end{equation}

This is simple, and has the advantage that in this coordinate system for \(M\to0\), Kerr spacetime becomes Minkowski space in spherical coordinates \((\tilde{r},\theta,\phi)\). However, the disadvantage is that the horizon of a Kerr hole is not located at constant \(\tilde{r}\), but is located instead at constant \(r\), where \(r\) is the radial Boyer-Lindquist coordinate defined in ( \(\ref{eq:rdefinition2}\)).

For spin in the \(z\) direction, one could use the transformation

\begin{equation} x=\sqrt{r^2+a^2}\sin\theta\cos\phi,\quad y=\sqrt{r^2+a^2}\sin\theta\sin\phi,\quad z=r\cos\theta. \end{equation}

In this case, for \(M\to0\), Kerr spacetime becomes Minkowski space in spheroidal coordinates, but now the horizon is on a constant-coordinate surface.

Right now we use ( \(\ref{eq:sphertocartsimple}\)), but we may wish to use the other transformation in the future.

Boost of the Kerr-Schild solution

We add initial momentum to the solution by applying a Lorentz boost to the metric. Since the Kerr-Schild metric can be expressed covariantly in terms of the Minkowski metric, a scalar function and a one form, we construct the metric in the rest frame of the black hole and then apply an inverse boost to each of the covariant objects individually. Notice that we also need to appropriately boost the coordinates to the to the rest frame before computing the metric.

Warning
While technically the boosted Kerr-Schild metric is dependent on both the time and space coordinates, we have implemented it only at \(t = 0\) as in SpEC. Therefore it is technically not an analytic solution and should not be used to compute errors with respect to it.

Moreover, since the boosted solution is intended for use as initial data, we do not compute the time derivatives of the lapse and shift in the boosted frame but set them to zero.

Consequently, the gr::Tags::SpacetimeChristoffelSecondKind computed here, corresponds to the boosted Kerr-Schild for the gauge where lapse and shift have vanishing derivatives.

Member Data Documentation

◆ help

constexpr Options::String gr::Solutions::KerrSchild::help
staticconstexpr
Initial value:
{
"Black hole in Kerr-Schild coordinates"}

The documentation for this class was generated from the following file: