Kruskal-Szekeres coordinates in 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:

In [1]:
version()
Out[1]:
'SageMath version 9.5.beta7, Release Date: 2021-11-18'

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

In [2]:
%display latex

Spacetime

We declare the spacetime manifold $M$:

In [3]:
M = Manifold(4, 'M')
print(M)
4-dimensional differentiable manifold M

The ingoing Eddington-Finkelstein domain

The domain of ingoing Eddington-Finkelstein coordinates $(\tilde t, r, \theta, \phi)$:

In [4]:
M_EF = M.open_subset('M_EF', latex_name=r'M_{\rm EF}')

The Schwarzschild-Droste domain

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

In [5]:
M_SD = M_EF.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,\theta,\phi)$:

In [6]:
m = var('m')
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
Out[6]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm SD},(t, r, {\theta}, {\varphi})\right)\]
In [7]:
X_SD_I = X_SD.restrict(M_I, r>2*m)
X_SD_I 
Out[7]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm I},(t, r, {\theta}, {\varphi})\right)\]
In [8]:
X_SD_II = X_SD.restrict(M_II, r<2*m)
X_SD_II
Out[8]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm II},(t, r, {\theta}, {\varphi})\right)\]
In [9]:
M.default_chart()
Out[9]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm SD},(t, r, {\theta}, {\varphi})\right)\]

Eddington-Finkelstein coordinates

The ingoing Eddington-Finkelstein chart:

In [10]:
X_EF.<te,r,th,ph> = M_EF.chart(r'te:\tilde{t} r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):\varphi') 
X_EF
Out[10]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm EF},({\tilde{t}}, r, {\theta}, {\varphi})\right)\]
In [11]:
SD_to_EF = X_SD.transition_map(X_EF, [t+2*m*ln(abs(r/(2*m)-1)), r, th, ph])
SD_to_EF.display()
Out[11]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} {\tilde{t}} & = & 2 \, m \log\left({\left| \frac{r}{2 \, m} - 1 \right|}\right) + t \\ r & = & r \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.\]
In [12]:
SD_to_EF.inverse().display()
Out[12]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} t & = & 2 \, m \log\left(2\right) + 2 \, m \log\left(m\right) - 2 \, m \log\left({\left| -2 \, m + r \right|}\right) + {\tilde{t}} \\ r & = & r \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.\]
In [13]:
X_EF_I = X_EF.restrict(M_I, r>2*m)
X_EF_I 
Out[13]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm I},({\tilde{t}}, r, {\theta}, {\varphi})\right)\]
In [14]:
X_EF_II = X_EF.restrict(M_II, r<2*m)
X_EF_II 
Out[14]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm II},({\tilde{t}}, r, {\theta}, {\varphi})\right)\]
In [15]:
M.atlas()
Out[15]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\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), \left(M_{\rm EF},({\tilde{t}}, r, {\theta}, {\varphi})\right), \left(M_{\rm SD},({\tilde{t}}, r, {\theta}, {\varphi})\right), \left(M_{\rm I},({\tilde{t}}, r, {\theta}, {\varphi})\right), \left(M_{\rm II},({\tilde{t}}, r, {\theta}, {\varphi})\right)\right]\]

Kruskal-Szekeres coordinates

In [16]:
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
Out[16]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M,(T, X, {\theta}, {\varphi})\right)\]
In [17]:
X_KS_I = X_KS.restrict(M_I, [X>0, T<X, T>-X])
X_KS_I 
Out[17]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm I},(T, X, {\theta}, {\varphi})\right)\]
In [18]:
X_KS_II = X_KS.restrict(M_II, [T>0, T>abs(X)])
X_KS_II
Out[18]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm II},(T, X, {\theta}, {\varphi})\right)\]
In [19]:
X_KS_EF = X_KS.restrict(M_EF, X+T>0)
X_KS_EF
Out[19]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm EF},(T, X, {\theta}, {\varphi})\right)\]
In [20]:
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()
Out[20]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\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.\]
In [21]:
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()
Out[21]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\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.\]
In [22]:
EF_to_KS = X_EF.transition_map(X_KS_EF, [exp(r/(4*m))*(cosh(te/(4*m))-r/(4*m)*exp(-te/(4*m))), 
                                         exp(r/(4*m))*(sinh(te/(4*m))+r/(4*m)*exp(-te/(4*m))), 
                                         th, ph])
EF_to_KS.display()
Out[22]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left\{\begin{array}{lcl} T & = & -\frac{1}{4} \, {\left(\frac{r e^{\left(-\frac{{\tilde{t}}}{4 \, m}\right)}}{m} - 4 \, \cosh\left(\frac{{\tilde{t}}}{4 \, m}\right)\right)} e^{\left(\frac{r}{4 \, m}\right)} \\ X & = & \frac{1}{4} \, {\left(\frac{r e^{\left(-\frac{{\tilde{t}}}{4 \, m}\right)}}{m} + 4 \, \sinh\left(\frac{{\tilde{t}}}{4 \, m}\right)\right)} e^{\left(\frac{r}{4 \, m}\right)} \\ {\theta} & = & {\theta} \\ {\varphi} & = & {\varphi} \end{array}\right.\]

Plot of the IEF grid in terms of KS coordinates:

In [23]:
graph = X_EF.plot(X_KS, ambient_coords=(X,T), fixed_coords={th:pi/2,ph:pi}, 
                  ranges={te:(-16,6), r:(1e-6,5)}, steps={te:1, r:0.5}, 
                  style={te:'--', r:'-'}, parameters={m:1})
graph1 = copy(graph)
In [24]:
graph += text(r'$\tilde{t}=0$', (2.65, 0.25), fontsize=16, color='red', rotation=-24)
graph += text(r'$\tilde{t}=2m$', (2.8, 1.6), fontsize=16, color='red')
graph += text(r'$\tilde{t}=-2m$', (2.68, -0.9), fontsize=16, color='red', rotation=-35)
In [25]:
plot_options = {'xmin': -3, 'xmax': 3, 'ymin': -3, 'ymax': 3, 'figsize': 8}
show(graph, **plot_options)

Adding the Schwarzschild horizon to the plot:

In [26]:
hor = line([(0,0), (4,4)], color='black', thickness=2) \
      + text(r'$\mathscr{H}$', (3, 2.7), fontsize=20, color='black')
graph += hor

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

In [27]:
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 += sing
graph.save("max_IEF_KS.pdf", **plot_options)
show(graph, **plot_options)

Zoom showing the regular sclicing of the hypersurface $r=0$ by the $\tilde{t}=\mathrm{const}$ hypersurfaces:

In [28]:
graph1 += line([(0,0), (4,4)], color='black', thickness=2)
graph1 += 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})
show(graph1, xmin=0, xmax=3, ymin=0.8, ymax=2.5)

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

In [29]:
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})
In [30]:
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
graph2.save("max_SD_I_KS.pdf", **plot_options)
show(graph2, **plot_options)
In [31]:
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='blue', 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='blue') 
graph += hor + sing + region_labels
graph.save("max_SD_KS.pdf", **plot_options)
show(graph, **plot_options)

Radial null geodesics

The outgoing family:

In [32]:
var('u')
outgeod = M.curve({X_EF: [r + 4*m*ln(abs(r/(2*m)-1)) + u, r, pi/2, pi]}, (r, 0, +oo))
outgeod.display()
Out[32]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\begin{array}{llcl} & \left(0, +\infty\right) & \longrightarrow & M \\ & r & \longmapsto & \left({\tilde{t}}, r, {\theta}, {\varphi}\right) = \left(4 \, m \log\left({\left| \frac{r}{2 \, m} - 1 \right|}\right) + r + u, r, \frac{1}{2} \, \pi, \pi\right) \\ & r & \longmapsto & \left(T, X, {\theta}, {\varphi}\right) = \left(\frac{{\left(2 \, {\left| -2 \, m + r \right|} \cosh\left(-\frac{4 \, m \log\left(2\right) + 4 \, m \log\left(m\right) - 4 \, m \log\left({\left| -2 \, m + r \right|}\right) - r - u}{4 \, m}\right) e^{\left(\frac{r}{4 \, m} + \frac{u}{4 \, m}\right)} - r\right)} e^{\left(-\frac{u}{4 \, m}\right)}}{2 \, {\left| -2 \, m + r \right|}}, \frac{{\left(2 \, {\left| -2 \, m + r \right|} e^{\left(\frac{r}{4 \, m} + \frac{u}{4 \, m}\right)} \sinh\left(-\frac{4 \, m \log\left(2\right) + 4 \, m \log\left(m\right) - 4 \, m \log\left({\left| -2 \, m + r \right|}\right) - r - u}{4 \, m}\right) + r\right)} e^{\left(-\frac{u}{4 \, m}\right)}}{2 \, {\left| -2 \, m + r \right|}}, \frac{1}{2} \, \pi, \pi\right) \end{array}\]

The ingoing family:

In [33]:
var('v')
ingeod = M.curve({X_EF: [-r + v, r, pi/2, pi]}, (r, 0, +oo))
ingeod.display()
Out[33]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\begin{array}{llcl} & \left(0, +\infty\right) & \longrightarrow & M \\ & r & \longmapsto & \left({\tilde{t}}, r, {\theta}, {\varphi}\right) = \left(-r + v, r, \frac{1}{2} \, \pi, \pi\right) \\ & r & \longmapsto & \left(T, X, {\theta}, {\varphi}\right) = \left(\frac{{\left(4 \, m \cosh\left(-\frac{r - v}{4 \, m}\right) e^{\left(\frac{r}{4 \, m} + \frac{v}{4 \, m}\right)} - r e^{\left(\frac{r}{2 \, m}\right)}\right)} e^{\left(-\frac{v}{4 \, m}\right)}}{4 \, m}, \frac{{\left(4 \, m e^{\left(\frac{r}{4 \, m} + \frac{v}{4 \, m}\right)} \sinh\left(-\frac{r - v}{4 \, m}\right) + r e^{\left(\frac{r}{2 \, m}\right)}\right)} e^{\left(-\frac{v}{4 \, m}\right)}}{4 \, m}, \frac{1}{2} \, \pi, \pi\right) \end{array}\]
In [34]:
graph = Graphics()
for u0 in range(-10, 10, 2):
    graph += outgeod.plot(chart=X_KS, ambient_coords=(X,T), prange=(0.01, 1.99), 
                          parameters={m: 1, u: u0}, color='green', style='-')
    graph += outgeod.plot(chart=X_KS, ambient_coords=(X,T), prange=(2.01, 5), 
                          parameters={m: 1, u: u0}, color='green', style='-')
    graph += ingeod.plot(chart=X_KS, ambient_coords=(X,T), prange=(0.01, 5), 
                         parameters={m: 1, v: u0}, color='green', style='--')
graph += hor
graph += sing
graph.save("max_rad_null_geod_KS.pdf", **plot_options)
show(graph, **plot_options)

Extension to $M_{\rm III}$ and $M_{\rm IV}$

The second Schwarzschild-Droste domain:

In [35]:
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 $M_{\rm III}$ and $M_{\rm IV}$:

In [36]:
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)
In [37]:
X_KS_III = X_KS.restrict(M_III)
X_KS_III
Out[37]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm III},(T, X, {\theta}, {\varphi})\right)\]
In [38]:
X_KS_IV = X_KS.restrict(M_IV)
X_KS_IV
Out[38]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm IV},(T, X, {\theta}, {\varphi})\right)\]

Schwarzschild-Droste coordinates in $M_{\rm III}$ and $M_{\rm IV}$:

In [39]:
X_SD_III = X_SD2.restrict(M_III, r>2*m)
X_SD_III
Out[39]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm III},(t, r, {\theta}, {\varphi})\right)\]
In [40]:
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()
Out[40]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\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.\]
In [41]:
X_SD_IV = X_SD2.restrict(M_IV, r<2*m)
X_SD_IV
Out[41]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\left(M_{\rm IV},(t, r, {\theta}, {\varphi})\right)\]
In [42]:
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()
Out[42]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\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 the maximal extension

In [43]:
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})
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})
graph += X_SD_III.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='chocolate', parameters={m:1})
graph += X_SD_IV.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='gold', parameters={m:1})
In [44]:
bifhor = line([(-4,-4), (4,4)], color='black', thickness=3) + \
         line([(-4,4), (4,-4)], color='black', thickness=3) + \
         text(r'$\mathscr{H}$', (3, 2.7), fontsize=20, color='black')
sing2 = X_SD_IV.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')
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') + \
                text(r'$\mathscr{M}_{\rm III}$', (-2.4, 0.4), fontsize=20, color='chocolate') + \
                text(r'$\mathscr{M}_{\rm IV}$', (0, -0.5), fontsize=20, color='gold')
graph += bifhor + sing + sing2 + region_labels
graph.save("max_kruskal_diag.pdf", **plot_options)
show(graph, **plot_options)

Plot of the Killing vector field $\xi$

In [45]:
xi = M.vector_field(name='xi', latex_name=r'\xi')
xi[X_KS.frame(), 0, X_KS] = X/(4*m)
xi[X_KS.frame(), 1, X_KS] = T/(4*m)
xi.display(X_KS.frame(), X_KS)
Out[45]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\xi = \frac{X}{4 \, m} \frac{\partial}{\partial T } + \frac{T}{4 \, m} \frac{\partial}{\partial X }\]
In [46]:
xi.display(X_KS_I.frame(), X_SD_I)
Out[46]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\xi = \left( \frac{\sqrt{2} \sqrt{-2 \, m + r} \cosh\left(\frac{t}{4 \, m}\right) e^{\left(\frac{r}{4 \, m}\right)}}{8 \, m^{\frac{3}{2}}} \right) \frac{\partial}{\partial T } + \left( \frac{\sqrt{2} \sqrt{-2 \, m + r} e^{\left(\frac{r}{4 \, m}\right)} \sinh\left(\frac{t}{4 \, m}\right)}{8 \, m^{\frac{3}{2}}} \right) \frac{\partial}{\partial X }\]
In [47]:
xi.display(X_SD_I.frame())
Out[47]:
\[\newcommand{\Bold}[1]{\mathbf{#1}}\xi = \frac{\partial}{\partial t }\]
In [48]:
graph_xi = xi.plot(X_KS, chart_domain=X_KS, ambient_coords=(X,T), 
                   fixed_coords={th:pi/2,ph:pi}, max_range=4, 
                   number_values=19, color='red', parameters={m: 1})
graph = graph_xi + bifhor + sing + sing2 
graph.save("max_xi_extend.pdf", **plot_options)
show(graph, **plot_options)