#!/usr/bin/env python # coding: utf-8 # # 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](https://sagemanifolds.obspm.fr) project. # # *Author:* **Hans Fotsing Tetsing** # A version of SageMath at least equal to 9.1 is required to run this notebook # In[1]: version() # In[2]: get_ipython().run_line_magic('display', 'latex') # In[3]: M = Manifold(4, 'M', structure='Lorentzian') print(M) # We define now on $M$ the ingoing Eddington-Finkelstein coordinates # In[4]: X_M. = 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) # 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() # $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) # In[10]: X_H. = 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() # 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() # 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) # In[16]: h.display() # In[17]: v = M.vector_field() v[:2] = [r,-r] v.display() # 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() # $\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() # $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) # The intergral surfaces of this screen distribution are the spheres $\{t=cste,r=2m\}$. # In[22]: T = H.adapted_frame(); T # In[23]: W = H.weingarten_map() print(W) # In[24]: W.display(T) # 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) # In[26]: SO.display()