The event horizon of Schwarzschild black hole as a degenerate submanifold

This Jupyter notebook illustrates SageMath functionalities regarding smooth manifolds equipped with a degenerate metric on the concrete example of the event horizon of Schwarzschild black hole. The involved tools have been developed through the SageManifolds project.

Author: Hans Fotsing Tetsing

A version of SageMath at least equal to 9.1 is required to run this notebook

In [1]:
version()
Out[1]:
'SageMath version 9.1, Release Date: 2020-05-20'
In [2]:
%display latex
In [3]:
M = Manifold(4, 'M', structure='Lorentzian')
print(M)
4-dimensional Lorentzian manifold M

We define now on $M$ the ingoing Eddington-Finkelstein coordinates

In [4]:
X_M.<t, r, th, ph> = M.chart(r"t r:(0,oo) th:(0,pi):\theta ph:(0,2*pi):\phi") 
In [5]:
var('m'); assume(m>0)
In [6]:
Int = M.open_subset('Int', coord_def={X_M: r<2*m})
Ext = M.open_subset('Ext', coord_def={X_M: r>2*m})
In [7]:
g = M.metric()
print(g)
Lorentzian metric g on the 4-dimensional Lorentzian manifold M

Below we set the component of $g$ to obtain the Schwarzschild metric in the ingoing Eddington-Finkelstein coordinates

In [8]:
g[0,0], g[0,1], g[1,1], g[2,2], g[3,3] = -1+2*m/r, 2*m/r, 1+2*m/r, r^2, r^2*sin(th)^2
g.display()
Out[8]:

$M$ is now the Schwarzschild black hole. Its event horizon is the null hypersurface $H$ defined by $r=2m$.

In [9]:
H = Manifold(3, 'H', ambient=M, structure='degenerate_metric')
print(H)
degenerate hypersurface H embedded in 4-dimensional differentiable manifold M
In [10]:
X_H.<ht,hth,hph> = H.chart(r"ht:(-oo,oo):t hth:(0,pi):\theta hph:(0,2*pi):\phi")
In [11]:
Phi = H.diff_map(M, {(X_H, X_M): [ht, 2*m, hth, hph]}, 
                 name='Phi', latex_name=r'\Phi')
Phi.display()
Out[11]:
In [12]:
Phi_inv = M.diff_map(H, {(X_M, X_H): [t, th, ph]}, 
                     name='Phi_inv', latex_name=r'\Phi^{-1}')
Phi_inv.display()
Out[12]:
In [13]:
phi_inv_t = M.scalar_field({X_M:r-2*m})
In [14]:
H.set_immersion(Phi, inverse=Phi_inv)
H.declare_embedding()
In [15]:
h = H.induced_metric()
print(h)
degenerate metric gamma on the degenerate hypersurface H embedded in 4-dimensional differentiable manifold M
In [16]:
h.display()
Out[16]:
In [17]:
v = M.vector_field()
v[:2] = [r,-r]
v.display()
Out[17]:

This vector field $v$ is everywhere neither tangent nor orthogonal to $H$ and then can be used as rigging to study the extrinsic geometry of $H$.

In [18]:
H.set_transverse(rigging=v)
In [19]:
xi = M.vector_field()
xi[0] =-1
xi.display()
Out[19]:

$\xi$ defines the normal tangent direction along $H$.

In [20]:
e1 = M.vector_field()
e2 = M.vector_field()
e1[2] = 1
e2[3] = 1
e1.display(), e2.display()
Out[20]:

$S=Span(e1,e2)$ is a screen distribution for $H$, thus a complementary of $TH^\perp$ in $TH$.

In [21]:
S = H.screen('S', [e1, e2], (xi))
print(S)
screen distribution S along the degenerate hypersurface H embedded in 4-dimensional differentiable manifold M mapped into the 4-dimensional Lorentzian manifold M

The intergral surfaces of this screen distribution are the spheres $\{t=cste,r=2m\}$.

In [22]:
T = H.adapted_frame(); T
Out[22]:
In [23]:
W = H.weingarten_map()
print(W)
Tensor field nabla_g(xi)|X(H) of type (1,1) along the degenerate hypersurface H embedded in 4-dimensional differentiable manifold M with values on the 4-dimensional Lorentzian manifold M
In [24]:
W.display(T)
Out[24]:

The Weingarten map of this event horizon does not vanish but is along the orthogonal tangent vector $\xi$.

The Weingarten map can be decomposed as $$\nabla_U\xi=-A^\ast(U)-\tau(U)\xi,~~~~\forall U\in\mathfrak X(H).$$ $A^\ast$ is the shape operator and $\tau$ the roration $1-$form. So, the hypersurface is totally geodesic and the rotation $1-$form $\tau$ vanishes on the screen distribution and $\tau(\xi)=\frac1{4m}$. We can confirm that $H$ is totally geodesic by computing the shape operator.

In [25]:
SO = H.shape_operator()
print(SO)
Tensor field A^* of type (1,1) along the degenerate hypersurface H embedded in 4-dimensional differentiable manifold M with values on the 4-dimensional Lorentzian manifold M
In [26]:
SO.display()
Out[26]: