NHEK spacetime

This This Jupyter/SageMath notebook is relative to the lectures Geometry and physics of black holes. It explores the global Near-Horizon Extremal Kerr (NHEK) spacetime $(\mathcal{N}, h)$.

This notebook requires a version of SageMath at least equal to 9.0:

In [1]:
version()
Out[1]:
'SageMath version 9.5.beta2, Release Date: 2021-09-26'

First we set up the notebook to display mathematical objects using LaTeX rendering, and, to speed up computations, we ask for running them in parallel on 8 threads:

In [2]:
%display latex
Parallelism().set(nproc=8)

Manifold

In [3]:
N = Manifold(4, 'N', latex_name=r'\mathscr{N}', structure='Lorentzian',
             metric_name='h')
print(N)
4-dimensional Lorentzian manifold N

Global coordinate chart $(\tau, y, \theta, \psi)$:

In [4]:
X.<ta, y, th, ps> = N.chart(r"ta:\tau y th:(0,pi):\theta ps:(0,2*pi):periodic:\psi") 
print(X)
X
Chart (N, (ta, y, th, ps))
Out[4]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N},({\tau}, y, {\theta}, {\psi})\right)\]
In [5]:
X.coord_range()
Out[5]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}{\tau} :\ \left( -\infty, +\infty \right) ;\quad y :\ \left( -\infty, +\infty \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\psi} :\ \left[ 0 , 2 \, \pi \right] \mbox{(periodic)}\]

The coordinate 1-forms:

In [6]:
X.coframe()[:]
Out[6]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\mathrm{d} {\tau}, \mathrm{d} y, \mathrm{d} {\theta}, \mathrm{d} {\psi}\right)\]
In [7]:
dta, dy, dth, dps = X.coframe()[:]

NHEK metric

The mass parameter $m$ appears in the the NHEK metric $h$ as an overall scale parameter $m^2$. In what follows, we set $m=1$ for simplicity. We then declare $h$ as

In [8]:
h = N.metric()
dps_ydta = dps + y*dta
h.set((1 + cos(th)^2)*(- (1 + y^2)*(dta*dta)+ (dy*dy)/(1 + y^2) + dth*dth)
      + 4*sin(th)^2/(1 + cos(th)^2)*(dps_ydta*dps_ydta))
h.display()
Out[8]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}h = \left( -\frac{\sin\left({\theta}\right)^{4} + {\left(\sin\left({\theta}\right)^{4} - 8 \, \sin\left({\theta}\right)^{2} + 4\right)} y^{2} - 4 \, \sin\left({\theta}\right)^{2} + 4}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\tau}\otimes \mathrm{d} {\tau} + \left( \frac{4 \, y \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\tau}\otimes \mathrm{d} {\psi} + \left( \frac{\cos\left({\theta}\right)^{2} + 1}{y^{2} + 1} \right) \mathrm{d} y\otimes \mathrm{d} y + \left( \cos\left({\theta}\right)^{2} + 1 \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \frac{4 \, y \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\psi}\otimes \mathrm{d} {\tau} + \left( \frac{4 \, \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\psi}\otimes \mathrm{d} {\psi}\]

The NHEK metric is a solution of the vacuum Einstein equation:

In [9]:
h.ricci().display()
Out[9]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\mathrm{Ric}\left(h\right) = 0\]

Inverse metric

In [10]:
h.inverse()[:]
Out[10]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} \frac{\sin\left({\theta}\right)^{2} - 2}{\cos\left({\theta}\right)^{4} + {\left(\cos\left({\theta}\right)^{4} + 2 \, \cos\left({\theta}\right)^{2} + 1\right)} y^{2} + 2 \, \cos\left({\theta}\right)^{2} + 1} & 0 & 0 & \frac{y}{{\left(\cos\left({\theta}\right)^{2} + 1\right)} y^{2} + \cos\left({\theta}\right)^{2} + 1} \\ 0 & \frac{y^{2} + 1}{\cos\left({\theta}\right)^{2} + 1} & 0 & 0 \\ 0 & 0 & \frac{1}{\cos\left({\theta}\right)^{2} + 1} & 0 \\ \frac{y}{{\left(\cos\left({\theta}\right)^{2} + 1\right)} y^{2} + \cos\left({\theta}\right)^{2} + 1} & 0 & 0 & \frac{\cos\left({\theta}\right)^{6} + 3 \, \cos\left({\theta}\right)^{4} + {\left(\cos\left({\theta}\right)^{6} + 7 \, \cos\left({\theta}\right)^{4} + 3 \, \cos\left({\theta}\right)^{2} - 3\right)} y^{2} + 3 \, \cos\left({\theta}\right)^{2} + 1}{4 \, {\left(\sin\left({\theta}\right)^{6} - 4 \, \sin\left({\theta}\right)^{4} + {\left(\sin\left({\theta}\right)^{6} - 4 \, \sin\left({\theta}\right)^{4} + 4 \, \sin\left({\theta}\right)^{2}\right)} y^{2} + 4 \, \sin\left({\theta}\right)^{2}\right)}} \end{array}\right)\]

Some simplifications are in order:

In [11]:
h.inverse().apply_map(factor)
h.inverse()[:]
Out[11]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} \frac{\sin\left({\theta}\right)^{2} - 2}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}^{2}} & 0 & 0 & \frac{y}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}} \\ 0 & \frac{y^{2} + 1}{\cos\left({\theta}\right)^{2} + 1} & 0 & 0 \\ 0 & 0 & \frac{1}{\cos\left({\theta}\right)^{2} + 1} & 0 \\ \frac{y}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}} & 0 & 0 & \frac{{\left(y^{2} \cos\left({\theta}\right)^{4} + 6 \, y^{2} \cos\left({\theta}\right)^{2} + \cos\left({\theta}\right)^{4} - 3 \, y^{2} + 2 \, \cos\left({\theta}\right)^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}}{4 \, {\left(y^{2} + 1\right)} {\left(\sin\left({\theta}\right)^{2} - 2\right)}^{2} \sin\left({\theta}\right)^{2}} \end{array}\right)\]
In [12]:
h00 = h.inverse()[0,0].expr().subs({sin(th)^2: 1 - cos(th)^2})
h00
Out[12]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}-\frac{1}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}}\]
In [13]:
h33 = h.inverse()[3,3].expr().subs({sin(th)^2: 1 - cos(th)^2})
h33
Out[13]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\frac{y^{2} \cos\left({\theta}\right)^{4} + 6 \, y^{2} \cos\left({\theta}\right)^{2} + \cos\left({\theta}\right)^{4} - 3 \, y^{2} + 2 \, \cos\left({\theta}\right)^{2} + 1}{4 \, {\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)} \sin\left({\theta}\right)^{2}}\]

Hence we set:

In [14]:
h.inverse()[0,0] = h00
h.inverse()[3,3] = h33

and we get

In [15]:
h.inverse()[:]
Out[15]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\begin{array}{rrrr} -\frac{1}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}} & 0 & 0 & \frac{y}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}} \\ 0 & \frac{y^{2} + 1}{\cos\left({\theta}\right)^{2} + 1} & 0 & 0 \\ 0 & 0 & \frac{1}{\cos\left({\theta}\right)^{2} + 1} & 0 \\ \frac{y}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}} & 0 & 0 & \frac{y^{2} \cos\left({\theta}\right)^{4} + 6 \, y^{2} \cos\left({\theta}\right)^{2} + \cos\left({\theta}\right)^{4} - 3 \, y^{2} + 2 \, \cos\left({\theta}\right)^{2} + 1}{4 \, {\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)} \sin\left({\theta}\right)^{2}} \end{array}\right)\]

Killing vectors

Two obvious Killing vectors are $\partial/\partial\psi$ and $\partial/\partial\tau$, since the components of $h$ do not depend on $\psi$ or $\tau$:

In [16]:
eta = N.vector_field(0, 0, 0, 1, name='eta', latex_name=r'\eta')
eta.display()
Out[16]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\eta = \frac{\partial}{\partial {\psi} }\]
In [17]:
h.lie_derivative(eta).display()
Out[17]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}0\]
In [18]:
J0 = N.vector_field(1, 0, 0, 0, name='J_0')
J0.display()
Out[18]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_0 = \frac{\partial}{\partial {\tau} }\]
In [19]:
h.lie_derivative(J0).display()
Out[19]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}0\]

A third Killing vector arises from the isometry expressed by $(T,R)\mapsto(\alpha T, R/\alpha)$ in Poincaré-type coordinates:

In [20]:
J1 = N.vector_field(y*sin(ta)/sqrt(1 + y^2),  -cos(ta)*sqrt(1 + y^2),
                    0, sin(ta)/sqrt(1 + y^2), name='J_1')
J1.display()        
Out[20]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_1 = \left( \frac{y \sin\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( -\sqrt{y^{2} + 1} \cos\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{\sin\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
In [21]:
h.lie_derivative(J1).display()
Out[21]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}0\]

Finally a fourth Killing vector is $\partial/\partial T$ of the Poincaré-type coordinates. We actually consider the linear combination $\partial/\partial T - \partial/\partial\tau$ since it has slightly simpler components in terms of the global coordinates $(\tau,y,\theta,\psi)$:

In [22]:
J2 = N.vector_field(y*cos(ta)/sqrt(1 + y^2),  sin(ta)*sqrt(1 + y^2),
                    0, cos(ta)/sqrt(1 + y^2), name='J_2')
J2.display() 
Out[22]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_2 = \left( \frac{y \cos\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( \sqrt{y^{2} + 1} \sin\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{\cos\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
In [23]:
h.lie_derivative(J2).display()
Out[23]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}0\]

Commutation relations

First of all we notice that $\eta$ commutes with all the three other Killing vectors:

In [24]:
[eta.bracket(j).display() for j in (J0, J1, J2)]
Out[24]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[\left[\eta,J_0\right] = 0, \left[\eta,J_1\right] = 0, \left[\eta,J_2\right] = 0\right]\]

To write easily the other commutation relations, we supplement $(J_0, J_1, J_2)$ by $\partial/\partial\theta$ to make it a vector frame on $\mathscr{N}$:

In [25]:
J = N.vector_frame('J', (J0, J1, J2, X.frame()[2]))
J0, J1, J2 = J[:-1]
J
Out[25]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N}, \left(J_{0},J_{1},J_{2},J_{3}\right)\right)\]
In [26]:
J2.display(J)
Out[26]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{2} = J_{2}\]
In [27]:
for v in J:
    show(v.display())
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{0} = \frac{\partial}{\partial {\tau} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{1} = \left( \frac{y \sin\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( -\sqrt{y^{2} + 1} \cos\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{\sin\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{2} = \left( \frac{y \cos\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( \sqrt{y^{2} + 1} \sin\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{\cos\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{3} = \frac{\partial}{\partial {\theta} }\]

Then we ask for the display of the commutators in that frame:

In [28]:
J0.bracket(J1).display(J)
Out[28]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[J_{0},J_{1}\right] = J_{2}\]
In [29]:
J0.bracket(J2).display(J)
Out[29]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[J_{0},J_{2}\right] = -J_{1}\]
In [30]:
J1.bracket(J2).display(J)
Out[30]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[J_{1},J_{2}\right] = -J_{0}\]

These commutation relations are not the standard ones for $\mathfrak{sl}(2,\mathbb{R})$; in order to get these, let us introduce the following linear combinations:

In [31]:
K0 = 2*J1
K0.set_name('K_0')
K0.display(J)
Out[31]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_0 = 2 J_{1}\]
In [32]:
K1 = J2 - J0
K1.set_name('K_1')
K1.display(J)
Out[32]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_1 = -J_{0}+J_{2}\]
In [33]:
K2 = J2 + J0
K2.set_name('K_2')
K2.display(J)
Out[33]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_2 = J_{0}+J_{2}\]
In [34]:
K = N.vector_frame('K', (K0, K1, K2, X.frame()[2]))
K0, K1, K2 = K[:-1]
K
Out[34]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N}, \left(K_{0},K_{1},K_{2},K_{3}\right)\right)\]
In [35]:
for v in K:
    show(v.display())
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{0} = \left( \frac{2 \, y \sin\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( -2 \, \sqrt{y^{2} + 1} \cos\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{2 \, \sin\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{1} = \left( \frac{y \cos\left({\tau}\right) - \sqrt{y^{2} + 1}}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( \sqrt{y^{2} + 1} \sin\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{\cos\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{2} = \left( \frac{y \cos\left({\tau}\right) + \sqrt{y^{2} + 1}}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\tau} } + \left( \sqrt{y^{2} + 1} \sin\left({\tau}\right) \right) \frac{\partial}{\partial y } + \left( \frac{\cos\left({\tau}\right)}{\sqrt{y^{2} + 1}} \right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{3} = \frac{\partial}{\partial {\theta} }\]

We have then

In [36]:
K0.bracket(K1).display(K)
Out[36]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[K_{0},K_{1}\right] = 2 K_{1}\]
In [37]:
K0.bracket(K2).display(K)
Out[37]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[K_{0},K_{2}\right] = -2 K_{2}\]
In [38]:
K1.bracket(K2).display(K)
Out[38]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left[K_{1},K_{2}\right] = K_{0}\]

The above commutation relations are exactly those of $\mathfrak{sl}(2,\mathbb{R})$ in the standard matrix representation:

In [39]:
sl2 = lie_algebras.sl(QQ, 2, representation='matrix')  # QQ instead of RR to deal with an exact field
E,F,H = sl2.gens()
E,F,H
Out[39]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\left(\begin{array}{rr} 0 & 1 \\ 0 & 0 \end{array}\right), \left(\begin{array}{rr} 0 & 0 \\ 1 & 0 \end{array}\right), \left(\begin{array}{rr} 1 & 0 \\ 0 & -1 \end{array}\right)\right)\]
In [40]:
all([H.bracket(E) == 2*E,
     H.bracket(F) == -2*F,
     E.bracket(F) == H])
Out[40]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\mathrm{True}\]

Komar angular momentum

The spacetime total angular momentum $J$ is computed from the axisymmetric Killing vector $\eta$ via the Komar integral: $$ J = \frac{1}{16\pi} \oint_{\mathscr{S}} \star (\mathrm{d}\underline{\eta}) $$ where

  • $\mathrm{d}\underline{\eta}$ is the exterior derivative of the 1-form $\underline{\eta}$ (the $h$-dual to $\eta$)
  • $\star (\mathrm{d}\underline{\eta})$ is the Hodge dual of $\mathrm{d}\underline{\eta}$ with respect to $h$
  • $\mathscr{S}$ is a closed spacelike 2-surface

In vacuum, the Komar integral $J$ is independent of the choice of $\mathscr{S}$. Let us choose $\mathscr{S}$ to be a sphere $(\tau, y) = \mathrm{const}$. We have then $$ J = \frac{1}{16\pi} \int_0^{2\pi} \int_0^\pi \left(\star (\mathrm{d}\underline{\eta}) \right)_{\theta\psi} \mathrm{d}\theta\; \mathrm{d}\psi$$

The Killing vector $\eta$:

In [41]:
eta.display()
Out[41]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\eta = \frac{\partial}{\partial {\psi} }\]

The 1-form $\underline{\eta}$:

In [42]:
ueta = eta.down(h)
ueta.set_name('ueta', latex_name=r'\underline{\eta}')
ueta.display()
Out[42]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\underline{\eta} = \left( \frac{4 \, y \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\tau} + \left( \frac{4 \, \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\psi}\]

The 2-form $\mathrm{d}\underline{\eta}$:

In [43]:
deta = diff(ueta)
deta.display()
Out[43]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\mathrm{d}\underline{\eta} = \left( -\frac{4 \, \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\tau}\wedge \mathrm{d} y + \left( -\frac{16 \, y \cos\left({\theta}\right) \sin\left({\theta}\right)}{\cos\left({\theta}\right)^{4} + 2 \, \cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\tau}\wedge \mathrm{d} {\theta} + \left( \frac{16 \, \cos\left({\theta}\right) \sin\left({\theta}\right)}{\cos\left({\theta}\right)^{4} + 2 \, \cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\theta}\wedge \mathrm{d} {\psi}\]

The 2-form $\star (\mathrm{d}\underline{\eta})$:

In [44]:
sdeta = deta.hodge_dual()
sdeta.display()
Out[44]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\star \mathrm{d}\underline{\eta} = \left( -\frac{8 \, \sqrt{\cos\left({\theta}\right) + 1} \sqrt{-\cos\left({\theta}\right) + 1} \cos\left({\theta}\right) \sin\left({\theta}\right)}{\cos\left({\theta}\right)^{4} - 1} \right) \mathrm{d} {\tau}\wedge \mathrm{d} y + \left( -\frac{8 \, y \sqrt{\cos\left({\theta}\right) + 1} \sqrt{-\cos\left({\theta}\right) + 1} \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{4} + 2 \, \cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\tau}\wedge \mathrm{d} {\theta} + \left( \frac{8 \, \sqrt{\cos\left({\theta}\right) + 1} \sqrt{-\cos\left({\theta}\right) + 1} \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{4} + 2 \, \cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\theta}\wedge \mathrm{d} {\psi}\]

The $\theta\psi$ component:

In [45]:
sdeta23 = sdeta[2,3].expr()
sdeta23
Out[45]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\frac{8 \, \sqrt{\cos\left({\theta}\right) + 1} \sqrt{-\cos\left({\theta}\right) + 1} \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{4} + 2 \, \cos\left({\theta}\right)^{2} + 1}\]

This can be simplified to $\frac{8\sin^3\theta}{(1 + \cos^2\theta)^2}$:

In [46]:
A = 8*sin(th)^3/(1 + cos(th)^2)^2
A
Out[46]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\frac{8 \, \sin\left({\theta}\right)^{3}}{{\left(\cos\left({\theta}\right)^{2} + 1\right)}^{2}}\]
In [47]:
(sdeta23^2 - A^2).simplify_full()
Out[47]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}0\]

Hence we have

In [48]:
J_Komar = 1/(16*pi)*integrate(integrate(A, (th, 0, pi)), (ps, 0, 2*pi))
J_Komar
Out[48]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}1\]

If we restore the metric scale factor $m^2$, we have $h \to m^2 h$, $\underline{\eta} \to m^2 \underline{\eta}$, $\mathrm{d}\underline{\eta} \to m^2 \mathrm{d}\underline{\eta}$ and $\star(\mathrm{d}\underline{\eta}) \to m^2 \star(\mathrm{d}\underline{\eta})$. The last property holds because in dimension 4, the Hodge dual is conformally invariant on 2-forms (as it can be easily checked from its definition).
Hence we conclude that $$ J = m^2 $$ In other words, the angular momentum of the NHEK spacetime is identical to the angular momentum of the Kerr spacetime from which it derives.

For the record:

In [49]:
integrate(A, (th, 0, pi))
Out[49]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}8\]
In [50]:
integrate(A, th)
Out[50]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}-\frac{8 \, \cos\left({\theta}\right)}{\cos\left({\theta}\right)^{2} + 1}\]
In [51]:
bool(diff(_, th) == A)  # a check
Out[51]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\mathrm{True}\]

Conformal global coordinates

Let us introduce the "conformal" global coordinates $(\tau,\chi,\theta,\psi)$ such that $y = \tan\chi$:

In [52]:
XC.<ta, ch, th, ps> = N.chart(r"ta:\tau ch:(-pi/2,pi/2):\chi th:(0,pi):\theta ps:(0,2*pi):periodic:\psi") 
print(XC)
XC
Chart (N, (ta, ch, th, ps))
Out[52]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N},({\tau}, {\chi}, {\theta}, {\psi})\right)\]
In [53]:
XC.coord_range()
Out[53]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}{\tau} :\ \left( -\infty, +\infty \right) ;\quad {\chi} :\ \left( -\frac{1}{2} \, \pi , \frac{1}{2} \, \pi \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\psi} :\ \left[ 0 , 2 \, \pi \right] \mbox{(periodic)}\]
In [54]:
X_to_XC = X.transition_map(XC, [ta, atan(y), th, ps])
X_to_XC.display()
Out[54]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} {\tau} & = & {\tau} \\ {\chi} & = & \arctan\left(y\right) \\ {\theta} & = & {\theta} \\ {\psi} & = & {\psi} \end{array}\right.\]
In [55]:
X_to_XC.inverse().display()
Out[55]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} {\tau} & = & {\tau} \\ y & = & \frac{\sin\left({\chi}\right)}{\cos\left({\chi}\right)} \\ {\theta} & = & {\theta} \\ {\psi} & = & {\psi} \end{array}\right.\]
In [56]:
h.display(XC)
Out[56]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}h = \left( -\frac{\sin\left({\theta}\right)^{4} + 4 \, {\left(\cos\left({\chi}\right)^{2} - 2\right)} \sin\left({\theta}\right)^{2} + 4}{\cos\left({\chi}\right)^{2} \cos\left({\theta}\right)^{2} + \cos\left({\chi}\right)^{2}} \right) \mathrm{d} {\tau}\otimes \mathrm{d} {\tau} + \left( \frac{4 \, \sin\left({\chi}\right) \sin\left({\theta}\right)^{2}}{\cos\left({\chi}\right) \cos\left({\theta}\right)^{2} + \cos\left({\chi}\right)} \right) \mathrm{d} {\tau}\otimes \mathrm{d} {\psi} + \left( \frac{\cos\left({\theta}\right)^{2} + 1}{\cos\left({\chi}\right)^{2}} \right) \mathrm{d} {\chi}\otimes \mathrm{d} {\chi} + \left( \cos\left({\theta}\right)^{2} + 1 \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \frac{4 \, \sin\left({\chi}\right) \sin\left({\theta}\right)^{2}}{\cos\left({\chi}\right) \cos\left({\theta}\right)^{2} + \cos\left({\chi}\right)} \right) \mathrm{d} {\psi}\otimes \mathrm{d} {\tau} + \left( \frac{4 \, \sin\left({\theta}\right)^{2}}{\cos\left({\theta}\right)^{2} + 1} \right) \mathrm{d} {\psi}\otimes \mathrm{d} {\psi}\]

Expression of the Killing vectors in terms of conformal coordinates:

In [57]:
for v in J[:-1]:
    show(v.display(XC))
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{0} = \frac{\partial}{\partial {\tau} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{1} = \sin\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\tau} } -\cos\left({\chi}\right) \cos\left({\tau}\right) \frac{\partial}{\partial {\chi} } + \cos\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{2} = \cos\left({\tau}\right) \sin\left({\chi}\right) \frac{\partial}{\partial {\tau} } + \cos\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\chi} } + \cos\left({\chi}\right) \cos\left({\tau}\right) \frac{\partial}{\partial {\psi} }\]
In [58]:
for v in K[:-1]:
    show(v.display(XC))
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{0} = 2 \, \sin\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\tau} } -2 \, \cos\left({\chi}\right) \cos\left({\tau}\right) \frac{\partial}{\partial {\chi} } + 2 \, \cos\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{1} = \left( \cos\left({\tau}\right) \sin\left({\chi}\right) - 1 \right) \frac{\partial}{\partial {\tau} } + \cos\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\chi} } + \cos\left({\chi}\right) \cos\left({\tau}\right) \frac{\partial}{\partial {\psi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{2} = \left( \cos\left({\tau}\right) \sin\left({\chi}\right) + 1 \right) \frac{\partial}{\partial {\tau} } + \cos\left({\chi}\right) \sin\left({\tau}\right) \frac{\partial}{\partial {\chi} } + \cos\left({\chi}\right) \cos\left({\tau}\right) \frac{\partial}{\partial {\psi} }\]

Poincaré patch

In [59]:
NP = N.open_subset('NP', latex_name=r'\mathscr{N}_{\rm P}',
                   coord_def={XC: [-ch - pi/2 < ta, ta < - ch - 3*pi/2]})
print(NP)
Open subset NP of the 4-dimensional Lorentzian manifold N
In [60]:
XP.<T,R,th,Ph> = NP.chart(r"T R th:(0,pi):\theta Ph:(0,2*pi):periodic:\Phi")
print(XP)
XP
Chart (NP, (T, R, th, Ph))
Out[60]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N}_{\rm P},(T, R, {\theta}, {\Phi})\right)\]
In [61]:
Conf_to_Poinc = XC.transition_map(XP, [sin(ta)/(cos(ta) + sin(ch)),
                                       (cos(ta) + sin(ch))/cos(ch),
                                       th,
                                       ps + log((cos(ta)*cos(ch) + sin(ta)*sin(ch))/(sin(ta) + cos(ch)))])
Conf_to_Poinc.display()
Out[61]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} T & = & \frac{\sin\left({\tau}\right)}{\cos\left({\tau}\right) + \sin\left({\chi}\right)} \\ R & = & \frac{\cos\left({\tau}\right) + \sin\left({\chi}\right)}{\cos\left({\chi}\right)} \\ {\theta} & = & {\theta} \\ {\Phi} & = & {\psi} + \log\left(\frac{\cos\left({\chi}\right) \cos\left({\tau}\right) + \sin\left({\chi}\right) \sin\left({\tau}\right)}{\cos\left({\chi}\right) + \sin\left({\tau}\right)}\right) \end{array}\right.\]
In [62]:
Conf_to_Poinc.set_inverse(atan2(2*R^2*T, R^2*(1 - T^2) +1) + pi*unit_step(-R),
                          atan((R^2*(1 + T^2) - 1)/(2*R)),
                          th,
                          Ph - ln(((1 - T*R)^2 + R^2)/sqrt(((1 + T^2)*R^2 - 1)^2 + 4*R^2)))
Check of the inverse coordinate transformation:
  ta == pi*unit_step(-(cos(ta) + sin(ch))/cos(ch)) + arctan2(2*(cos(ta) + sin(ch))*sin(ta)/cos(ch)^2, 2*(cos(ta)^2 + cos(ta)*sin(ch))/cos(ch)^2)  **failed**
  ch == arctan(sin(ch)/cos(ch))  **failed**
  th == th  *passed*
  ps == ps  *passed*
  T == (R^3*T^2*sin(pi*unit_step(-R)) - 2*R^3*T*cos(pi*unit_step(-R)) - R^3*sin(pi*unit_step(-R)) - R*sin(pi*unit_step(-R)))/(2*R^3*T*sin(pi*unit_step(-R)) - R^3*cos(pi*unit_step(-R)) + (R^3*cos(pi*unit_step(-R)) - R^2*abs(R))*T^2 - (R^2 - 1)*abs(R) - R*cos(pi*unit_step(-R)))  **failed**
  R == -1/2*(2*R^3*T*sin(pi*unit_step(-R)) - R^3*cos(pi*unit_step(-R)) + (R^3*cos(pi*unit_step(-R)) - R^2*abs(R))*T^2 - (R^2 - 1)*abs(R) - R*cos(pi*unit_step(-R)))/(R*abs(R))  **failed**
  th == th  *passed*
  Ph == Ph + log((R^2*T^2*abs(R)*sin(pi*unit_step(-R)) - 2*(R^2*cos(pi*unit_step(-R)) - R*sin(pi*unit_step(-R)))*T*abs(R) - (R^2*sin(pi*unit_step(-R)) + 2*R*cos(pi*unit_step(-R)) - sin(pi*unit_step(-R)))*abs(R))/(R^3*T^2*sin(pi*unit_step(-R)) - 2*R^3*T*cos(pi*unit_step(-R)) - R^3*sin(pi*unit_step(-R)) - 2*R*abs(R) - R*sin(pi*unit_step(-R))))  **failed**
NB: a failed report can reflect a mere lack of simplification.
In [63]:
Conf_to_Poinc.inverse().display()
Out[63]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} {\tau} & = & \pi \mathrm{u}\left(-R\right) + \arctan\left(2 \, R^{2} T, -{\left(T^{2} - 1\right)} R^{2} + 1\right) \\ {\chi} & = & \arctan\left(\frac{{\left(T^{2} + 1\right)} R^{2} - 1}{2 \, R}\right) \\ {\theta} & = & {\theta} \\ {\psi} & = & {\Phi} - \log\left(\frac{{\left(R T - 1\right)}^{2} + R^{2}}{\sqrt{{\left({\left(T^{2} + 1\right)} R^{2} - 1\right)}^{2} + 4 \, R^{2}}}\right) \end{array}\right.\]
In [64]:
graph_XP = XP.plot(chart=XC, ambient_coords=(ch, ta), fixed_coords={th: pi/2, Ph: 0},
                   ranges={T: (-9, 9), R: (-9, 8)}, color={T: 'red', R: 'grey'},
                   number_values=17, plot_points=200)
show(graph_XP, aspect_ratio=1)
In [65]:
NP1 = NP.open_subset('NP1', latex_name=r'\mathscr{N}_{\rm P}^+',
                     coord_def={XP: R>0})
NP1
Out[65]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\mathscr{N}_{\rm P}^+\]
In [66]:
with assuming(R>0):
    for v in J[:-1]:
        show(v.display(XP))
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{0} = \left( \frac{R^{2} T^{2} + R^{2} + 1}{2 \, R^{2}} \right) \frac{\partial}{\partial T } -R T \frac{\partial}{\partial R } -\frac{1}{R} \frac{\partial}{\partial {\Phi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{1} = T \frac{\partial}{\partial T } -R \frac{\partial}{\partial R }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}J_{2} = \left( -\frac{R^{2} T^{2} - R^{2} + 1}{2 \, R^{2}} \right) \frac{\partial}{\partial T } + R T \frac{\partial}{\partial R } + \frac{1}{R} \frac{\partial}{\partial {\Phi} }\]
In [67]:
with assuming(R>0):
    for v in K[:-1]:
        show(v.display(XP))
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{0} = 2 \, T \frac{\partial}{\partial T } -2 \, R \frac{\partial}{\partial R }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{1} = \left( -\frac{R^{2} T^{2} + 1}{R^{2}} \right) \frac{\partial}{\partial T } + 2 \, R T \frac{\partial}{\partial R } + \frac{2}{R} \frac{\partial}{\partial {\Phi} }\]
\[\newcommand{\Bold}[1]{\mathbf{#1}}K_{2} = \frac{\partial}{\partial T }\]

Plot of the Killing vector $J_1$

In [68]:
graph_J1 = J1.plot(chart=XC, ambient_coords=(ch, ta), chart_domain=XC, 
                   fixed_coords={th: pi/2, ps: 0}, ranges={ta: (-pi, 2*pi)}, 
                   number_values={ta: 16, ch: 7},
                   color='purple', scale=0.4, arrowsize=2)
graph = graph_XP + graph_J1
show(graph, figsize=8)

Plot of the Killing vector $K_1$

In [69]:
graph_K1 = K1.plot(chart=XC, ambient_coords=(ch, ta), chart_domain=XC, 
                   fixed_coords={th: pi/2, ps: 0}, ranges={ta: (-pi, 2*pi)}, 
                   number_values={ta: 16, ch: 7},
                   color='blue', scale=0.4, arrowsize=2)
graph = graph_XP + graph_K1
show(graph, figsize=8)

Plot of Poincaré patches with $T=\mathrm{const}$ and $R=\mathrm{const}$ hypersurfaces

In [70]:
taf = (Conf_to_Poinc.inverse()(T, R, 0, 0)[0]).function(T, R)
taf
Out[70]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left( T, R \right) \ {\mapsto} \ \pi \mathrm{u}\left(-R\right) + \arctan\left(2 \, R^{2} T, -R^{2} T^{2} + R^{2} + 1\right)\]
In [71]:
chf = (Conf_to_Poinc.inverse()(T, R, 0, 0)[1]).function(T, R)
chf
Out[71]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left( T, R \right) \ {\mapsto} \ \arctan\left(\frac{R^{2} T^{2} + R^{2} - 1}{2 \, R}\right)\]
In [72]:
def plot_p(n, T_values=None, R_min=0.0001, R_max=100, 
           color_T='dimgray', linestyle_T='-', 
           R_values=None, T_min=-100, T_max=100, 
           color_R='red', linestyle_R='-'):
    n2 = 2*n
    res = polygon([(pi/2, (n2 - 1)*pi), (-pi/2, n2*pi), (pi/2, (n2 + 1)*pi)], 
                  color='white', edgecolor='black')
    res += line([(pi/2, (n2 - 1)*pi), (-pi/2, n2*pi), (pi/2, (n2 + 1)*pi)], 
                color='black', thickness=3)
    if T_values is not None:
        for T0 in T_values:
            res += parametric_plot((chf(T0, R), taf(T0, R) + n2*pi), (R, R_min, R_max), 
                                   color=color_T, linestyle=linestyle_T)
    if R_values is not None:
        for R0 in R_values:
            res += parametric_plot((chf(T, R0), taf(T, R0) + n2*pi), (T, T_min, T_max), 
                                   color=color_R, linestyle=linestyle_R)
    return res


def plot_m(n, T_values=None, R_min=-100, R_max=-0.0001, 
           color_T='dimgray', linestyle_T='-', 
           R_values=None, T_min=-100, T_max=100, 
           color_R='red', linestyle_R='-'):
    n2 = 2*n
    res = polygon([(-pi/2, n2*pi), (pi/2, (n2 + 1)*pi), (-pi/2, (n2 + 2)*pi)], 
                  color='cornsilk', edgecolor='black')
    res += line([(-pi/2, n2*pi), (pi/2, (n2 + 1)*pi), (-pi/2, (n2 + 2)*pi)], 
                color='black', thickness=3)
    if T_values is not None:
        for T0 in T_values:
            res += parametric_plot((chf(T0, R), taf(T0, R) + n2*pi), (R, R_min, R_max), 
                                   color=color_T, linestyle=linestyle_T)
    if R_values is not None:
        for R0 in R_values:
            res += parametric_plot((chf(T, R0), taf(T, R0) + n2*pi), (T, T_min, T_max), 
                                   color=color_R, linestyle=linestyle_R)
    return res
In [73]:
R_val_p = [0.2, 0.4, 0.6, 0.8, 1]
R_val_m = [-1, -0.8, -0.6, -0.4, -0.2] 
T_val = [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2]
In [74]:
graphics_array([plot_p(0, T_values=T_val, R_max=R_val_p[-1], R_values=R_val_p),
                plot_m(0, T_values=T_val, R_min=R_val_m[0], R_values=R_val_m)])
Out[74]:
In [75]:
graph = Graphics()
for n in [-1, 0, 1]:
    graph += plot_p(n, T_values=T_val, R_max=R_val_p[-1], R_values=R_val_p)
    graph += plot_m(n, T_values=T_val, R_min=R_val_m[0], R_values=R_val_m)
graph += line([(-pi/2, -4), (-pi/2, 8)], color='darkmagenta', thickness=2) \
         + line([(pi/2, -4), (pi/2, 8)], color='darkmagenta', thickness=2)
graph.axes_labels([r'$\chi$', r'$\tau$'])
show(graph, ymin=-pi, ymax=2*pi, frame=True, axes=False, figsize=10)

Adding some labels:

In [76]:
graph += text(r"$R=\!+\infty$", (pi/2+0.25, 0), rotation=90, color='darkmagenta',
              fontsize=16) \
         + text(r"$R=\!-\infty$", (-pi/2-0.2, pi), rotation=90, color='darkmagenta',
                fontsize=16) \
         + text(r"$R=1$", (0.75, 1), rotation=55, color='red', fontsize=16) \
         + text(r"$R=\!-1$", (-0.8, 2), rotation=55, color='red', fontsize=16) \
         + text(r"$R=0$", (-0.15, pi/2+0.15), rotation=45, color='black', fontsize=16) \
         + text(r"$\mathscr{N}_{\rm P}^+$", (0.9, 0), color='black', fontsize=18) \
         + text(r"$\mathscr{N}_{\rm P}^-$", (-0.9, pi), color='black', fontsize=18)
graph.axes_labels([r'$\chi$', r'$\tau$'])
graph.save("exk_NHEK_spacetime.pdf", xmin=-2.2, xmax=2.2, ymin=-pi, ymax=2*pi, 
           frame=True, axes=False, figsize=9)
show(graph, xmin=-2.2, xmax=2.2, ymin=-pi, ymax=2*pi, frame=True, axes=False, figsize=9)