SpECTRE
v2025.03.17
|
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 > > |
![]() | |
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 > ¢er, const std::array< double, 3 > &boost_velocity={{0., 0., 0.}}, const Options::Context &context={}) | |
KerrSchild (CkMigrateMessage *) | |
KerrSchild (const KerrSchild &)=default | |
KerrSchild & | operator= (const KerrSchild &)=default |
KerrSchild (KerrSchild &&)=default | |
KerrSchild & | operator= (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 constexpr size_t | volume_dim |
Kerr black hole in Kerr-Schild coordinates.
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:
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\).
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}
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}
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.
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.
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.
|
staticconstexpr |