3+1 Einstein equations in the $\delta=2$ Tomimatsu-Sato spacetime

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.1, as included in SageMath 8.1).

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 7.5 is required to run this worksheet:

In [1]:
version()
Out[1]:
'SageMath version 8.1, Release Date: 2017-12-07'

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

In [2]:
%display latex

Since some computations are quite long, we ask for running them in parallel on 8 cores:

In [3]:
Parallelism().set(nproc=8)

Tomimatsu-Sato spacetime

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.

Spacelike hypersurface

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 manifold:

In [4]:
Sig = Manifold(3, 'Sigma', r'\Sigma', 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)$ :

In [5]:
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))
Out[5]:

Riemannian metric on $\Sigma$

The Tomimatsu-Sato metric depens on three parameters: the integer $\delta$, the real number $p\in[0,1]$, and the total mass $m$:

In [6]:
var('d, p, m')
assume(m>0)
assumptions()
Out[6]:

We set $\delta=2$ and choose a specific value for $p=1/5$:

In [7]:
d = 2
p = 1/5

Furthermore, without any loss of generality, we may set $m=1$ (this simply fixes some length scale):

In [8]:
m = 1

The parameter $q$ is related to $p$ by $p^2+q^2=1$:

In [9]:
q = sqrt(1-p^2)

Some shortcut notations:

In [10]:
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$:

In [11]:
gam = Sig.riemannian_metric('gam', latex_name=r'\gamma') 
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()
Out[11]:

A view of the non-vanishing components of $\gamma$ w.r.t. coordinates $(x,y,\phi)$:

In [12]:
gam.display_comp()
Out[12]:

Lapse function and shift vector

In [13]:
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()
Out[13]:
In [14]:
N = Sig.scalar_field(sqrt(N2.simplify_full()), name='N')
print(N)
N.display()
Scalar field N on the 3-dimensional differentiable manifold Sigma
Out[14]:

The coordinate expression of the scalar field $N$:

In [15]:
N.expr()
Out[15]:
In [16]:
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)
Out[16]:

Extrinsic curvature of $\Sigma$

We use the formula $$ K_{ij} = \frac{1}{2N} \mathcal{L}_{\beta} \gamma_{ij}, $$ which is valid for any stationary spacetime:

In [17]:
K = gam.lie_derivative(b) / (2*N)
K.set_name('K')
print(K)
Field of symmetric bilinear forms K on the 3-dimensional differentiable manifold Sigma

The component $K_{13} = K_{x\phi}$:

In [18]:
K[1,3]
Out[18]:

The type-(1,1) tensor $K^\sharp$ of components $K^i_{\ \, j} = \gamma^{ik} K_{kj}$:

In [19]:
Ku = K.up(gam, 0)
print(Ku)
Tensor field of type (1,1) on the 3-dimensional differentiable manifold Sigma

We may check that the hypersurface $\Sigma$ is maximal, i.e. that $K^k_{\ \, k} = 0$:

In [20]:
trK = Ku.trace()
trK
Out[20]:

Connection and curvature

Let us call $D$ the Levi-Civita connection associated with $\gamma$:

In [21]:
D = gam.connection(name='D')
print(D)
Levi-Civita connection D associated with the Riemannian metric gam on the 3-dimensional differentiable manifold Sigma

The Ricci tensor associated with $\gamma$:

In [22]:
Ric = gam.ricci()
print(Ric)
Field of symmetric bilinear forms Ric(gam) on the 3-dimensional differentiable manifold Sigma

The scalar curvature $R = \gamma^{ij} R_{ij}$:

In [23]:
R = gam.ricci_scalar(name='R')
print(R)
Scalar field R on the 3-dimensional differentiable manifold Sigma

The coordinate expression of the Ricci scalar is huge:

In [24]:
R.expr()
Out[24]:

3+1 Einstein equations

Let us check that the vacuum 3+1 Einstein equations are satisfied.

We start by the constraint equations:

Hamiltonian constraint

Let us first evaluate the term $K_{ij} K^{ij}$:

In [25]:
Kuu = Ku.up(gam, 1)
trKK = K['_ij']*Kuu['^ij']
print(trKK)
Scalar field on the 3-dimensional differentiable manifold Sigma

The vacuum Hamiltonian constraint equation is $$R + K^2 -K_{ij} K^{ij} = 0 $$

In [26]:
Ham = R + trK^2 - trKK
print(Ham)
Ham.display()
Scalar field on the 3-dimensional differentiable manifold Sigma
Out[26]:

Hence the Hamiltonian constraint is satisfied.

Momentum constraint

In vaccum, the momentum constraint is $$ D_j K^j_{\ \, i} - D_i K = 0 $$

In [27]:
mom = D(Ku).trace(0,2) - D(trK)
print(mom)
mom.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[27]:

Hence the momentum constraint is satisfied.

Dynamical Einstein equations

Let us first evaluate the symmetric bilinear form $k_{ij} := K_{ik} K^k_{\ \, j}$:

In [28]:
KK = K['_ik']*Ku['^k_j']
print(KK)
Tensor field of type (0,2) on the 3-dimensional differentiable manifold Sigma
In [29]:
KK1 = KK.symmetrize()
KK == KK1
Out[29]:
In [30]:
KK = KK1
print(KK)
Field of symmetric bilinear forms on the 3-dimensional differentiable manifold Sigma

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 $$

In [31]:
dyn = K.lie_derivative(b) - D(D(N)) + N*( Ric + trK*K - 2*KK )
print(dyn)
dyn.display()
Tensor field of type (0,2) on the 3-dimensional differentiable manifold Sigma
Out[31]:

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.