Contact

This notebook details some computations in the extremal Reissner-Nordström spacetime.

Views: 99
Image: ubuntu2004
Kernel: SageMath 9.8

# Extremal Reissner-Nordström spacetime

This SageMath notebook accompanies the article Peeling at extreme black hole horizons by Jack Borthwick, Eric Gourgoulhon and Jean-Philippe Nicolas, arXIv:2303.14574. It involves differential geometry tools implemented in SageMath through the SageManifolds project.

version()

'SageMath version 9.8, Release Date: 2023-02-11'
%display latex


## Spacetime manifold

We declare the spacetime manifold $\mathscr{M}$ as a 4-dimensional Lorentzian manifold, with the keyword signature='negative'to indicate that the metric signature is chosen to be $(+,-,-,-)$:

M = Manifold(4, 'M', latex_name=r'\mathscr{M}', structure='Lorentzian',
signature='negative')
print(M)
M

4-dimensional Lorentzian manifold M

$\displaystyle \mathscr{M}$

We consider $\mathscr{M}$ to be a part of the maximally extended extreme Reissner-Nordström spacetime, namely $\mathscr{M} = E_+ \cup E_-,$ where $E_+$ and $E_-$ are the open subsets covered by the outgoing and ingoing Eddington-Finkelstein coordinates, respectively:

Ep = M.open_subset('Ep', latex_name='E_+')
Em = M.open_subset('Em', latex_name='E_-')
M.declare_union(Ep, Em)

list(M.open_covers())


$\displaystyle \left[\{\mathscr{M}\}, \{E_-, E_+\}\right]$

The Schwarzschild-Droste coordinates $(t,r,\theta,\varphi)$ on $E_+$:

XSp.<t,r,th,ph> = Ep.chart(r"t r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):periodic:\varphi")
XSp


$\displaystyle \left(E_+,(t, r, {\theta}, {\varphi})\right)$

XSp.coord_range()


$\displaystyle t :\ \left( -\infty, +\infty \right) ;\quad r :\ \left( 0 , +\infty \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\varphi} :\ \left[ 0 , 2 \, \pi \right] \mbox{(periodic)}$

Notation: in this notebook, all coordinate charts have a Python name starting with X, like XSp above (S standing for Schwarzschild and p for $+$).

The Schwarzschild-Droste coordinates $(t,r,\theta,\varphi)$ on $E_-$:

XSm.<t,r,th,ph> = Em.chart(r"t r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):periodic:\varphi")
XSm


$\displaystyle \left(E_-,(t, r, {\theta}, {\varphi})\right)$

XSm.coord_range()


$\displaystyle t :\ \left( -\infty, +\infty \right) ;\quad r :\ \left( 0 , +\infty \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\varphi} :\ \left[ 0 , 2 \, \pi \right] \mbox{(periodic)}$

The black hole exterior is $\mathrm{Ext} = E_+ \cap E_-$ We therefore declare it as follows:

Ext = Ep.intersection(Em, name='Ext', latex_name=r'\mathrm{Ext}')
Ext


$\displaystyle \mathrm{Ext}$

The mass parameter of the extreme Reissner-Nordström spacetime:

m = var('m', domain='real')
assume(m>0)


The Schwarzschild-Droste coordinates $(t,r,\theta,\varphi)$ on $\mathrm{Ext}$ are defined from the restriction of the chart XSp to $r>m$:

XSE = XSp.restrict(Ext, r>m)
XSE


$\displaystyle \left(\mathrm{Ext},(t, r, {\theta}, {\varphi})\right)$

XSE.coord_range()


$\displaystyle t :\ \left( -\infty, +\infty \right) ;\quad r :\ \left( m , +\infty \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\varphi} :\ \left[ 0 , 2 \, \pi \right] \mbox{(periodic)}$

The chart XSE coincides with the restriction of the chart XSm to $r>m$:

XSE is XSm.restrict(Ext, r>m)


$\displaystyle \mathrm{True}$

list(M.subsets())


$\displaystyle \left[E_+, \mathscr{M}, \mathrm{Ext}, E_-\right]$

At this stage, 3 charts have been constructed on $\mathscr{M}$ and one of them is considered as the "default" chart (i.e. the chart that is used if omitted in the arguments of a function):

M.atlas()


$\displaystyle \left[\left(E_+,(t, r, {\theta}, {\varphi})\right), \left(E_-,(t, r, {\theta}, {\varphi})\right), \left(\mathrm{Ext},(t, r, {\theta}, {\varphi})\right)\right]$

M.default_chart()


$\displaystyle \left(E_+,(t, r, {\theta}, {\varphi})\right)$

## Metric tensor

We define the metric tensor $g$ from its components in the charts $(E_+,(t,r,\theta,\varphi))$ and $(E_-,(t,r,\theta,\varphi))$:

g = M.metric()

F = (1 - m/r)^2

gp = g.restrict(Ep)
gp[0,0] = F
gp[1,1] = -1/F
gp[2,2] = -r^2
gp[3,3] = -r^2*sin(th)^2

gm = g.restrict(Em)
gm[0,0] = F
gm[1,1] = -1/F
gm[2,2] = -r^2
gm[3,3] = -r^2*sin(th)^2

g.display()  # display in the default chart, i.e. XSp


$\displaystyle g = {\left(\frac{m}{r} - 1\right)}^{2} \mathrm{d} t\otimes \mathrm{d} t -\frac{1}{{\left(\frac{m}{r} - 1\right)}^{2}} \mathrm{d} r\otimes \mathrm{d} r -r^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -r^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

g.display(XSp) # same as above


$\displaystyle g = {\left(\frac{m}{r} - 1\right)}^{2} \mathrm{d} t\otimes \mathrm{d} t -\frac{1}{{\left(\frac{m}{r} - 1\right)}^{2}} \mathrm{d} r\otimes \mathrm{d} r -r^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -r^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

g.display(XSm)


$\displaystyle g = {\left(\frac{m}{r} - 1\right)}^{2} \mathrm{d} t\otimes \mathrm{d} t -\frac{1}{{\left(\frac{m}{r} - 1\right)}^{2}} \mathrm{d} r\otimes \mathrm{d} r -r^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -r^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

## Eddington-Finkelstein coordinates

Tortoise coordinate [Eq. (2.4)]

rstar(r) = r - m + 2*m*ln(abs(r - m)/m) - m^2/(r - m)
rstar(r)


$\displaystyle 2 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) - m + \frac{m^{2}}{m - r} + r$

Note that the additive constant is chosen so that $r_* = 0$ for $r=2m$:

rstar(2*m)


$\displaystyle 0$

The chart of the outgoing Eddington-Finkelstein coordinates $(u,r,\theta,\varphi)$ on $E_+$:

XOEF.<u,r,th,ph> = Ep.chart(r"u r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):periodic:\varphi")
XOEF


$\displaystyle \left(E_+,(u, r, {\theta}, {\varphi})\right)$

Sp_to_OEF = XSp.transition_map(XOEF, [t - rstar(r), r, th, ph])  # Eq. (2.5)
Sp_to_OEF.display()


$\displaystyle \left\{\begin{array}{lcl} u & = & -2 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) + m - \frac{m^{2}}{m - r} - r + t \\ r & = & r \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

Sp_to_OEF.inverse().display()


$\displaystyle \left\{\begin{array}{lcl} t & = & -\frac{2 \, m^{2} \log\left(m\right) - 2 \, {\left(m \log\left(m\right) + m\right)} r + r^{2} - {\left(m - r\right)} u - 2 \, {\left(m^{2} - m r\right)} \log\left({\left| -m + r \right|}\right)}{m - r} \\ r & = & r \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

gp.display(XOEF)


$\displaystyle g = \left( \frac{m^{2} - 2 \, m r + r^{2}}{r^{2}} \right) \mathrm{d} u\otimes \mathrm{d} u +\mathrm{d} u\otimes \mathrm{d} r +\mathrm{d} r\otimes \mathrm{d} u -r^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -r^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

The transition maps are propagated from $E_+$ to the subset $\mathrm{Ext}$:

Ep.coord_change(XSp, XOEF).restrict(Ext)
Ep.coord_change(XOEF, XSp).restrict(Ext)


$\displaystyle \left(\mathrm{Ext},(u, r, {\theta}, {\varphi})\right) \rightarrow \left(\mathrm{Ext},(t, r, {\theta}, {\varphi})\right)$

The chart of the ingoing Eddington-Finkelstein coordinates $(v,r,\theta,\varphi)$ on $E_-$:

XIEF.<v,r,th,ph> = Em.chart(r"v r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):periodic:\varphi")
XIEF


$\displaystyle \left(E_-,(v, r, {\theta}, {\varphi})\right)$

Sm_to_IEF = XSm.transition_map(XIEF, [t + rstar(r), r, th, ph])
Sm_to_IEF.display()


$\displaystyle \left\{\begin{array}{lcl} v & = & 2 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) - m + \frac{m^{2}}{m - r} + r + t \\ r & = & r \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

Sm_to_IEF.inverse().display()


$\displaystyle \left\{\begin{array}{lcl} t & = & \frac{2 \, m^{2} \log\left(m\right) - 2 \, {\left(m \log\left(m\right) + m\right)} r + r^{2} + {\left(m - r\right)} v - 2 \, {\left(m^{2} - m r\right)} \log\left({\left| -m + r \right|}\right)}{m - r} \\ r & = & r \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

gm.display(XIEF)


$\displaystyle g = \left( \frac{m^{2} - 2 \, m r + r^{2}}{r^{2}} \right) \mathrm{d} v\otimes \mathrm{d} v -\mathrm{d} v\otimes \mathrm{d} r -\mathrm{d} r\otimes \mathrm{d} v -r^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -r^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

The transition maps are propagated from $E_-$ to the subset $\mathrm{Ext}$:

Em.coord_change(XSm, XIEF).restrict(Ext)
Em.coord_change(XIEF, XSm).restrict(Ext)


$\displaystyle \left(\mathrm{Ext},(v, r, {\theta}, {\varphi})\right) \rightarrow \left(\mathrm{Ext},(t, r, {\theta}, {\varphi})\right)$

### Principal null directions

The tangent vector $n_+$ to the outgoing principal null geodesics is defined according to Eq. (2.7):

np = Ep.vector_field(1/F, 1, 0, 0,
name='np', latex_name=r'n_+')
np.display()


$\displaystyle n_+ = \frac{1}{{\left(\frac{m}{r} - 1\right)}^{2}} \frac{\partial}{\partial t } +\frac{\partial}{\partial r }$

$n_+$ is a null vector:

g(np, np).expr()


$\displaystyle 0$

and is a geodesic vector, i.e. it obeys $\nabla_{n_+} n_+ = 0$:

nabla = g.connection()

nabla(np).contract(np).display()


$\displaystyle 0$

Similarly, the tangent vector $n_-$ to the ingoing principal null geodesics is [cf. Eq. (2.7)]:

nm = Em.vector_field(1/F, -1, 0, 0,
name='nm', latex_name=r'n_-')
nm.display()


$\displaystyle n_- = \frac{1}{{\left(\frac{m}{r} - 1\right)}^{2}} \frac{\partial}{\partial t } -\frac{\partial}{\partial r }$

$n_-$ is a null geodesic vector:

g(nm, nm).expr()


$\displaystyle 0$

nabla(nm).contract(nm).display()


$\displaystyle 0$

## Compactified pictures of $E_+$, $E_-$ and $\mathscr{M} = E_+ \cup E_-$

We introduce the Euclidean plane $\mathbb{R}^2$ to draw some pictures:

R2.<T,X> = EuclideanSpace()
X2 = R2.cartesian_coordinates()


and we define a map from $\mathscr{M}$ to a compact region of $\mathbb{R}^2$ by means of the arctangent function:

Psi = M.diff_map(R2, {(XOEF, X2): (atan(u/(2*m)) + atan((u+2*rstar(r))/(2*m)) - pi*unit_step(m - r),
atan((u+2*rstar(r))/(2*m)) - atan(u/(2*m)) - pi*unit_step(m - r)),
(XIEF, X2): (atan((v-2*rstar(r))/(2*m)) + atan(v/(2*m)) + pi*unit_step(m - r),
atan(v/(2*m)) - atan((v-2*rstar(r))/(2*m)) - pi*unit_step(m - r))},
name='Psi', latex_name=r'\Psi')
Psi.display(XOEF, X2)


$\displaystyle \begin{array}{llcl} \Psi:& \mathscr{M} & \longrightarrow & \mathbb{E}^{2} \\ \mbox{on}\ E_+ : & \left(u, r, {\theta}, {\varphi}\right) & \longmapsto & \left(T, X\right) = \left(-\pi \mathrm{u}\left(m - r\right) + \arctan\left(\frac{4 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) - 2 \, m + \frac{2 \, m^{2}}{m - r} + 2 \, r + u}{2 \, m}\right) + \arctan\left(\frac{u}{2 \, m}\right), -\pi \mathrm{u}\left(m - r\right) + \arctan\left(\frac{4 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) - 2 \, m + \frac{2 \, m^{2}}{m - r} + 2 \, r + u}{2 \, m}\right) - \arctan\left(\frac{u}{2 \, m}\right)\right) \end{array}$

Psi.display(XIEF, X2)


$\displaystyle \begin{array}{llcl} \Psi:& \mathscr{M} & \longrightarrow & \mathbb{E}^{2} \\ \mbox{on}\ E_- : & \left(v, r, {\theta}, {\varphi}\right) & \longmapsto & \left(T, X\right) = \left(\pi \mathrm{u}\left(m - r\right) + \arctan\left(-\frac{4 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) - 2 \, m + \frac{2 \, m^{2}}{m - r} + 2 \, r - v}{2 \, m}\right) + \arctan\left(\frac{v}{2 \, m}\right), -\pi \mathrm{u}\left(m - r\right) - \arctan\left(-\frac{4 \, m \log\left(\frac{{\left| -m + r \right|}}{m}\right) - 2 \, m + \frac{2 \, m^{2}}{m - r} + 2 \, r - v}{2 \, m}\right) + \arctan\left(\frac{v}{2 \, m}\right)\right) \end{array}$

We use this map to get a compactified view of $E_+$, with the outgoing null geodesics as solid green lines and the curves $r=\mathrm{const}$ depicted in red, via the method plot of the chart XOEF = $(E_+, (u,r,\theta,\varphi))$:

graphEp = XOEF.plot(X2, mapping=Psi, ambient_coords=(X,T),
fixed_coords={th: pi/2,  ph: pi}, color={u: 'red', r: 'green'},
ranges={u: (-40, 40), r: (0, 20)}, number_values={u: 17, r: 16},
parameters={m: 1})
graphEp


Let us superpose the hypersurfaces

• $r=0$ (the curvature singularity): orange dotted line

• $r=m$ (the past event horizon $\mathscr{H}^-$): solid black line

• $r=2m$ (the photon sphere): red dashed line

def plot_const_r_Ep(r0, color='red', linestyle='-', thickness=1, plot_points=300):
return XOEF.plot(X2, mapping=Psi, ambient_coords=(X,T),
fixed_coords={r: r0, th: pi/2, ph: pi},
ranges={u: (-100, 100)}, color=color, style=linestyle,
thickness=thickness, plot_points=plot_points, parameters={m: 1})

graphEp += plot_const_r_Ep(0, color='orange', linestyle=':', thickness=5)
graphEp += plot_const_r_Ep(1.001*m, color='black', thickness=3)
graphEp += plot_const_r_Ep(2*m, color='red', linestyle='--', thickness=3)
graphEp += plot_const_r_Ep(0.8*m)
graphEp


The above figure is similar to Fig. 1a of the article tilted by $45^\circ$.

Similarly, we get a compactified view of $E_-$ via the method plot of the chart XIEF=$(E_-, (v,r,\theta,\varphi))$, with the ingoing null geodesics as dashed green lines, the curves $r=\mathrm{const}$ depicted in red and the following hypersurfaces:

• $r=0$ (the curvature singularity): orange dotted line

• $r=m$ (the future event horizon $\mathscr{H}^+$): solid black line

• $r=2m$ (the photon sphere): red dashed line

graphEn = XIEF.plot(X2, mapping=Psi, ambient_coords=(X,T), fixed_coords={th: pi/2,  ph: pi},
color={v: 'red', r: 'green'}, ranges={v: (-40, 40), r: (0, 20)},
number_values={v: 17, r: 16}, style={v: 'solid', r: 'dashed'},
parameters={m: 1})

def plot_const_r_En(r0, color='red', linestyle='-', thickness=1, plot_points=300):
return XIEF.plot(X2, mapping=Psi, ambient_coords=(X,T),
fixed_coords={r: r0, th: pi/2, ph: pi},
ranges={v: (-100, 100)}, color=color, style=linestyle,
thickness=thickness, plot_points=plot_points, parameters={m: 1})

graphEn += plot_const_r_En(0, color='orange', linestyle=':', thickness=5)
graphEn += plot_const_r_En(1.001*m, color='black', thickness=3)
graphEn += plot_const_r_En(2*m, color='red', linestyle='--', thickness=3)
graphEn += plot_const_r_En(0.8*m)
graphEn


The above figure is similar to Fig. 1b of the article tilted by $-45^\circ$.

A compactified view of $\mathscr{M}$, with the outgoing (resp. ingoing) null geodesics as solid (resp. dashed) green lines and the curves $r=\mathrm{const}$ depicted in red:

graphM = graphEp + graphEn
graphM


The above figure is similar to Fig. 2 of the article.

At this stage, 7 charts have been constructed on $\mathscr{M}$:

M.atlas()


$\displaystyle \left[\left(E_+,(t, r, {\theta}, {\varphi})\right), \left(E_-,(t, r, {\theta}, {\varphi})\right), \left(\mathrm{Ext},(t, r, {\theta}, {\varphi})\right), \left(E_+,(u, r, {\theta}, {\varphi})\right), \left(\mathrm{Ext},(u, r, {\theta}, {\varphi})\right), \left(E_-,(v, r, {\theta}, {\varphi})\right), \left(\mathrm{Ext},(v, r, {\theta}, {\varphi})\right)\right]$

## The conformally compactified exterior

Let us introduce the coordinate $R = 1/r$ on $\mathrm{Ext}$ via a new chart:

XR.<u, R, th, ph> = Ext.chart(r"u R:(0,1/m) th:(0,pi):\theta ph:(0,2*pi):periodic:\varphi")
XR


$\displaystyle \left(\mathrm{Ext},(u, R, {\theta}, {\varphi})\right)$

XR.coord_range()


$\displaystyle u :\ \left( -\infty, +\infty \right) ;\quad R :\ \left( 0 , \frac{1}{m} \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\varphi} :\ \left[ 0 , 2 \, \pi \right] \mbox{(periodic)}$

XOEF_to_XR = XOEF.restrict(Ext).transition_map(XR, (u, 1/r, th, ph))
XOEF_to_XR.display()


$\displaystyle \left\{\begin{array}{lcl} u & = & u \\ R & = & \frac{1}{r} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

XOEF_to_XR.inverse().display()


$\displaystyle \left\{\begin{array}{lcl} u & = & u \\ r & = & \frac{1}{R} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

We get the change of coordinates $(t,r,\theta,\varphi) \to (u,R,\theta,\varphi)$ by combining previously defined changes of coordinates via the operator *:

XSE_to_XR = XOEF_to_XR * Ext.coord_change(XSE, XOEF.restrict(Ext))
XSE_to_XR.display()


$\displaystyle \left\{\begin{array}{lcl} u & = & \frac{2 \, m^{2} \log\left(m\right) - 2 \, {\left(m \log\left(m\right) + m\right)} r + r^{2} + {\left(m - r\right)} t - 2 \, {\left(m^{2} - m r\right)} \log\left({\left| -m + r \right|}\right)}{m - r} \\ R & = & \frac{1}{r} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

XSE_to_XR.inverse().display()


$\displaystyle \left\{\begin{array}{lcl} t & = & -\frac{2 \, R^{2} m^{2} \log\left(R\right) - 2 \, {\left(R \log\left(R\right) + R\right)} m - {\left(R^{2} m - R\right)} u + 2 \, {\left(R^{2} m^{2} - R m\right)} \log\left(m\right) - 2 \, {\left(R^{2} m^{2} - R m\right)} \log\left({\left| R m - 1 \right|}\right) + 1}{R^{2} m - R} \\ r & = & \frac{1}{R} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.$

From now on, we use $(u,R,\theta,\varphi)$ as the default coordinates on $\mathrm{Ext}$:

Ext.set_default_chart(XR)
Ext.set_default_frame(XR.frame())


The metric $g$ in terms of the "compactified" coordinates $(u,R,\theta,\varphi)$:

gE = g.restrict(Ext)
gE.display()


$\displaystyle g = \left( R^{2} m^{2} - 2 \, R m + 1 \right) \mathrm{d} u\otimes \mathrm{d} u -\frac{1}{R^{2}} \mathrm{d} u\otimes \mathrm{d} R -\frac{1}{R^{2}} \mathrm{d} R\otimes \mathrm{d} u -\frac{1}{R^{2}} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -\frac{\sin\left({\theta}\right)^{2}}{R^{2}} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

### Conformal metric $\hat{g}$

We use $R^2$ as the conformal factor, defining $\hat{g}$ by

gh = Ext.lorentzian_metric('gh', latex_name=r'\hat{g}', signature='negative')
gh.set(R^2 * gE)
gh.display()


$\displaystyle \hat{g} = \left( R^{4} m^{2} - 2 \, R^{3} m + R^{2} \right) \mathrm{d} u\otimes \mathrm{d} u -\mathrm{d} u\otimes \mathrm{d} R -\mathrm{d} R\otimes \mathrm{d} u -\mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -\sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

gh.apply_map(factor, keep_other_components=True)
gh.display()


$\displaystyle \hat{g} = {\left(R m - 1\right)}^{2} R^{2} \mathrm{d} u\otimes \mathrm{d} u -\mathrm{d} u\otimes \mathrm{d} R -\mathrm{d} R\otimes \mathrm{d} u -\mathrm{d} {\theta}\otimes \mathrm{d} {\theta} -\sin\left({\theta}\right)^{2} \mathrm{d} {\varphi}\otimes \mathrm{d} {\varphi}$

This expression agrees with Eq. (2.9).

## Couch-Torrence inversion

We define the Couch-Torrence inversion $\Phi$ according to Eq. (3.1):

Phi = Ext.diffeomorphism(Ext, {(XSE, XSE): (t, m*r/(r - m), th, ph)},
name='Phi', latex_name=r'\Phi')
Phi.display(XSE, XSE)


$\displaystyle \begin{array}{llcl} \Phi:& \mathrm{Ext} & \longrightarrow & \mathrm{Ext} \\ & \left(t, r, {\theta}, {\varphi}\right) & \longmapsto & \left(t, -\frac{m r}{m - r}, {\theta}, {\varphi}\right) \end{array}$

The Couch-Torrence inversion takes a simple form in terms of the tortoise coordinate $r_*$:

Phi_r(r) = Phi.expr(XSE, XSE)[1]
Phi_r


$\displaystyle r \ {\mapsto}\ -\frac{m r}{m - r}$

(rstar(Phi_r(r)) + rstar(r)).simplify_log()


$\displaystyle 0$

The inverse of $\Phi$ is

Phi.inverse().display(XSE, XSE)


$\displaystyle \begin{array}{llcl} \Phi^{-1}:& \mathrm{Ext} & \longrightarrow & \mathrm{Ext} \\ & \left(t, r, {\theta}, {\varphi}\right) & \longmapsto & \left(t, -\frac{m r}{m - r}, {\theta}, {\varphi}\right) \end{array}$

$\Phi$ is an involution:

Phi.inverse() == Phi


$\displaystyle \mathrm{True}$

Phi.display(XR, XR)


$\displaystyle \begin{array}{llcl} \Phi:& \mathrm{Ext} & \longrightarrow & \mathrm{Ext} \\ & \left(u, R, {\theta}, {\varphi}\right) & \longmapsto & \left(-\frac{4 \, R^{2} m^{2} \log\left(R\right) - 4 \, {\left(R \log\left(R\right) + R\right)} m - {\left(R^{2} m - R\right)} u + 4 \, {\left(R^{2} m^{2} - R m\right)} \log\left(m\right) - 4 \, {\left(R^{2} m^{2} - R m\right)} \log\left({\left| R m - 1 \right|}\right) + 2}{R^{2} m - R}, -\frac{R m - 1}{m}, {\theta}, {\varphi}\right) \end{array}$