Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

SageMath notebooks associated to the Black Hole Lectures (https://luth.obspm.fr/~luthier/gourgoulhon/bh16)

Project: BHLectures
Views: 20113
Kernel: SageMath 9.5.beta2

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 (N,h)(\mathcal{N}, h).

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

version()
'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:

%display latex Parallelism().set(nproc=8)

Manifold

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

Global coordinate chart (τ,y,θ,ψ)(\tau, y, \theta, \psi):

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))
(N,(τ,y,θ,ψ))\renewcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N},({\tau}, y, {\theta}, {\psi})\right)
X.coord_range()
τ: (,+);y: (,+);θ: (0,π);ψ: [0,2π](periodic)\renewcommand{\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:

X.coframe()[:]
(dτ,dy,dθ,dψ)\renewcommand{\Bold}[1]{\mathbf{#1}}\left(\mathrm{d} {\tau}, \mathrm{d} y, \mathrm{d} {\theta}, \mathrm{d} {\psi}\right)
dta, dy, dth, dps = X.coframe()[:]

NHEK metric

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

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()
h=(sin(θ)4+(sin(θ)48sin(θ)2+4)y24sin(θ)2+4cos(θ)2+1)dτdτ+(4ysin(θ)2cos(θ)2+1)dτdψ+(cos(θ)2+1y2+1)dydy+(cos(θ)2+1)dθdθ+(4ysin(θ)2cos(θ)2+1)dψdτ+(4sin(θ)2cos(θ)2+1)dψdψ\renewcommand{\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:

h.ricci().display()
Ric(h)=0\renewcommand{\Bold}[1]{\mathbf{#1}}\mathrm{Ric}\left(h\right) = 0

Inverse metric

h.inverse()[:]
(sin(θ)22cos(θ)4+(cos(θ)4+2cos(θ)2+1)y2+2cos(θ)2+100y(cos(θ)2+1)y2+cos(θ)2+10y2+1cos(θ)2+100001cos(θ)2+10y(cos(θ)2+1)y2+cos(θ)2+100cos(θ)6+3cos(θ)4+(cos(θ)6+7cos(θ)4+3cos(θ)23)y2+3cos(θ)2+14(sin(θ)64sin(θ)4+(sin(θ)64sin(θ)4+4sin(θ)2)y2+4sin(θ)2))\renewcommand{\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:

h.inverse().apply_map(factor) h.inverse()[:]
(sin(θ)22(y2+1)(cos(θ)2+1)200y(y2+1)(cos(θ)2+1)0y2+1cos(θ)2+100001cos(θ)2+10y(y2+1)(cos(θ)2+1)00(y2cos(θ)4+6y2cos(θ)2+cos(θ)43y2+2cos(θ)2+1)(cos(θ)2+1)4(y2+1)(sin(θ)22)2sin(θ)2)\renewcommand{\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)
h00 = h.inverse()[0,0].expr().subs({sin(th)^2: 1 - cos(th)^2}) h00
1(y2+1)(cos(θ)2+1)\renewcommand{\Bold}[1]{\mathbf{#1}}-\frac{1}{{\left(y^{2} + 1\right)} {\left(\cos\left({\theta}\right)^{2} + 1\right)}}
h33 = h.inverse()[3,3].expr().subs({sin(th)^2: 1 - cos(th)^2}) h33
y2cos(θ)4+6y2cos(θ)2+cos(θ)43y2+2cos(θ)2+14(y2+1)(cos(θ)2+1)sin(θ)2\renewcommand{\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:

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

and we get

h.inverse()[:]
(1(y2+1)(cos(θ)2+1)00y(y2+1)(cos(θ)2+1)0y2+1cos(θ)2+100001cos(θ)2+10y(y2+1)(cos(θ)2+1)00y2cos(θ)4+6y2cos(θ)2+cos(θ)43y2+2cos(θ)2+14(y2+1)(cos(θ)2+1)sin(θ)2)\renewcommand{\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 hh do not depend on ψ\psi or τ\tau:

eta = N.vector_field(0, 0, 0, 1, name='eta', latex_name=r'\eta') eta.display()
η=ψ\renewcommand{\Bold}[1]{\mathbf{#1}}\eta = \frac{\partial}{\partial {\psi} }
h.lie_derivative(eta).display()
0\renewcommand{\Bold}[1]{\mathbf{#1}}0
J0 = N.vector_field(1, 0, 0, 0, name='J_0') J0.display()
J0=τ\renewcommand{\Bold}[1]{\mathbf{#1}}J_0 = \frac{\partial}{\partial {\tau} }
h.lie_derivative(J0).display()
0\renewcommand{\Bold}[1]{\mathbf{#1}}0

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

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()
J1=(ysin(τ)y2+1)τ+(y2+1cos(τ))y+(sin(τ)y2+1)ψ\renewcommand{\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} }
h.lie_derivative(J1).display()
0\renewcommand{\Bold}[1]{\mathbf{#1}}0

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

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()
J2=(ycos(τ)y2+1)τ+(y2+1sin(τ))y+(cos(τ)y2+1)ψ\renewcommand{\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} }
h.lie_derivative(J2).display()
0\renewcommand{\Bold}[1]{\mathbf{#1}}0

Commutation relations

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

[eta.bracket(j).display() for j in (J0, J1, J2)]
[[η,J0]=0,[η,J1]=0,[η,J2]=0]\renewcommand{\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 (J0,J1,J2)(J_0, J_1, J_2) by /θ\partial/\partial\theta to make it a vector frame on N\mathscr{N}:

J = N.vector_frame('J', (J0, J1, J2, X.frame()[2])) J0, J1, J2 = J[:-1] J
(N,(J0,J1,J2,J3))\renewcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N}, \left(J_{0},J_{1},J_{2},J_{3}\right)\right)
J2.display(J)
J2=J2\renewcommand{\Bold}[1]{\mathbf{#1}}J_{2} = J_{2}
for v in J: show(v.display())
J0=τ\renewcommand{\Bold}[1]{\mathbf{#1}}J_{0} = \frac{\partial}{\partial {\tau} }
J1=(ysin(τ)y2+1)τ+(y2+1cos(τ))y+(sin(τ)y2+1)ψ\renewcommand{\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} }
J2=(ycos(τ)y2+1)τ+(y2+1sin(τ))y+(cos(τ)y2+1)ψ\renewcommand{\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} }
J3=θ\renewcommand{\Bold}[1]{\mathbf{#1}}J_{3} = \frac{\partial}{\partial {\theta} }

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

J0.bracket(J1).display(J)
[J0,J1]=J2\renewcommand{\Bold}[1]{\mathbf{#1}}\left[J_{0},J_{1}\right] = J_{2}
J0.bracket(J2).display(J)
[J0,J2]=J1\renewcommand{\Bold}[1]{\mathbf{#1}}\left[J_{0},J_{2}\right] = -J_{1}
J1.bracket(J2).display(J)
[J1,J2]=J0\renewcommand{\Bold}[1]{\mathbf{#1}}\left[J_{1},J_{2}\right] = -J_{0}

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

K0 = 2*J1 K0.set_name('K_0') K0.display(J)
K0=2J1\renewcommand{\Bold}[1]{\mathbf{#1}}K_0 = 2 J_{1}
K1 = J2 - J0 K1.set_name('K_1') K1.display(J)
K1=J0+J2\renewcommand{\Bold}[1]{\mathbf{#1}}K_1 = -J_{0}+J_{2}
K2 = J2 + J0 K2.set_name('K_2') K2.display(J)
K2=J0+J2\renewcommand{\Bold}[1]{\mathbf{#1}}K_2 = J_{0}+J_{2}
K = N.vector_frame('K', (K0, K1, K2, X.frame()[2])) K0, K1, K2 = K[:-1] K
(N,(K0,K1,K2,K3))\renewcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N}, \left(K_{0},K_{1},K_{2},K_{3}\right)\right)
for v in K: show(v.display())
K0=(2ysin(τ)y2+1)τ+(2y2+1cos(τ))y+(2sin(τ)y2+1)ψ\renewcommand{\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} }
K1=(ycos(τ)y2+1y2+1)τ+(y2+1sin(τ))y+(cos(τ)y2+1)ψ\renewcommand{\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} }
K2=(ycos(τ)+y2+1y2+1)τ+(y2+1sin(τ))y+(cos(τ)y2+1)ψ\renewcommand{\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} }
K3=θ\renewcommand{\Bold}[1]{\mathbf{#1}}K_{3} = \frac{\partial}{\partial {\theta} }

We have then

K0.bracket(K1).display(K)
[K0,K1]=2K1\renewcommand{\Bold}[1]{\mathbf{#1}}\left[K_{0},K_{1}\right] = 2 K_{1}
K0.bracket(K2).display(K)
[K0,K2]=2K2\renewcommand{\Bold}[1]{\mathbf{#1}}\left[K_{0},K_{2}\right] = -2 K_{2}
K1.bracket(K2).display(K)
[K1,K2]=K0\renewcommand{\Bold}[1]{\mathbf{#1}}\left[K_{1},K_{2}\right] = K_{0}

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

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
((0100),(0010),(1001))\renewcommand{\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)
all([H.bracket(E) == 2*E, H.bracket(F) == -2*F, E.bracket(F) == H])
True\renewcommand{\Bold}[1]{\mathbf{#1}}\mathrm{True}

Komar angular momentum

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

  • dη\mathrm{d}\underline{\eta} is the exterior derivative of the 1-form η\underline{\eta} (the hh-dual to η\eta)

  • (dη)\star (\mathrm{d}\underline{\eta}) is the Hodge dual of dη\mathrm{d}\underline{\eta} with respect to hh

  • S\mathscr{S} is a closed spacelike 2-surface

In vacuum, the Komar integral JJ is independent of the choice of S\mathscr{S}. Let us choose S\mathscr{S} to be a sphere (τ,y)=const(\tau, y) = \mathrm{const}. We have then J=116π02π0π((dη))θψdθ  dψ 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:

eta.display()
η=ψ\renewcommand{\Bold}[1]{\mathbf{#1}}\eta = \frac{\partial}{\partial {\psi} }

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

ueta = eta.down(h) ueta.set_name('ueta', latex_name=r'\underline{\eta}') ueta.display()
η=(4ysin(θ)2cos(θ)2+1)dτ+(4sin(θ)2cos(θ)2+1)dψ\renewcommand{\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 dη\mathrm{d}\underline{\eta}:

deta = diff(ueta) deta.display()
dη=(4sin(θ)2cos(θ)2+1)dτdy+(16ycos(θ)sin(θ)cos(θ)4+2cos(θ)2+1)dτdθ+(16cos(θ)sin(θ)cos(θ)4+2cos(θ)2+1)dθdψ\renewcommand{\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 (dη)\star (\mathrm{d}\underline{\eta}):

sdeta = deta.hodge_dual() sdeta.display()
dη=(8cos(θ)+1cos(θ)+1cos(θ)sin(θ)cos(θ)41)dτdy+(8ycos(θ)+1cos(θ)+1sin(θ)2cos(θ)4+2cos(θ)2+1)dτdθ+(8cos(θ)+1cos(θ)+1sin(θ)2cos(θ)4+2cos(θ)2+1)dθdψ\renewcommand{\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:

sdeta23 = sdeta[2,3].expr() sdeta23
8cos(θ)+1cos(θ)+1sin(θ)2cos(θ)4+2cos(θ)2+1\renewcommand{\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 8sin3θ(1+cos2θ)2\frac{8\sin^3\theta}{(1 + \cos^2\theta)^2}:

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

Hence we have

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

If we restore the metric scale factor m2m^2, we have hm2hh \to m^2 h, ηm2η\underline{\eta} \to m^2 \underline{\eta}, dηm2dη\mathrm{d}\underline{\eta} \to m^2 \mathrm{d}\underline{\eta} and (dη)m2(dη)\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=m2 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:

integrate(A, (th, 0, pi))
8\renewcommand{\Bold}[1]{\mathbf{#1}}8
integrate(A, th)
8cos(θ)cos(θ)2+1\renewcommand{\Bold}[1]{\mathbf{#1}}-\frac{8 \, \cos\left({\theta}\right)}{\cos\left({\theta}\right)^{2} + 1}
bool(diff(_, th) == A) # a check
True\renewcommand{\Bold}[1]{\mathbf{#1}}\mathrm{True}

Conformal global coordinates

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

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))
(N,(τ,χ,θ,ψ))\renewcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N},({\tau}, {\chi}, {\theta}, {\psi})\right)
XC.coord_range()
τ: (,+);χ: (12π,12π);θ: (0,π);ψ: [0,2π](periodic)\renewcommand{\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)}
X_to_XC = X.transition_map(XC, [ta, atan(y), th, ps]) X_to_XC.display()
{τ=τχ=arctan(y)θ=θψ=ψ\renewcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} {\tau} & = & {\tau} \\ {\chi} & = & \arctan\left(y\right) \\ {\theta} & = & {\theta} \\ {\psi} & = & {\psi} \end{array}\right.
X_to_XC.inverse().display()
{τ=τy=sin(χ)cos(χ)θ=θψ=ψ\renewcommand{\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.
h.display(XC)
h=(sin(θ)4+4(cos(χ)22)sin(θ)2+4cos(χ)2cos(θ)2+cos(χ)2)dτdτ+(4sin(χ)sin(θ)2cos(χ)cos(θ)2+cos(χ))dτdψ+(cos(θ)2+1cos(χ)2)dχdχ+(cos(θ)2+1)dθdθ+(4sin(χ)sin(θ)2cos(χ)cos(θ)2+cos(χ))dψdτ+(4sin(θ)2cos(θ)2+1)dψdψ\renewcommand{\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:

for v in J[:-1]: show(v.display(XC))
J0=τ\renewcommand{\Bold}[1]{\mathbf{#1}}J_{0} = \frac{\partial}{\partial {\tau} }
J1=sin(χ)sin(τ)τcos(χ)cos(τ)χ+cos(χ)sin(τ)ψ\renewcommand{\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} }
J2=cos(τ)sin(χ)τ+cos(χ)sin(τ)χ+cos(χ)cos(τ)ψ\renewcommand{\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} }
for v in K[:-1]: show(v.display(XC))
K0=2sin(χ)sin(τ)τ2cos(χ)cos(τ)χ+2cos(χ)sin(τ)ψ\renewcommand{\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} }
K1=(cos(τ)sin(χ)1)τ+cos(χ)sin(τ)χ+cos(χ)cos(τ)ψ\renewcommand{\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} }
K2=(cos(τ)sin(χ)+1)τ+cos(χ)sin(τ)χ+cos(χ)cos(τ)ψ\renewcommand{\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

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
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))
(NP,(T,R,θ,Φ))\renewcommand{\Bold}[1]{\mathbf{#1}}\left(\mathscr{N}_{\rm P},(T, R, {\theta}, {\Phi})\right)
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()
{T=sin(τ)cos(τ)+sin(χ)R=cos(τ)+sin(χ)cos(χ)θ=θΦ=ψ+log(cos(χ)cos(τ)+sin(χ)sin(τ)cos(χ)+sin(τ))\renewcommand{\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.
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.
Conf_to_Poinc.inverse().display()
{τ=πu(R)+arctan(2R2T,(T21)R2+1)χ=arctan((T2+1)R212R)θ=θψ=Φlog((RT1)2+R2((T2+1)R21)2+4R2)\renewcommand{\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.
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)
Image in a Jupyter notebook
NP1 = NP.open_subset('NP1', latex_name=r'\mathscr{N}_{\rm P}^+', coord_def={XP: R>0}) NP1
NP+\renewcommand{\Bold}[1]{\mathbf{#1}}\mathscr{N}_{\rm P}^+
with assuming(R>0): for v in J[:-1]: show(v.display(XP))
J0=(R2T2+R2+12R2)TRTR1RΦ\renewcommand{\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} }
J1=TTRR\renewcommand{\Bold}[1]{\mathbf{#1}}J_{1} = T \frac{\partial}{\partial T } -R \frac{\partial}{\partial R }
J2=(R2T2R2+12R2)T+RTR+1RΦ\renewcommand{\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} }
with assuming(R>0): for v in K[:-1]: show(v.display(XP))
K0=2TT2RR\renewcommand{\Bold}[1]{\mathbf{#1}}K_{0} = 2 \, T \frac{\partial}{\partial T } -2 \, R \frac{\partial}{\partial R }
K1=(R2T2+1R2)T+2RTR+2RΦ\renewcommand{\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} }
K2=T\renewcommand{\Bold}[1]{\mathbf{#1}}K_{2} = \frac{\partial}{\partial T }

Plot of the Killing vector J1J_1

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)
Image in a Jupyter notebook

Plot of the Killing vector K1K_1

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)
Image in a Jupyter notebook

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

taf = (Conf_to_Poinc.inverse()(T, R, 0, 0)[0]).function(T, R) taf
(T,R)  πu(R)+arctan(2R2T,R2T2+R2+1)\renewcommand{\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)
chf = (Conf_to_Poinc.inverse()(T, R, 0, 0)[1]).function(T, R) chf
(T,R)  arctan(R2T2+R212R)\renewcommand{\Bold}[1]{\mathbf{#1}}\left( T, R \right) \ {\mapsto} \ \arctan\left(\frac{R^{2} T^{2} + R^{2} - 1}{2 \, R}\right)
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
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]
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)])
Image in a Jupyter notebook
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)
Image in a Jupyter notebook

Adding some labels:

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)
Image in a Jupyter notebook