CoCalc Public FilesBHLectures / sage / conformal_Minkowski.ipynbOpen with one click!
Author: Eric Gourgoulhon
Views : 55
Compute Environment: Ubuntu 18.04 (Deprecated)

Conformal completion of Minkowski spacetime

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

These computations are based on SageManifolds (v0.9)

The worksheet file (ipynb format) can be downloaded from here.

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

In [1]:
%display latex

Spherical coordinates on Minkowski spacetime

We declare the spacetime manifold MM:

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

and the spherical coordinates (t,r,θ,ϕ)(t,r,\theta,\phi) as a chart on MM:

In [3]:
XS.<t,r,th,ph> = M.chart(r't r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):\phi') XS
(M,(t,r,θ,ϕ))\left(M,(t, r, {\theta}, {\phi})\right)
In [4]:
XS.coord_range()
t: (,+);r: (0,+);θ: (0,π);ϕ: (0,2π)t :\ \left( -\infty, +\infty \right) ;\quad r :\ \left( 0 , +\infty \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\phi} :\ \left( 0 , 2 \, \pi \right)

In term of these coordinates, the Minkowski metric is

In [5]:
g = M.lorentzian_metric('g') g[0,0] = -1 g[1,1] = 1 g[2,2] = r^2 g[3,3] = r^2*sin(th)^2 g.display()
g=dtdt+drdr+r2dθdθ+r2sin(θ)2dϕdϕg = -\mathrm{d} t\otimes \mathrm{d} t+\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} {\phi}\otimes \mathrm{d} {\phi}

Null coordinates

Let us introduce the null coordinates u=tru=t-r (retarded time) and v=t+rv=t+r (advanced time):

In [6]:
XN.<u,v,th,ph> = M.chart(r'u v th:(0,pi):\theta ph:(0,2*pi):\phi') XN.add_restrictions(v-u>0) XN
(M,(u,v,θ,ϕ))\left(M,(u, v, {\theta}, {\phi})\right)
In [7]:
XN.coord_range()
u: (,+);v: (,+);θ: (0,π);ϕ: (0,2π)u :\ \left( -\infty, +\infty \right) ;\quad v :\ \left( -\infty, +\infty \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\phi} :\ \left( 0 , 2 \, \pi \right)
In [8]:
XS_to_XN = XS.transition_map(XN, [t-r, t+r, th, ph]) XS_to_XN.display()
{u=r+tv=r+tθ=θϕ=ϕ\left\{\begin{array}{lcl} u & = & -r + t \\ v & = & r + t \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.
In [9]:
XS_to_XN.inverse().display()
{t=12u+12vr=12u+12vθ=θϕ=ϕ\left\{\begin{array}{lcl} t & = & \frac{1}{2} \, u + \frac{1}{2} \, v \\ r & = & -\frac{1}{2} \, u + \frac{1}{2} \, v \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.

In terms of the null coordinates (u,v,θ,ϕ)(u,v,\theta,\phi), the Minkowski metric writes

In [10]:
g.display(XN.frame(), XN)
g=12dudv12dvdu+(14u212uv+14v2)dθdθ+(14u2sin(θ)212uvsin(θ)2+14v2sin(θ)2)dϕdϕg = -\frac{1}{2} \mathrm{d} u\otimes \mathrm{d} v -\frac{1}{2} \mathrm{d} v\otimes \mathrm{d} u + \left( \frac{1}{4} \, u^{2} - \frac{1}{2} \, u v + \frac{1}{4} \, v^{2} \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \frac{1}{4} \, u^{2} \sin\left({\theta}\right)^{2} - \frac{1}{2} \, u v \sin\left({\theta}\right)^{2} + \frac{1}{4} \, v^{2} \sin\left({\theta}\right)^{2} \right) \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

Let us plot the coordinate grid (u,v)(u,v) in terms of the coordinates (t,r)(t,r):

In [11]:
graph = XN.plot(XS, ambient_coords=(r,t), fixed_coords={th: pi/2, ph: pi}, nb_values=17, plot_points=200, color='green', style={u: '-', v: ':'}, thickness={u: 1, v: 2}) show(graph)
In [12]:
show(graph, xmin=0, xmax=4, ymin=0, ymax=4, aspect_ratio=1, fontsize=16)
In [13]:
graph.save("glo_null_coord.pdf", xmin=0, xmax=4, ymin=0, ymax=4, aspect_ratio=1, fontsize=16)

Compactified null coordinates

Instead of (u,v)(u,v), which span R\mathbb{R}, let consider the coordinates U=atanuU = \mathrm{atan}\, u and V=atanvV = \mathrm{atan}\, v, which span (π2,π2)\left(-\frac{\pi}{2}, \frac{\pi}{2}\right):

In [14]:
graph = plot(atan(u), (u,-6, 6), thickness=2, axes_labels=[r'$u$', r'$U$']) + \ line([(-6,-pi/2), (6,-pi/2)], linestyle='--') + \ line([(-6,pi/2), (6,pi/2)], linestyle='--') show(graph, aspect_ratio=1)
In [15]:
graph.save('glo_atan.pdf', aspect_ratio=1)
In [16]:
XNC.<U,V,th,ph> = M.chart(r'U:(-pi/2,pi/2) V:(-pi/2,pi/2) th:(0,pi):\theta ph:(0,2*pi):\phi') XNC.add_restrictions(V-U>0) XNC
(M,(U,V,θ,ϕ))\left(M,(U, V, {\theta}, {\phi})\right)
In [17]:
XNC.coord_range()
U: (12π,12π);V: (12π,12π);θ: (0,π);ϕ: (0,2π)U :\ \left( -\frac{1}{2} \, \pi , \frac{1}{2} \, \pi \right) ;\quad V :\ \left( -\frac{1}{2} \, \pi , \frac{1}{2} \, \pi \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\phi} :\ \left( 0 , 2 \, \pi \right)
In [18]:
XN_to_XNC = XN.transition_map(XNC, [atan(u), atan(v), th, ph]) XN_to_XNC.display()
{U=arctan(u)V=arctan(v)θ=θϕ=ϕ\left\{\begin{array}{lcl} U & = & \arctan\left(u\right) \\ V & = & \arctan\left(v\right) \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.
In [19]:
XN_to_XNC.inverse().display()
{u=tan(U)v=tan(V)θ=θϕ=ϕ\left\{\begin{array}{lcl} u & = & \tan\left(U\right) \\ v & = & \tan\left(V\right) \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.

Expressed in terms of the coordinates (U,V,θ,ϕ)(U,V,\theta,\phi), the metric tensor is

In [20]:
g.display(XNC.frame(), XNC)
g=12cos(U)2cos(V)2dUdV12cos(U)2cos(V)2dVdU+(cos(V)2sin(U)22cos(U)cos(V)sin(U)sin(V)+cos(U)2sin(V)24cos(U)2cos(V)2)dθdθ+(cos(V)2sin(U)2sin(θ)22cos(U)cos(V)sin(U)sin(V)sin(θ)2+cos(U)2sin(V)2sin(θ)24cos(U)2cos(V)2)dϕdϕg = -\frac{1}{2 \, \cos\left(U\right)^{2} \cos\left(V\right)^{2}} \mathrm{d} U\otimes \mathrm{d} V -\frac{1}{2 \, \cos\left(U\right)^{2} \cos\left(V\right)^{2}} \mathrm{d} V\otimes \mathrm{d} U + \left( \frac{\cos\left(V\right)^{2} \sin\left(U\right)^{2} - 2 \, \cos\left(U\right) \cos\left(V\right) \sin\left(U\right) \sin\left(V\right) + \cos\left(U\right)^{2} \sin\left(V\right)^{2}}{4 \, \cos\left(U\right)^{2} \cos\left(V\right)^{2}} \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \frac{\cos\left(V\right)^{2} \sin\left(U\right)^{2} \sin\left({\theta}\right)^{2} - 2 \, \cos\left(U\right) \cos\left(V\right) \sin\left(U\right) \sin\left(V\right) \sin\left({\theta}\right)^{2} + \cos\left(U\right)^{2} \sin\left(V\right)^{2} \sin\left({\theta}\right)^{2}}{4 \, \cos\left(U\right)^{2} \cos\left(V\right)^{2}} \right) \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

Let us call Ω2\Omega^{-2} the common factor:

In [21]:
Omega = M.scalar_field({XNC: 2*cos(U)*cos(V)}, name='Omega', latex_name=r'\Omega') Omega.display()
Ω:MR(u,v,θ,ϕ)2u2+1v2+1(U,V,θ,ϕ)2cos(U)cos(V)\begin{array}{llcl} \Omega:& M & \longrightarrow & \mathbb{R} \\ & \left(u, v, {\theta}, {\phi}\right) & \longmapsto & \frac{2}{\sqrt{u^{2} + 1} \sqrt{v^{2} + 1}} \\ & \left(U, V, {\theta}, {\phi}\right) & \longmapsto & 2 \, \cos\left(U\right) \cos\left(V\right) \end{array}
In [22]:
Omega.display(XS)
Ω:MR(t,r,θ,ϕ)2r2+2rt+t2+1r22rt+t2+1\begin{array}{llcl} \Omega:& M & \longrightarrow & \mathbb{R} \\ & \left(t, r, {\theta}, {\phi}\right) & \longmapsto & \frac{2}{\sqrt{r^{2} + 2 \, r t + t^{2} + 1} \sqrt{r^{2} - 2 \, r t + t^{2} + 1}} \end{array}

Conformal metric

We introduce the metric g~=Ω2g\tilde g = \Omega^2 g:

In [23]:
gt = M.lorentzian_metric('gt', latex_name=r'\tilde{g}') gt.set(Omega^2*g) gt.display(XNC.frame(), XNC)
g~=2dUdV2dVdU+(cos(V)2sin(U)22cos(U)cos(V)sin(U)sin(V)+cos(U)2sin(V)2)dθdθ+(cos(V)2sin(U)2sin(θ)22cos(U)cos(V)sin(U)sin(V)sin(θ)2+cos(U)2sin(V)2sin(θ)2)dϕdϕ\tilde{g} = -2 \mathrm{d} U\otimes \mathrm{d} V -2 \mathrm{d} V\otimes \mathrm{d} U + \left( \cos\left(V\right)^{2} \sin\left(U\right)^{2} - 2 \, \cos\left(U\right) \cos\left(V\right) \sin\left(U\right) \sin\left(V\right) + \cos\left(U\right)^{2} \sin\left(V\right)^{2} \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \cos\left(V\right)^{2} \sin\left(U\right)^{2} \sin\left({\theta}\right)^{2} - 2 \, \cos\left(U\right) \cos\left(V\right) \sin\left(U\right) \sin\left(V\right) \sin\left({\theta}\right)^{2} + \cos\left(U\right)^{2} \sin\left(V\right)^{2} \sin\left({\theta}\right)^{2} \right) \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

Clearly the metric components g~θθ{\tilde g}_{\theta\theta} and g~ϕϕ{\tilde g}_{\phi\phi} can be simplified further. Let us do it by hand, by extracting the symbolic expression via expr():

In [24]:
g22 = gt[XNC.frame(), 2, 2, XNC].expr() g22
cos(V)2sin(U)22cos(U)cos(V)sin(U)sin(V)+cos(U)2sin(V)2\cos\left(V\right)^{2} \sin\left(U\right)^{2} - 2 \, \cos\left(U\right) \cos\left(V\right) \sin\left(U\right) \sin\left(V\right) + \cos\left(U\right)^{2} \sin\left(V\right)^{2}
In [25]:
g22.factor().reduce_trig()
sin(U+V)2\sin\left(-U + V\right)^{2}
In [26]:
g33st = gt[XNC.frame(), 3, 3, XNC].expr() / sin(th)^2 g33st
cos(V)2sin(U)2sin(θ)22cos(U)cos(V)sin(U)sin(V)sin(θ)2+cos(U)2sin(V)2sin(θ)2sin(θ)2\frac{\cos\left(V\right)^{2} \sin\left(U\right)^{2} \sin\left({\theta}\right)^{2} - 2 \, \cos\left(U\right) \cos\left(V\right) \sin\left(U\right) \sin\left(V\right) \sin\left({\theta}\right)^{2} + \cos\left(U\right)^{2} \sin\left(V\right)^{2} \sin\left({\theta}\right)^{2}}{\sin\left({\theta}\right)^{2}}
In [27]:
g33st.factor().reduce_trig()
sin(U+V)2\sin\left(-U + V\right)^{2}
In [28]:
gt.add_comp(XNC.frame())[2,2, XNC] = g22.factor().reduce_trig() gt.add_comp(XNC.frame())[3,3, XNC] = g33st.factor().reduce_trig() * sin(th)^2

Hence the final form of the conformal metric in terms of the compactified null coordinates:

In [29]:
gt.display(XNC.frame(), XNC)
g~=2dUdV2dVdU+sin(U+V)2dθdθ+sin(U+V)2sin(θ)2dϕdϕ\tilde{g} = -2 \mathrm{d} U\otimes \mathrm{d} V -2 \mathrm{d} V\otimes \mathrm{d} U + \sin\left(-U + V\right)^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \sin\left(-U + V\right)^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

In terms of the non-compactified null coordinates (u,v,θ,ϕ)(u,v,\theta,\phi):

In [30]:
gt.display(XN.frame(), XN)
g~=(2(u2+1)v2+u2+1)dudv+(2(u2+1)v2+u2+1)dvdu+(u22uv+v2(u2+1)v2+u2+1)dθdθ+(u2sin(θ)22uvsin(θ)2+v2sin(θ)2(u2+1)v2+u2+1)dϕdϕ\tilde{g} = \left( -\frac{2}{{\left(u^{2} + 1\right)} v^{2} + u^{2} + 1} \right) \mathrm{d} u\otimes \mathrm{d} v + \left( -\frac{2}{{\left(u^{2} + 1\right)} v^{2} + u^{2} + 1} \right) \mathrm{d} v\otimes \mathrm{d} u + \left( \frac{u^{2} - 2 \, u v + v^{2}}{{\left(u^{2} + 1\right)} v^{2} + u^{2} + 1} \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \frac{u^{2} \sin\left({\theta}\right)^{2} - 2 \, u v \sin\left({\theta}\right)^{2} + v^{2} \sin\left({\theta}\right)^{2}}{{\left(u^{2} + 1\right)} v^{2} + u^{2} + 1} \right) \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

and in terms of the default coordinates (t,r,θ,ϕ)(t,r,\theta,\phi):

In [31]:
gt.display()
g~=(4r4+t42(r21)t2+2r2+1)dtdt+(4r4+t42(r21)t2+2r2+1)drdr+(4r2r4+t42(r21)t2+2r2+1)dθdθ+(4r2sin(θ)2r4+t42(r21)t2+2r2+1)dϕdϕ\tilde{g} = \left( -\frac{4}{r^{4} + t^{4} - 2 \, {\left(r^{2} - 1\right)} t^{2} + 2 \, r^{2} + 1} \right) \mathrm{d} t\otimes \mathrm{d} t + \left( \frac{4}{r^{4} + t^{4} - 2 \, {\left(r^{2} - 1\right)} t^{2} + 2 \, r^{2} + 1} \right) \mathrm{d} r\otimes \mathrm{d} r + \left( \frac{4 \, r^{2}}{r^{4} + t^{4} - 2 \, {\left(r^{2} - 1\right)} t^{2} + 2 \, r^{2} + 1} \right) \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \left( \frac{4 \, r^{2} \sin\left({\theta}\right)^{2}}{r^{4} + t^{4} - 2 \, {\left(r^{2} - 1\right)} t^{2} + 2 \, r^{2} + 1} \right) \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

Einstein cylinder coordinates

Let us introduce some coordinates (τ,χ)(\tau,\chi) such that the null coordinates (U,V)(U,V) are respectively half the retarded time τχ\tau -\chi and half the advanced time τ+χ\tau+\chi:

In [32]:
XC.<tau,ch,th,ph> = M.chart(r'tau:(-pi,pi):\tau ch:(0,pi):\chi th:(0,pi):\theta ph:(0,2*pi):\phi') XC.add_restrictions([tau<pi-ch, tau>ch-pi]) XC
(M,(τ,χ,θ,ϕ))\left(M,({\tau}, {\chi}, {\theta}, {\phi})\right)
In [33]:
XC.coord_range()
τ: (π,π);χ: (0,π);θ: (0,π);ϕ: (0,2π){\tau} :\ \left( -\pi , \pi \right) ;\quad {\chi} :\ \left( 0 , \pi \right) ;\quad {\theta} :\ \left( 0 , \pi \right) ;\quad {\phi} :\ \left( 0 , 2 \, \pi \right)
In [34]:
XC_to_XNC = XC.transition_map(XNC, [(tau-ch)/2, (tau+ch)/2, th, ph]) XC_to_XNC.display()
{U=12χ+12τV=12χ+12τθ=θϕ=ϕ\left\{\begin{array}{lcl} U & = & -\frac{1}{2} \, {\chi} + \frac{1}{2} \, {\tau} \\ V & = & \frac{1}{2} \, {\chi} + \frac{1}{2} \, {\tau} \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.
In [35]:
XC_to_XNC.inverse().display()
{τ=U+Vχ=U+Vθ=θϕ=ϕ\left\{\begin{array}{lcl} {\tau} & = & U + V \\ {\chi} & = & -U + V \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.

The conformal metric takes then the form of the standard metric on the Einstein cylinder R×S3\mathbb{R}\times\mathbb{S}^3:

In [36]:
gt.display(XC.frame(), XC)
g~=dτdτ+dχdχ+sin(χ)2dθdθ+sin(χ)2sin(θ)2dϕdϕ\tilde{g} = -\mathrm{d} {\tau}\otimes \mathrm{d} {\tau}+\mathrm{d} {\chi}\otimes \mathrm{d} {\chi} + \sin\left({\chi}\right)^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + \sin\left({\chi}\right)^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}

The square of the conformal factor expressed in all the coordinates introduced so far:

In [37]:
(Omega^2).display()
Ω2:MR(t,r,θ,ϕ)4r4+t42(r21)t2+2r2+1(u,v,θ,ϕ)4(u2+1)v2+u2+1(U,V,θ,ϕ)4cos(U)2cos(V)2(τ,χ,θ,ϕ)4cos(12χ)4cos(12τ)48cos(12χ)2cos(12τ)2sin(12χ)2sin(12τ)2+4sin(12χ)4sin(12τ)4\begin{array}{llcl} {\Omega}^{ 2 } : & M & \longrightarrow & \mathbb{R} \\ & \left(t, r, {\theta}, {\phi}\right) & \longmapsto & \frac{4}{r^{4} + t^{4} - 2 \, {\left(r^{2} - 1\right)} t^{2} + 2 \, r^{2} + 1} \\ & \left(u, v, {\theta}, {\phi}\right) & \longmapsto & \frac{4}{{\left(u^{2} + 1\right)} v^{2} + u^{2} + 1} \\ & \left(U, V, {\theta}, {\phi}\right) & \longmapsto & 4 \, \cos\left(U\right)^{2} \cos\left(V\right)^{2} \\ & \left({\tau}, {\chi}, {\theta}, {\phi}\right) & \longmapsto & 4 \, \cos\left(\frac{1}{2} \, {\chi}\right)^{4} \cos\left(\frac{1}{2} \, {\tau}\right)^{4} - 8 \, \cos\left(\frac{1}{2} \, {\chi}\right)^{2} \cos\left(\frac{1}{2} \, {\tau}\right)^{2} \sin\left(\frac{1}{2} \, {\chi}\right)^{2} \sin\left(\frac{1}{2} \, {\tau}\right)^{2} + 4 \, \sin\left(\frac{1}{2} \, {\chi}\right)^{4} \sin\left(\frac{1}{2} \, {\tau}\right)^{4} \end{array}
In [38]:
XS_to_XC = M.coord_change(XNC,XC) * M.coord_change(XN, XNC) * M.coord_change(XS, XN) XS_to_XC.display()
{τ=arctan(r+t)+arctan(r+t)χ=arctan(r+t)arctan(r+t)θ=θϕ=ϕ\left\{\begin{array}{lcl} {\tau} & = & \arctan\left(r + t\right) + \arctan\left(-r + t\right) \\ {\chi} & = & \arctan\left(r + t\right) - \arctan\left(-r + t\right) \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.
In [39]:
XC_to_XS = M.coord_change(XN, XS) * M.coord_change(XNC, XN) * M.coord_change(XC,XNC) XC_to_XS.display()
{t=cos(12τ)sin(12τ)cos(12χ)2cos(12τ)2sin(12χ)2sin(12τ)2r=cos(12χ)sin(12χ)cos(12χ)2cos(12τ)2sin(12χ)2sin(12τ)2θ=θϕ=ϕ\left\{\begin{array}{lcl} t & = & \frac{\cos\left(\frac{1}{2} \, {\tau}\right) \sin\left(\frac{1}{2} \, {\tau}\right)}{\cos\left(\frac{1}{2} \, {\chi}\right)^{2} \cos\left(\frac{1}{2} \, {\tau}\right)^{2} - \sin\left(\frac{1}{2} \, {\chi}\right)^{2} \sin\left(\frac{1}{2} \, {\tau}\right)^{2}} \\ r & = & \frac{\cos\left(\frac{1}{2} \, {\chi}\right) \sin\left(\frac{1}{2} \, {\chi}\right)}{\cos\left(\frac{1}{2} \, {\chi}\right)^{2} \cos\left(\frac{1}{2} \, {\tau}\right)^{2} - \sin\left(\frac{1}{2} \, {\chi}\right)^{2} \sin\left(\frac{1}{2} \, {\tau}\right)^{2}} \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.

The expressions for tt and rr can be simplified:

In [40]:
tc = XC_to_XS(tau,ch,th,ph)[0] tc
cos(12τ)sin(12τ)cos(12χ)2cos(12τ)2sin(12χ)2sin(12τ)2\frac{\cos\left(\frac{1}{2} \, {\tau}\right) \sin\left(\frac{1}{2} \, {\tau}\right)}{\cos\left(\frac{1}{2} \, {\chi}\right)^{2} \cos\left(\frac{1}{2} \, {\tau}\right)^{2} - \sin\left(\frac{1}{2} \, {\chi}\right)^{2} \sin\left(\frac{1}{2} \, {\tau}\right)^{2}}
In [41]:
tc.reduce_trig()
sin(τ)cos(χ)+cos(τ)\frac{\sin\left({\tau}\right)}{\cos\left({\chi}\right) + \cos\left({\tau}\right)}
In [42]:
rc = XC_to_XS(tau,ch,th,ph)[1] rc
cos(12χ)sin(12χ)cos(12χ)2cos(12τ)2sin(12χ)2sin(12τ)2\frac{\cos\left(\frac{1}{2} \, {\chi}\right) \sin\left(\frac{1}{2} \, {\chi}\right)}{\cos\left(\frac{1}{2} \, {\chi}\right)^{2} \cos\left(\frac{1}{2} \, {\tau}\right)^{2} - \sin\left(\frac{1}{2} \, {\chi}\right)^{2} \sin\left(\frac{1}{2} \, {\tau}\right)^{2}}
In [43]:
rc.reduce_trig()
sin(χ)cos(χ)+cos(τ)\frac{\sin\left({\chi}\right)}{\cos\left({\chi}\right) + \cos\left({\tau}\right)}
In [44]:
XS_to_XC.set_inverse(tc.reduce_trig(), rc.reduce_trig(), th, ph) XC_to_XS = XS_to_XC.inverse()
Check of the inverse coordinate transformation: t == t r == r th == th ph == ph tau == arctan((sin(ch) + sin(tau))/(cos(ch) + cos(tau))) + arctan(-(sin(ch) - sin(tau))/(cos(ch) + cos(tau))) ch == arctan((sin(ch) + sin(tau))/(cos(ch) + cos(tau))) - arctan(-(sin(ch) - sin(tau))/(cos(ch) + cos(tau))) th == th ph == ph
In [45]:
XC_to_XS.display()
{t=sin(τ)cos(χ)+cos(τ)r=sin(χ)cos(χ)+cos(τ)θ=θϕ=ϕ\left\{\begin{array}{lcl} t & = & \frac{\sin\left({\tau}\right)}{\cos\left({\chi}\right) + \cos\left({\tau}\right)} \\ r & = & \frac{\sin\left({\chi}\right)}{\cos\left({\chi}\right) + \cos\left({\tau}\right)} \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.

Conformal Penrose diagram

Let us draw the coordinate grid (t,r)(t,r) in terms of the coordinates (τ,χ)(\tau,\chi):

In [46]:
graphXS = XS.plot(XC, ambient_coords=(ch, tau), fixed_coords={th: pi/2, ph: pi}, max_range=30, nb_values=51, plot_points=250, color={t: 'red', r: 'grey'}) graph_i0 = circle((pi,0), 0.05, fill=True, color='grey') + \ text(r"$i^0$", (3.3, 0.2), fontsize=18, color='grey') graph_ip = circle((0,pi), 0.05, fill=True, color='red') + \ text(r"$i^+$", (0.25, 3.3), fontsize=18, color='red') graph_im = circle((0,-pi), 0.05, fill=True, color='red') + \ text(r"$i^-$", (0.25, -3.3), fontsize=18, color='red') graph_Ip = line([(0,pi), (pi,0)], color='green', thickness=2) + \ text(r"$\mathscr{I}^+$", (1.8, 1.8), fontsize=18, color='green') graph_Im = line([(0,-pi), (pi,0)], color='green', thickness=2) + \ text(r"$\mathscr{I}^-$", (1.8, -1.8), fontsize=18, color='green') graph = graphXS + graph_i0 + graph_ip + graph_im + graph_Ip + graph_Im show(graph)
In [47]:
graph.save('glo_conf_diag_Mink.pdf')

Some blow-up near i0i^0:

In [48]:
graph = XS.plot(XC, ambient_coords=(ch, tau), fixed_coords={th: pi/2, ph: pi}, max_range=100, nb_values=41, plot_points=200, color={t: 'red', r: 'grey'}) graph += circle((pi,0), 0.005, fill=True, color='grey') + \ text(r"$i^0$", (pi, 0.02), fontsize=18, color='grey') show(graph, xmin=3., xmax=3.2, ymin=-0.2, ymax=0.2, aspect_ratio=1)

To produce a more satisfactory figure, let us use some logarithmic radial coordinate:

In [49]:
XL.<t, rh, th, ph> = M.chart(r't rh:\rho th:(0,pi):\theta ph:(0,2*pi):\phi') XL
(M,(t,ρ,θ,ϕ))\left(M,(t, {\rho}, {\theta}, {\phi})\right)
In [50]:
XS_to_XL = XS.transition_map(XL, [t, ln(r), th, ph]) XS_to_XL.display()
{t=tρ=log(r)θ=θϕ=ϕ\left\{\begin{array}{lcl} t & = & t \\ {\rho} & = & \log\left(r\right) \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.
In [51]:
XS_to_XL.inverse().display()
{t=tr=eρθ=θϕ=ϕ\left\{\begin{array}{lcl} t & = & t \\ r & = & e^{{\rho}} \\ {\theta} & = & {\theta} \\ {\phi} & = & {\phi} \end{array}\right.
In [52]:
XL_to_XC = M.coord_change(XS, XC) * M.coord_change(XL, XS) XC_to_XL = M.coord_change(XS, XL) * M.coord_change(XC, XS)
In [53]:
graph = XL.plot(XC, ambient_coords=(ch, tau), fixed_coords={th: pi/2, ph: pi}, ranges={t: (-20, 20), rh: (-2, 10)}, nb_values=19, color={t: 'red', rh: 'grey'}) graph += circle((pi,0), 0.005, fill=True, color='grey') + \ text(r"$i^0$", (pi, 0.02), fontsize=18, color='grey') show(graph, xmin=3., xmax=3.2, ymin=-0.2, ymax=0.2, aspect_ratio=1)

Null radial geodesics in the conformal diagram

To get a view of the null radial geodesics in the conformal diagram, it suffices to plot the chart (u,v,θ,ϕ)(u,v,\theta,\phi) in terms of the chart (τ,χ,θ,ϕ)(\tau,\chi,\theta,\phi). The following plot shows

  • the null geodesics defined by (u,θ,ϕ)=(u0,π/2,π)(u,\theta,\phi) = (u_0, \pi/2,\pi) for 17 values of u0u_0 evenly spaced in [8,8][-8,8] (dashed lines)
  • the null geodesics defined by (v,θ,ϕ)=(v0,π/2,π)(v,\theta,\phi) = (v_0, \pi/2,\pi) for 17 values of v0v_0 evenly spaced in [8,8][-8,8] (solid lines)
In [54]:
graphXN = XN.plot(XC, ambient_coords=(ch, tau), fixed_coords={th: pi/2, ph: pi}, nb_values=17, plot_points=150, color='green', style={u: '-', v: ':'}, thickness={u: 1, v: 2}) graph = graphXN + graph_i0 + graph_ip + graph_im + graph_Ip + graph_Im show(graph)