#!/usr/bin/env python # coding: utf-8 # # de Sitter spacetime # # This worksheet demonstrates a few capabilities of [SageManifolds](http://sagemanifolds.obspm.fr) (version 1.0, as included in SageMath 7.5) in computations regarding de Sitter spacetime. # # Click [here](https://raw.githubusercontent.com/sagemanifolds/SageManifolds/master/Worksheets/v1.0/SM_de_Sitter.ipynb) to download the worksheet file (ipynb format). To run it, you must start SageMath within the Jupyter notebook, via the command `sage -n jupyter` # *NB:* a version of SageMath at least equal to 7.5 is required to run this worksheet: # In[1]: version() # First we set up the notebook to display mathematical objects using LaTeX rendering: # In[2]: get_ipython().run_line_magic('display', 'latex') # We also define a viewer for 3D plots (use `'threejs'` or `'jmol'` for interactive 3D graphics): # In[3]: viewer3D = 'threejs' # must be 'threejs', 'jmol', 'tachyon' or None (default) # ## Spacetime manifold # # We declare the de Sitter spacetime as a 4-dimensional differentiable manifold: # In[4]: M = Manifold(4, 'M', r'\mathcal{M}') print(M) ; M #
We consider hyperspherical coordinates $(\tau,\chi,\theta,\phi)$ on $\mathcal{M}$. Allowing for the standard coordinate singularities at $\chi=0$, $\chi=\pi$, $\theta=0$ or $\theta=\pi$, these coordinates cover the entire spacetime manifold (which is topologically $\mathbb{R}\times\mathbb{S}^3$). If we restrict ourselves to regular coordinates (i.e. to consider only mathematically well defined charts), the hyperspherical coordinates cover only an open part of $\mathcal{M}$, which we call $\mathcal{M}_0$, on which $\chi$ spans the open interval $(0,\pi)$, $\theta$ the open interval $(0,\pi)$ and $\phi$ the open interval $(0,2\pi)$. Therefore, we declare:
# In[5]: M0 = M.open_subset('M_0', r'\mathcal{M}_0') X_hyp.The de Sitter metric can be defined as that induced by the embedding of $\mathcal{M}$ into a 5-dimensional Minkowski space, i.e. $\mathbb{R}^5$ equipped with a flat Lorentzian metric. We therefore introduce $\mathbb{R}^5$ as a 5-dimensional manifold covered by canonical coordinates:
# In[6]: R5 = Manifold(5, 'R5', r'\mathbb{R}^5') X5.The constant $b$ is a scale parameter. Considering de Sitter metric as a solution of vacuum Einstein equation with positive cosmological constant $\Lambda$, one has $b = \sqrt{\Lambda/3}$.
#Let us evaluate the image of a point via the mapping $\Phi$:
# In[8]: p = M.point((ta, ch, th, ph), name='p') ; print(p) # In[9]: p.coord() # In[10]: q = Phi(p) ; print(q) # In[11]: q.coord() #The image of $\mathcal{M}$ by $\Phi$ is a hyperboloid of one sheet, of equation $-T^2+W^2+X^2+Y^2+Z^2=b^{-2}$. Indeed:
# In[12]: (Tq,Wq,Xq,Yq,Zq) = q.coord() s = -Tq^2 + Wq^2 + Xq^2 + Yq^2 + Zq^2 s.simplify_full() #We may use the embedding $\Phi$ to draw the coordinate grid $(\tau,\chi)$ in terms of the coordinates $(W,X,T)$ for $\theta=\pi/2$ and $\phi=0$ (red) and $\theta=\pi/2$ and $\phi=\pi$ (green) (the brown lines are the lines $\tau={\rm const}$):
# In[13]: graph1 = X_hyp.plot(X5, mapping=Phi, ambient_coords=(W,X,T), fixed_coords={th:pi/2, ph:0}, number_values=9, color={ta:'red', ch:'brown'}, thickness=2, max_range=2, parameters={b:1}, label_axes=False) graph2 = X_hyp.plot(X5, mapping=Phi, ambient_coords=(W,X,T), fixed_coords={th:pi/2, ph:pi}, number_values=9, color={ta:'green', ch:'brown'}, thickness=2, max_range=2, parameters={b:1}, label_axes=False) show(graph1+graph2, aspect_ratio=1, viewer=viewer3D, axes_labels=['W','X','T']) #First, we introduce on $\mathbb{R}^5$ the Minkowski metric $h$:
# In[14]: h = R5.lorentzian_metric('h') h[0,0], h[1,1], h[2,2], h[3,3], h[4,4] = -1, 1, 1, 1, 1 h.display() #As mentionned above, the de Sitter metric $g$ on $\mathcal{M}$ is that induced by $h$, i.e.$g$ is the pullback of $h$ by the mapping $\Phi$:
# In[15]: g = M.metric('g') g.set( Phi.pullback(h) ) #The expression of $g$ in terms of $\mathcal{M}$'s default frame is found to be
# In[16]: g.display() # In[17]: g[:] #The Riemann tensor of $g$ is
# In[18]: Riem = g.riemann() print(Riem) Riem.display() # In[19]: Riem.display_comp(only_nonredundant=True) #The Ricci tensor:
# In[20]: Ric = g.ricci() print(Ric) Ric.display() # In[21]: Ric[:] #The Ricci scalar:
# In[22]: R = g.ricci_scalar() print(R) R.display() # We recover the fact that de Sitter spacetime has a constant curvature. It is indeed a **maximally symmetric space**. In particular, the Riemann tensor is expressible as # $$ R^i_{\ \, jlk} = \frac{R}{n(n-1)} \left( \delta^i_{\ \, k} g_{jl} - \delta^i_{\ \, l} g_{jk} \right), $$ # where $n$ is the dimension of $\mathcal{M}$: $n=4$ in the present case. Let us check this formula here, under the form $R^i_{\ \, jlk} = -\frac{R}{6} g_{j[k} \delta^i_{\ \, l]}$: # In[23]: delta = M.tangent_identity_field() Riem == - (R/6)*(g*delta).antisymmetrize(2,3) # 2,3 = last positions of the type-(1,3) tensor g*delta # We may also check that de Sitter metric is a solution of the vacuum **Einstein equation** with (positive) cosmological constant: # In[24]: Lambda = 3*b^2 Ric - 1/2*R*g + Lambda*g == 0