Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: BHLectures
Views: 49
Kernel: SageMath 10.0.rc1

Carter-Penrose diagram of Schwarzschild spacetime

This Jupyter/SageMath notebook is relative to the lectures Geometry and physics of black holes.

The involved computations make use of tools developed through the SageManifolds project.

NB: a version of SageMath at least equal to 9.4 is required to run this notebook:

version()
'SageMath version 10.0.rc1, Release Date: 2023-04-28'

First we set up the notebook to display mathematical objects using LaTeX formatting:

%display latex

Spacetime

We declare the spacetime manifold MM:

M = Manifold(4, 'M') print(M)
4-dimensional differentiable manifold M

The Schwarzschild-Droste domain

The domain of Schwarzschild-Droste coordinates is MSD=MIMIIM_{\rm SD} = M_{\rm I} \cup M_{\rm II}:

M_SD = M.open_subset('M_SD', latex_name=r'M_{\rm SD}') M_I = M_SD.open_subset('M_I', latex_name=r'M_{\rm I}') M_II = M_SD.open_subset('M_II', latex_name=r'M_{\rm II}') M_SD.declare_union(M_I, M_II)

The Schwarzschild-Droste coordinates (t,r,θ,ϕ)(t,r,\theta,\phi):

m = var('m', domain='real') assume(m>=0) X_SD.<t,r,th,ph> = M_SD.chart(r't r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):\varphi', coord_restrictions=lambda t,r,th,ph: r!=2*m) X_SD

(MSD,(t,r,θ,φ))\displaystyle \left(M_{\rm SD},(t, r, {\theta}, {\varphi})\right)

X_SD_I = X_SD.restrict(M_I, r>2*m) X_SD_I

(MI,(t,r,θ,φ))\displaystyle \left(M_{\rm I},(t, r, {\theta}, {\varphi})\right)

X_SD_II = X_SD.restrict(M_II, r<2*m) X_SD_II

(MII,(t,r,θ,φ))\displaystyle \left(M_{\rm II},(t, r, {\theta}, {\varphi})\right)

M.default_chart()

(MSD,(t,r,θ,φ))\displaystyle \left(M_{\rm SD},(t, r, {\theta}, {\varphi})\right)

M.atlas()

[(MSD,(t,r,θ,φ)),(MI,(t,r,θ,φ)),(MII,(t,r,θ,φ))]\displaystyle \left[\left(M_{\rm SD},(t, r, {\theta}, {\varphi})\right), \left(M_{\rm I},(t, r, {\theta}, {\varphi})\right), \left(M_{\rm II},(t, r, {\theta}, {\varphi})\right)\right]

Kruskal-Szekeres coordinates

X_KS.<T,X,th,ph> = M.chart(r'T X th:(0,pi):\theta ph:(0,2*pi):\varphi', coord_restrictions=lambda T,X,th,ph: T^2 < 1 + X^2) X_KS

(M,(T,X,θ,φ))\displaystyle \left(M,(T, X, {\theta}, {\varphi})\right)

X_KS_I = X_KS.restrict(M_I, [X>0, T<X, T>-X]) X_KS_I

(MI,(T,X,θ,φ))\displaystyle \left(M_{\rm I},(T, X, {\theta}, {\varphi})\right)

X_KS_II = X_KS.restrict(M_II, [T>0, T>abs(X)]) X_KS_II

(MII,(T,X,θ,φ))\displaystyle \left(M_{\rm II},(T, X, {\theta}, {\varphi})\right)

SD_I_to_KS = X_SD_I.transition_map(X_KS_I, [sqrt(r/(2*m)-1)*exp(r/(4*m))*sinh(t/(4*m)), sqrt(r/(2*m)-1)*exp(r/(4*m))*cosh(t/(4*m)), th, ph]) SD_I_to_KS.display()

{T=r2m1e(r4m)sinh(t4m)X=r2m1cosh(t4m)e(r4m)θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} T & = & \sqrt{\frac{r}{2 \, m} - 1} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right) \\ X & = & \sqrt{\frac{r}{2 \, m} - 1} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

SD_II_to_KS = X_SD_II.transition_map(X_KS_II, [sqrt(1-r/(2*m))*exp(r/(4*m))*cosh(t/(4*m)), sqrt(1-r/(2*m))*exp(r/(4*m))*sinh(t/(4*m)), th, ph]) SD_II_to_KS.display()

{T=r2m+1cosh(t4m)e(r4m)X=r2m+1e(r4m)sinh(t4m)θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} T & = & \sqrt{-\frac{r}{2 \, m} + 1} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} \\ X & = & \sqrt{-\frac{r}{2 \, m} + 1} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

Plot of Schwarzschild-Droste grid on MIM_{\rm I} in terms of KS coordinates

graph = X_SD_I.plot(X_KS, ambient_coords=(X,T), fixed_coords={th:pi/2,ph:pi}, ranges={t:(-10,10), r:(2.001,5)}, steps={t:1, r:0.5}, style={t:'--', r:'-'}, color='blue', parameters={m:1})

Adding the Schwarzschild horizon to the plot:

hor = line([(0,0), (4,4)], color='black', thickness=2) \ + text(r'$\mathscr{H}$', (3, 2.7), fontsize=20, color='black')
hor2 = line([(0,0), (4,4)], color='black', thickness=2) \ + text(r'$\mathscr{H}$', (2.95, 3.2), fontsize=20, color='black') region_labels = text(r'$\mathscr{M}_{\rm I}$', (2.4, 0.4), fontsize=20, color='blue') graph2 = graph + hor2 + region_labels show(graph2, xmin=-3, xmax=3, ymin=-3, ymax=3)
Image in a Jupyter notebook

Adding the curvature singularity r=0r=0 to the plot:

sing = X_SD_II.plot(X_KS, fixed_coords={r:0, th:pi/2, ph:pi}, ambient_coords=(X,T), color='brown', thickness=4, style='--', parameters={m:1}) \ + text(r'$r=0$', (2.5, 3), rotation=45, fontsize=16, color='brown')
graph += X_SD_II.plot(X_KS, ambient_coords=(X,T), fixed_coords={th:pi/2,ph:pi}, ranges={t:(-10,10), r:(0.001,1.999)}, steps={t:1, r:0.5}, style={t:'--', r:'-'}, color='steelblue', parameters={m:1}) region_labels = text(r'$\mathscr{M}_{\rm I}$', (2.4, 0.4), fontsize=20, color='blue') + \ text(r'$\mathscr{M}_{\rm II}$', (0, 0.5), fontsize=20, color='steelblue') graph += hor + sing + region_labels show(graph, xmin=-3, xmax=3, ymin=-3, ymax=3, figsize=8)
Image in a Jupyter notebook

Extension to MIIIM_{\rm III} and MIVM_{\rm IV}

The second Schwarzschild-Droste domain:

M_SD2 = M.open_subset('M_SD2', latex_name=r"{M'}_{\rm SD}", coord_def={X_KS: T<-X}) X_SD2.<t,r,th,ph> = M_SD2.chart(r't r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):\varphi')

Definition of regions MIIIM_{\rm III} and MIVM_{\rm IV}:

M_III = M_SD2.open_subset('M_III', latex_name=r'M_{\rm III}', coord_def={X_KS.restrict(M_SD2): [X<0, X<T]}) M_IV = M_SD2.open_subset('M_IV', latex_name=r'M_{\rm IV}', coord_def={X_KS.restrict(M_SD2): [T<0, T<X]}) M_SD2.declare_union(M_III, M_IV)
X_KS_III = X_KS.restrict(M_III) X_KS_III

(MIII,(T,X,θ,φ))\displaystyle \left(M_{\rm III},(T, X, {\theta}, {\varphi})\right)

X_KS_IV = X_KS.restrict(M_IV) X_KS_IV

(MIV,(T,X,θ,φ))\displaystyle \left(M_{\rm IV},(T, X, {\theta}, {\varphi})\right)

Schwarzschild-Droste coordinates in MIIIM_{\rm III} and MIVM_{\rm IV}:

X_SD_III = X_SD2.restrict(M_III, r>2*m) X_SD_III

(MIII,(t,r,θ,φ))\displaystyle \left(M_{\rm III},(t, r, {\theta}, {\varphi})\right)

SD_III_to_KS = X_SD_III.transition_map(X_KS_III, [-sqrt(r/(2*m)-1)*exp(r/(4*m))*sinh(t/(4*m)), - sqrt(r/(2*m)-1)*exp(r/(4*m))*cosh(t/(4*m)), th, ph]) SD_III_to_KS.display()

{T=r2m1e(r4m)sinh(t4m)X=r2m1cosh(t4m)e(r4m)θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} T & = & -\sqrt{\frac{r}{2 \, m} - 1} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right) \\ X & = & -\sqrt{\frac{r}{2 \, m} - 1} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

X_SD_IV = X_SD2.restrict(M_IV, r<2*m) X_SD_IV

(MIV,(t,r,θ,φ))\displaystyle \left(M_{\rm IV},(t, r, {\theta}, {\varphi})\right)

SD_IV_to_KS = X_SD_IV.transition_map(X_KS_IV, [-sqrt(1-r/(2*m))*exp(r/(4*m))*cosh(t/(4*m)), -sqrt(1-r/(2*m))*exp(r/(4*m))*sinh(t/(4*m)), th, ph]) SD_IV_to_KS.display()

{T=r2m+1cosh(t4m)e(r4m)X=r2m+1e(r4m)sinh(t4m)θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} T & = & -\sqrt{-\frac{r}{2 \, m} + 1} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} \\ X & = & -\sqrt{-\frac{r}{2 \, m} + 1} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

Penrose-Frolov-Novikov coordinates

The coordinates (T~,X~,θ,φ)(\tilde T, \tilde X, \theta, \varphi) associated with the conformal compactification of the Schwarzschild spacetime are

X_C.<T1,X1,th,ph> = M.chart(r'T1:(-pi,pi):\tilde{T} X1:(-pi,pi):\tilde{X} th:(0,pi):\theta ph:(0,2*pi):\varphi', coord_restrictions=lambda T1,X1,th,ph: [abs(T1-X1)<pi, abs(T1+X1)<pi, sinh(tan((T1-X1)/2))*sinh(tan((T1+X1)/2))<1]) X_C

(M,(T~,X~,θ,φ))\displaystyle \left(M,({\tilde{T}}, {\tilde{X}}, {\theta}, {\varphi})\right)

The chart of compactified coordinates plotted in terms of itself:

X_C.plot(X_C, ambient_coords=(X1,T1), number_values=100)
Image in a Jupyter notebook

The transition map from Kruskal-Szekeres coordinates to the compactified ones:

KS_to_C = X_KS.transition_map(X_C, [atan(asinh(T+X))+atan(asinh(T-X)), atan(asinh(T+X))-atan(asinh(T-X)), th, ph]) print(KS_to_C) KS_to_C.display()
Change of coordinates from Chart (M, (T, X, th, ph)) to Chart (M, (T1, X1, th, ph))

{T~=arctan(arsinh(T+X))+arctan(arsinh(TX))X~=arctan(arsinh(T+X))arctan(arsinh(TX))θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} {\tilde{T}} & = & \arctan\left(\operatorname{arsinh}\left(T + X\right)\right) + \arctan\left(\operatorname{arsinh}\left(T - X\right)\right) \\ {\tilde{X}} & = & \arctan\left(\operatorname{arsinh}\left(T + X\right)\right) - \arctan\left(\operatorname{arsinh}\left(T - X\right)\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

Transition map between the Schwarzschild-Droste chart and the chart of compactified coordinates

The transition map is obtained by composition of previously defined ones:

SD_I_to_C = KS_to_C.restrict(M_I) * SD_I_to_KS print(SD_I_to_C) SD_I_to_C.display()
Change of coordinates from Chart (M_I, (t, r, th, ph)) to Chart (M_I, (T1, X1, th, ph))

{T~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2m+r2m))+arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2m+r2m))X~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2m+r2m))arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2m+r2m))θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} {\tilde{T}} & = & \arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) + \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) \\ {\tilde{X}} & = & \arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) - \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

SD_II_to_C = KS_to_C.restrict(M_II) * SD_II_to_KS print(SD_II_to_C) SD_II_to_C.display()
Change of coordinates from Chart (M_II, (t, r, th, ph)) to Chart (M_II, (T1, X1, th, ph))

{T~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2mr2m))arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2mr2m))X~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2mr2m))+arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2mr2m))θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} {\tilde{T}} & = & \arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) - \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) \\ {\tilde{X}} & = & \arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) + \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

SD_III_to_C = KS_to_C.restrict(M_III) * SD_III_to_KS print(SD_III_to_C) SD_III_to_C.display()
Change of coordinates from Chart (M_III, (t, r, th, ph)) to Chart (M_III, (T1, X1, th, ph))

{T~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2m+r2m))arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2m+r2m))X~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2m+r2m))+arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2m+r2m))θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} {\tilde{T}} & = & -\arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) - \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) \\ {\tilde{X}} & = & -\arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) + \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{-2 \, m + r}}{2 \, \sqrt{m}}\right)\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

SD_IV_to_C = KS_to_C.restrict(M_IV) * SD_IV_to_KS print(SD_IV_to_C) SD_IV_to_C.display()
Change of coordinates from Chart (M_IV, (t, r, th, ph)) to Chart (M_IV, (T1, X1, th, ph))

{T~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2mr2m))+arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2mr2m))X~=arctan(arsinh((2cosh(t4m)e(r4m)+2e(r4m)sinh(t4m))2mr2m))arctan(arsinh((2cosh(t4m)e(r4m)2e(r4m)sinh(t4m))2mr2m))θ=θφ=φ\displaystyle \left\{\begin{array}{lcl} {\tilde{T}} & = & -\arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) + \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) \\ {\tilde{X}} & = & -\arctan\left(\operatorname{arsinh}\left(\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} + \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) - \arctan\left(\operatorname{arsinh}\left(-\frac{{\left(\sqrt{2} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)} - \sqrt{2} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)\right)} \sqrt{2 \, m - r}}{2 \, \sqrt{m}}\right)\right) \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.

Carter-Penrose diagram

The diagram is obtained by plotting the curves of constant Schwarzschild-Droste coordinates with respect to the compactified chart.

r_tab = [2.01*m, 2.1*m, 2.5*m, 4*m, 8*m, 12*m, 20*m, 100*m] curves_t = dict() for r0 in r_tab: curves_t[r0] = M.curve({X_SD_I: [t, r0, pi/2, pi]}, (t,-oo,+oo)) curves_t[r0].coord_expr(X_C.restrict(M_I))
graph_t = Graphics() for r0 in r_tab: graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-150, -10), parameters={m:1}, plot_points=100, color='blue', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-10, 10), parameters={m:1}, plot_points=100, color='blue', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(10, 150), parameters={m:1}, plot_points=100, color='blue', style='--')
t_tab = [-50*m, -20*m, -10*m, -5*m, -2*m, 0, 2*m, 5*m, 10*m, 20*m, 50*m] curves_r = dict() for t0 in t_tab: curves_r[t0] = M.curve({X_SD_I: [t0, r, pi/2, pi]}, (r, 2*m, +oo)) curves_r[t0].coord_expr(X_C.restrict(M_I))
graph_r = Graphics() for t0 in t_tab: graph_r += curves_r[t0].plot(X_C, ambient_coords=(X1,T1), prange=(2.0001, 4), parameters={m:1}, plot_points=100, color='blue') graph_r += curves_r[t0].plot(X_C, ambient_coords=(X1,T1), prange=(4, 1000), parameters={m:1}, plot_points=100, color='blue')
bifhor = line([(-pi/2,-pi/2), (pi/2,pi/2)], color='black', thickness=3) \ + line([(-pi/2,pi/2), (pi/2,-pi/2)], color='black', thickness=3) \ + text(r'$\mathscr{H}$', (1, 1.2), fontsize=20, color='black')
sing1 = X_SD_II.plot(X_C, fixed_coords={r:0, th:pi/2, ph:pi}, ambient_coords=(X1,T1), max_range=200, number_values=30, color='brown', thickness=3, style='--', parameters={m:1}) \ + text(r'$r=0$', (0.4, 1.55), fontsize=16, color='brown') sing2 = X_SD_IV.plot(X_C, fixed_coords={r:0, th:pi/2, ph:pi}, ambient_coords=(X1,T1), max_range=200, number_values=30, color='brown', thickness=3, style='--', parameters={m:1}) \ + text(r"$r'=0$", (0.4, -1.55), fontsize=16, color='brown') sing = sing1 + sing2
scri = line([(pi,0), (pi/2,pi/2)], color='green', thickness=3) \ + text(r"$\mathscr{I}^+$", (2.6, 0.9), fontsize=20, color='green') \ + line([(pi/2, -pi/2), (pi,0)], color='green', thickness=3) \ + text(r"$\mathscr{I}^-$", (2.55, -0.9), fontsize=20, color='green') \ + line([(-pi,0), (-pi/2,pi/2)], color='green', thickness=3) \ + text(r"${\mathscr{I}'}^+$", (-2.55, 0.9), fontsize=20, color='green') \ + line([(-pi/2, -pi/2), (-pi,0)], color='green', thickness=3) \ + text(r"${\mathscr{I}'}^-$", (-2.6, -0.9), fontsize=20, color='green')
region_labels = text(r'$\mathscr{M}_{\rm I}$', (2, 0.4), fontsize=20, color='blue', background_color='white') \ + text(r'$\mathscr{M}_{\rm II}$', (0.4, 1), fontsize=20, color='steelblue', background_color='white') \ + text(r'$\mathscr{M}_{\rm III}$', (-2, 0.4), fontsize=20, color='chocolate', background_color='white') \ + text(r'$\mathscr{M}_{\rm IV}$', (0.4, -1), fontsize=20, color='gold', background_color='white')
graph = graph_t + graph_r show(graph + bifhor + sing + scri, aspect_ratio=1, figsize=8)
Image in a Jupyter notebook
r_tab = [0.1*m, 0.5*m, m, 1.25*m, 1.5*m, 1.7*m, 1.9*m, 1.98*m] curves_t = dict() for r0 in r_tab: curves_t[r0] = M.curve({X_SD_II: [t, r0, pi/2, pi]}, (t,-oo,+oo)) curves_t[r0].coord_expr(X_C.restrict(M_II))
graph_t = Graphics() for r0 in r_tab: graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-150, -2), parameters={m:1}, plot_points=50, color='steelblue', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-2, 2), parameters={m:1}, plot_points=50, color='steelblue', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(2, 150), parameters={m:1}, plot_points=50, color='steelblue', style='--')
t_tab = [-20*m, -10*m, -5*m, -2*m, 0, 2*m, 5*m, 10*m, 20*m] curves_r = dict() for t0 in t_tab: curves_r[t0] = M.curve({X_SD_II: [t0, r, pi/2, pi]}, (r, 0, 2*m)) curves_r[t0].coord_expr(X_C.restrict(M_II))
graph_r = Graphics() for t0 in t_tab: graph_r += curves_r[t0].plot(X_C, ambient_coords=(X1,T1), prange=(0.001, 1.9999), parameters={m:1}, plot_points=100, color='steelblue')
graph += graph_t + graph_r show(graph + bifhor + sing + scri + region_labels, aspect_ratio=1, figsize=8)
Image in a Jupyter notebook
r_tab = [2.01*m, 2.1*m, 2.5*m, 4*m, 8*m, 12*m, 20*m, 100*m] curves_t = dict() for r0 in r_tab: curves_t[r0] = M.curve({X_SD_III: [t, r0, pi/2, pi]}, (t,-oo,+oo)) curves_t[r0].coord_expr(X_C.restrict(M_III))
graph_t = Graphics() for r0 in r_tab: graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-150, -10), parameters={m:1}, plot_points=100, color='chocolate', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-10, 10), parameters={m:1}, plot_points=100, color='chocolate', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(10, 150), parameters={m:1}, plot_points=100, color='chocolate', style='--')
t_tab = [-50*m, -20*m, -10*m, -5*m, -2*m, 0, 2*m, 5*m, 10*m, 20*m, 50*m] curves_r = dict() for t0 in t_tab: curves_r[t0] = M.curve({X_SD_III: [t0, r, pi/2, pi]}, (r, 2*m, +oo)) curves_r[t0].coord_expr(X_C.restrict(M_III))
graph_r = Graphics() for t0 in t_tab: graph_r += curves_r[t0].plot(X_C, ambient_coords=(X1,T1), prange=(2.0001, 4), parameters={m:1}, plot_points=100, color='chocolate') graph_r += curves_r[t0].plot(X_C, ambient_coords=(X1,T1), prange=(4, 1000), parameters={m:1}, plot_points=100, color='chocolate')
graph += graph_t + graph_r show(graph + bifhor + sing + scri + region_labels, aspect_ratio=1, figsize=8)
Image in a Jupyter notebook
r_tab = [0.1*m, 0.5*m, m, 1.25*m, 1.5*m, 1.7*m, 1.9*m, 1.98*m] curves_t = dict() for r0 in r_tab: curves_t[r0] = M.curve({X_SD_IV: [t, r0, pi/2, pi]}, (t,-oo,+oo)) curves_t[r0].coord_expr(X_C.restrict(M_IV))
graph_t = Graphics() for r0 in r_tab: graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-150, -2), parameters={m:1}, plot_points=50, color='gold', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(-2, 2), parameters={m:1}, plot_points=50, color='gold', style='--') graph_t += curves_t[r0].plot(X_C, ambient_coords=(X1,T1), prange=(2, 150), parameters={m:1}, plot_points=50, color='gold', style='--')
t_tab = [-20*m, -10*m, -5*m, -2*m, 0, 2*m, 5*m, 10*m, 20*m] curves_r = dict() for t0 in t_tab: curves_r[t0] = M.curve({X_SD_IV: [t0, r, pi/2, pi]}, (r, 0, 2*m)) curves_r[t0].coord_expr(X_C.restrict(M_IV))
graph_r = Graphics() for t0 in t_tab: graph_r += curves_r[t0].plot(X_C, ambient_coords=(X1,T1), prange=(0.001, 1.9999), parameters={m:1}, plot_points=100, color='gold')
graph += graph_t + graph_r graph += bifhor + sing + scri + region_labels graph.save('max_carter-penrose-FN.pdf', aspect_ratio=1, figsize=8) show(graph, aspect_ratio=1, figsize=8)
Image in a Jupyter notebook