This worksheet demonstrates a few capabilities of SageMath in computations regarding the 3+1 slicing of the $\delta=2$ Tomimatsu-Sato spacetime. The corresponding tools have been developed within the SageManifolds project (version 1.2, as included in SageMath 8.2).
Click here to download the worksheet file (ipynb format). To run it, you must start SageMath with the Jupyter notebook, via the command sage -n jupyter
NB: a version of SageMath at least equal to 8.2 is required to run this worksheet:
version()
'SageMath version 8.2, Release Date: 2018-05-05'
First we set up the notebook to display mathematical objects using LaTeX rendering:
%display latex
Since some computations are quite long, we ask for running them in parallel on 8 cores:
Parallelism().set(nproc=8)
The Tomimatsu-Sato solution is an exact stationary and axisymmetric solution of the vaccum Einstein equation, which is asymptotically flat and has a non-zero angular momentum. It has been found in 1972 by A. Tomimatsu and H. Sato [Phys. Rev. Lett. 29, 1344 (1972)], as a solution of the Ernst equation. It is actually the member $\delta=2$ of a larger family of solutions parametrized by a positive integer $\delta$ and exhibited by Tomimatsu and Sato in 1973 [Prog. Theor. Phys. 50, 95 (1973)], the member $\delta=1$ being nothing but the Kerr metric. We refer to [Manko, Prog. Theor. Phys. 127, 1057 (2012)] for a discussion of the properties of this solution.
We consider some hypersurface $\Sigma$ of a spacelike foliation $(\Sigma_t)_{t\in\mathbb{R}}$ of $\delta=2$ Tomimatsu-Sato spacetime; we declare $\Sigma_t$ as a 3-dimensional Riemannian manifold:
Sig = Manifold(3, 'Sigma', latex_name=r'\Sigma', structure='Riemannian',
metric_name='gam', metric_latex_name=r'\gamma',
start_index=1)
On $\Sigma$, we consider the prolate spheroidal coordinates $(x,y,\phi)$, with $x\in(1,+\infty)$, $y\in(-1,1)$ and $\phi\in(0,2\pi)$ :
X.<r,y,ph> = Sig.chart(r'x:(1,+oo) y:(-1,1) ph:(0,2*pi):\phi')
print(X) ; X
Chart (Sigma, (x, y, ph))
The Tomimatsu-Sato metric depens on three parameters: the integer $\delta$, the real number $p\in[0,1]$, and the total mass $m$:
var('d, p, m')
assume(m>0)
assumptions()
We set $\delta=2$ and choose a specific value for $p=1/5$:
d = 2
p = 1/5
Furthermore, without any loss of generality, we may set $m=1$ (this simply fixes some length scale):
m = 1
The parameter $q$ is related to $p$ by $p^2+q^2=1$:
q = sqrt(1-p^2)
Some shortcut notations:
AA2 = (p^2*(x^2-1)^2+q^2*(1-y^2)^2)^2 \
- 4*p^2*q^2*(x^2-1)*(1-y^2)*(x^2-y^2)^2
BB2 = (p^2*x^4+2*p*x^3-2*p*x+q^2*y^4-1)^2 \
+ 4*q^2*y^2*(p*x^3-p*x*y^2-y^2+1)^2
CC2 = p^3*x*(1-x^2)*(2*(x^4-1)+(x^2+3)*(1-y^2)) \
+ p^2*(x^2-1)*((x^2-1)*(1-y^2)-4*x^2*(x^2-y^2)) \
+ q^2*(1-y^2)^3*(p*x+1)
The Riemannian metric $\gamma$ induced by the spacetime metric $g$ on $\Sigma$:
gam = Sig.metric()
gam[1,1] = m^2*BB2/(p^2*d^2*(x^2-1)*(x^2-y^2)^3)
gam[2,2] = m^2*BB2/(p^2*d^2*(y^2-1)*(-x^2+y^2)^3)
gam[3,3] = - m^2*(y^2-1)*(p^2*BB2^2*(x^2-1)
+ 4*q^2*d^2*CC2^2*(y^2-1))/(AA2*BB2*d^2)
gam.display()
A view of the non-vanishing components of $\gamma$ w.r.t. coordinates $(x,y,\phi)$:
gam.display_comp()
N2 = AA2/BB2 - 2*m*q*CC2*(y^2-1)/BB2*(2*m*q*CC2*(y^2-1)
/(BB2*(m^2*(y^2-1)*(p^2*BB2^2*(x^2-1)
+4*q^2*d^2*CC2^2*(y^2-1))/(AA2*BB2*d^2))))
N2.simplify_full()
N = Sig.scalar_field(sqrt(N2.simplify_full()), name='N')
print(N)
N.display()
Scalar field N on the 3-dimensional Riemannian manifold Sigma
The coordinate expression of the scalar field $N$:
N.expr()
b3 = 2*m*q*CC2*(y^2-1)/(BB2*(m^2*(y^2-1)*(p^2*BB2^2*(x^2-1)
+4*q^2*d^2*CC2^2*(y^2-1))/(AA2*BB2*d^2)))
b = Sig.vector_field('beta', latex_name=r'\beta')
b[3] = b3.simplify_full()
# unset components are zero
b.display_comp(only_nonzero=False)
We use the formula $$ K_{ij} = \frac{1}{2N} \mathcal{L}_{\beta} \gamma_{ij}, $$ which is valid for any stationary spacetime:
K = gam.lie_derivative(b) / (2*N)
K.set_name('K')
print(K)
Field of symmetric bilinear forms K on the 3-dimensional Riemannian manifold Sigma
The component $K_{13} = K_{x\phi}$:
K[1,3]
The type-(1,1) tensor $K^\sharp$ of components $K^i_{\ \, j} = \gamma^{ik} K_{kj}$:
Ku = K.up(gam, 0)
print(Ku)
Tensor field of type (1,1) on the 3-dimensional Riemannian manifold Sigma
We may check that the hypersurface $\Sigma$ is maximal, i.e. that $K^k_{\ \, k} = 0$:
trK = Ku.trace()
trK
Let us call $D$ the Levi-Civita connection associated with $\gamma$:
D = gam.connection(name='D')
print(D)
Levi-Civita connection D associated with the Riemannian metric gam on the 3-dimensional Riemannian manifold Sigma
The Ricci tensor associated with $\gamma$:
Ric = gam.ricci()
print(Ric)
Field of symmetric bilinear forms Ric(gam) on the 3-dimensional Riemannian manifold Sigma
The scalar curvature $R = \gamma^{ij} R_{ij}$:
R = gam.ricci_scalar(name='R')
print(R)
Scalar field R on the 3-dimensional Riemannian manifold Sigma
The coordinate expression of the Ricci scalar is huge:
R.expr()
Let us check that the vacuum 3+1 Einstein equations are satisfied.
We start by the constraint equations:
Let us first evaluate the term $K_{ij} K^{ij}$:
Kuu = Ku.up(gam, 1)
trKK = K['_ij']*Kuu['^ij']
print(trKK)
Scalar field on the 3-dimensional Riemannian manifold Sigma
The vacuum Hamiltonian constraint equation is $$R + K^2 -K_{ij} K^{ij} = 0 $$
Ham = R + trK^2 - trKK
print(Ham)
Ham.display()
Scalar field on the 3-dimensional Riemannian manifold Sigma
Hence the Hamiltonian constraint is satisfied.
In vaccum, the momentum constraint is $$ D_j K^j_{\ \, i} - D_i K = 0 $$
mom = D(Ku).trace(0,2) - D(trK)
print(mom)
mom.display()
1-form on the 3-dimensional Riemannian manifold Sigma
Hence the momentum constraint is satisfied.
Let us first evaluate the symmetric bilinear form $k_{ij} := K_{ik} K^k_{\ \, j}$:
KK = K['_ik']*Ku['^k_j']
print(KK)
Tensor field of type (0,2) on the 3-dimensional Riemannian manifold Sigma
KK1 = KK.symmetrize()
KK == KK1
KK = KK1
print(KK)
In vacuum and for stationary spacetimes, the dynamical Einstein equations are $$ \mathcal{L}_\beta K_{ij} - D_i D_j N + N \left( R_{ij} + K K_{ij} - 2 K_{ik} K^k_{\ \, j}\right) = 0 $$
dyn = K.lie_derivative(b) - D(D(N)) + N*( Ric + trK*K - 2*KK )
print(dyn)
dyn.display()
Hence the dynamical Einstein equations are satisfied.
Finally we have checked that all the 3+1 Einstein equations are satisfied by the $\delta=2$ Tomimatsu-Sato solution.