3+1 Simon-Mars tensor in Kerr spacetime

This worksheet demonstrates a few capabilities of SageManifolds (version 1.0, as included in SageMath 7.5) in computations regarding 3+1 slicing of Kerr spacetime. In particular, it implements the computation of the 3+1 decomposition of the Simon-Mars tensor as given in the article arXiv:1412.6542.

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 7.5.1, Release Date: 2017-01-15'

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)

Spacelike hypersurface

We consider some hypersurface $\Sigma$ of a spacelike foliation $(\Sigma_t)_{t\in\mathbb{R}}$ of Kerr spacetime; we declare $\Sigma_t$ as a 3-dimensional manifold:

In [4]:
Sig = Manifold(3, 'Sigma', r'\Sigma', start_index=1)

The two Kerr parameters:

In [5]:
var('m, a')
assume(m>0)
assume(a>0)

Riemannian metric on $\Sigma$

The variables introduced so far satisfy the following assumptions:

Without any loss of generality (for $m\not =0$), we may set $m=1$:

In [6]:
m=1
assume(a<1)
In [7]:
#a=1 # extreme Kerr

On the hypersurface $\Sigma$, we are using coordinates $(r,y,\phi)$ that are related to the standard Boyer-Lindquist coordinates $(r,\theta,\phi)$ by $y=\cos\theta$:

In [8]:
X.<r,y,ph> = Sig.chart(r'r:(1+sqrt(1-a^2),+oo) y:(-1,1) ph:(0,2*pi):\phi')
print(X) ; X
Chart (Sigma, (r, y, ph))
Out[8]:

Riemannian metric on $\Sigma$

The variables introduced so far obey the following assumptions:

In [9]:
assumptions()
Out[9]:

Some shortcut notations:

In [10]:
rho2 = r^2 + a^2*y^2 
Del = r^2 -2*m*r + a^2
AA2 = rho2*(r^2 + a^2) + 2*a^2*m*r*(1-y^2)
BB2 = r^2 + a^2 + 2*a^2*m*r*(1-y^2)/rho2

The metric $h$ induced by the spacetime metric $g$ on $\Sigma$:

In [11]:
gam = Sig.riemannian_metric('gam', latex_name=r'\gamma') 
gam[1,1] = rho2/Del
gam[2,2] = rho2/(1-y^2)
gam[3,3] = BB2*(1-y^2)
gam.display()
Out[11]:

A matrix view of the components w.r.t. coordinates $(r,y,\phi)$:

In [12]:
gam[:]
Out[12]:

Lapse function and shift vector

In [13]:
N = Sig.scalar_field(sqrt(Del / BB2), name='N')
print(N)
N.display()
Scalar field N on the 3-dimensional differentiable manifold Sigma
Out[13]:
In [14]:
b = Sig.vector_field('beta', latex_name=r'\beta') 
b[3] = -2*m*r*a/AA2   
# unset components are zero 
b.display()
Out[14]:

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 [15]:
K = gam.lie_der(b) / (2*N)
K.set_name('K')
print(K) ; K.display()
Field of symmetric bilinear forms K on the 3-dimensional differentiable manifold Sigma
Out[15]:

Check (comparison with known formulas):

In [16]:
Krp = a*m*(1-y^2)*(3*r^4+a^2*r^2+a^2*(r^2-a^2)*y^2) / rho2^2/sqrt(Del*BB2)
Krp
Out[16]:
In [17]:
K[1,3] - Krp
Out[17]:
In [18]:
Kyp = 2*m*r*a^3*(1-y^2)*y*sqrt(Del)/rho2^2/sqrt(BB2)
Kyp
Out[18]:
In [19]:
K[2,3] - Kyp
Out[19]:

For now on, we use the expressions Krp and Kyp above for $K_{r\phi}$ and $K_{ry}$, respectively:

In [20]:
K1 = Sig.sym_bilin_form_field('K')
K1[1,3] = Krp
K1[2,3] = Kyp
K = K1
K.display()
Out[20]:

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

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

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

In [22]:
trK = Ku.trace()
print(trK)
Scalar field zero on the 3-dimensional differentiable manifold Sigma

Connection and curvature

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

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

The Ricci tensor associated with $\gamma$:

In [24]:
Ric = gam.ricci()
print(Ric) ; Ric
Field of symmetric bilinear forms Ric(gam) on the 3-dimensional differentiable manifold Sigma
Out[24]:
In [25]:
Ric[1,1]
Out[25]:
In [26]:
Ric[1,2]
Out[26]:
In [27]:
Ric[1,3]
Out[27]:
In [28]:
Ric[2,2]
Out[28]:
In [29]:
Ric[2,3]
Out[29]:
In [30]:
Ric[3,3]
Out[30]:

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

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

Test: 3+1 Einstein equations

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

We start by the contraint equations:

Hamiltonian constraint

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

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

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

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

Momentum constraint

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

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

Dynamical Einstein equations

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

In [35]:
KK = K['_ik']*Ku['^k_j']
print(KK)
Tensor field of type (0,2) on the 3-dimensional differentiable manifold Sigma
In [36]:
KK1 = KK.symmetrize()
KK == KK1
Out[36]:
In [37]:
KK = KK1
print(KK)
Field of symmetric bilinear forms on the 3-dimensional differentiable manifold Sigma
In [38]:
KK[1,1]
Out[38]:
In [39]:
KK[1,2]
Out[39]:
In [40]:
KK[1,3]
Out[40]:
In [41]:
KK[2,2]
Out[41]:
In [42]:
KK[2,3]
Out[42]:
In [43]:
KK[3,3]
Out[43]:

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 [44]:
dyn = K.lie_der(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[44]:

Hence, we have checked that all the vacuum 3+1 Einstein equations are fulfilled.

Electric and magnetic parts of the Weyl tensor

The electric part is the bilinear form $E$ given by $$E_{ij} = R_{ij} + K K_{ij} - K_{ik} K^k_{\ \, j} $$

In [45]:
E = Ric + trK*K - KK
print(E)
Field of symmetric bilinear forms on the 3-dimensional differentiable manifold Sigma
In [46]:
E[1,1]
Out[46]:
In [47]:
E[1,1].factor()
Out[47]:
In [48]:
E[1,2]
Out[48]:
In [49]:
E[1,2].factor()
Out[49]:
In [50]:
E[1,3]
Out[50]:
In [51]:
E[2,2]
Out[51]:
In [52]:
E[2,2].factor()
Out[52]:
In [53]:
E[2,3]
Out[53]:
In [54]:
E[3,3]
Out[54]:
In [55]:
E[3,3].factor()
Out[55]:

The magnetic part is the bilinear form $B$ defined by $$ B_{ij} = \epsilon^k_{\ \, l i} D_k K^l_{\ \, j}, $$

where $\epsilon^k_{\ \, l i}$ are the components of the type-(1,2) tensor $\epsilon^\sharp$, related to the Levi-Civita alternating tensor $\epsilon$ associated with $\gamma$ by $\epsilon^k_{\ \, l i} = \gamma^{km} \epsilon_{m l i}$. In SageManifolds, $\epsilon$ is obtained by the command volume_form() and $\epsilon^\sharp$ by the command volume_form(1) (1 = 1 index raised):

In [56]:
eps = gam.volume_form() 
print(eps) ; eps.display()
3-form eps_gam on the 3-dimensional differentiable manifold Sigma
Out[56]:
In [57]:
epsu = gam.volume_form(1)
print(epsu) ; epsu.display()
Tensor field of type (1,2) on the 3-dimensional differentiable manifold Sigma
Out[57]:
In [58]:
DKu = D(Ku)
B = epsu['^k_li']*DKu['^l_jk'] 
print(B)
Tensor field of type (0,2) on the 3-dimensional differentiable manifold Sigma

Let us check that $B$ is symmetric:

In [59]:
B1 = B.symmetrize()
B == B1
Out[59]:

Accordingly, we set

In [60]:
B = B1
B.set_name('B')
print(B)
Field of symmetric bilinear forms B on the 3-dimensional differentiable manifold Sigma
In [61]:
B[1,1]
Out[61]:
In [62]:
B[1,1].factor()
Out[62]:
In [63]:
B[1,2]
Out[63]:
In [64]:
B[1,2].factor()
Out[64]:
In [65]:
B[1,3]
Out[65]:
In [66]:
B[2,2]
Out[66]:
In [67]:
B[2,2].factor()
Out[67]:
In [68]:
B[2,3]
Out[68]:
In [69]:
B[3,3]
Out[69]:
In [70]:
B[3,3].factor()
Out[70]:

3+1 decomposition of the Simon-Mars tensor

We follow the computation presented in arXiv:1412.6542. We start by the tensor $E^\sharp$ of components $E^i_ {\ \, j}$:

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

Tensor $B^\sharp$ of components $B^i_{\ \, j}$:

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

1-form $\beta^\flat$ of components $\beta_i$ and its exterior derivative:

In [73]:
bd = b.down(gam)
xdb = bd.exterior_derivative()
print(xdb) ; xdb.display()
2-form on the 3-dimensional differentiable manifold Sigma
Out[73]:

Scalar square of shift $\beta_i \beta^i$:

In [74]:
b2 = bd(b)
print(b2) ; b2.display()
Scalar field on the 3-dimensional differentiable manifold Sigma
Out[74]:

Scalar $Y = E(\beta,\beta) = E_{ij} \beta^i \beta^j$:

In [75]:
Ebb = E(b,b)
Y = Ebb
print(Y) ; Y.display()
Scalar field on the 3-dimensional differentiable manifold Sigma
Out[75]:
In [76]:
Ebb.coord_function().factor()
Out[76]:
In [77]:
Ebb.display()
Out[77]:

Scalar $\bar Y = B(\beta,\beta) = B_{ij}\beta^i \beta^j$:

In [78]:
Bbb = B(b,b)
Y_bar = Bbb
print(Y_bar) ; Y_bar.display()
Scalar field B(beta,beta) on the 3-dimensional differentiable manifold Sigma
Out[78]:
In [79]:
Bbb.coord_function().factor()
Out[79]:

1-form of components $Eb_i = E_{ij} \beta^j$:

In [80]:
Eb = E.contract(b)
print(Eb) ; Eb.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[80]:

Vector field of components $Eub^i = E^i_{\ \, j} \beta^j$:

In [81]:
Eub = Eu.contract(b)
print(Eub) ; Eub.display()
Vector field on the 3-dimensional differentiable manifold Sigma
Out[81]:

1-form of components $Bb_i = B_{ij} \beta^j$:

In [82]:
Bb = B.contract(b)
print(Bb) ; Bb.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[82]:

Vector field of components $Bub^i = B^i_{\ \, j} \beta^j$:

In [83]:
Bub = Bu.contract(b)
print(Bub) ; Bub.display()
Vector field on the 3-dimensional differentiable manifold Sigma
Out[83]:

Vector field of components $Kub^i = K^i_{\ \, j} \beta^j$:

In [84]:
Kub = Ku.contract(b)
print(Kub) ; Kub.display()
Vector field on the 3-dimensional differentiable manifold Sigma
Out[84]:
In [85]:
T = 2*b(N) - 2*K(b,b)
print(T) ; T.display()
Scalar field zero on the 3-dimensional differentiable manifold Sigma
Out[85]:
In [86]:
Db = D(b)  #  Db^i_j = D_j b^i
Dbu = Db.up(gam, 1)  # Dbu^{ij} = D^j b^i
bDb = b*Dbu  # bDb^{ijk} = b^i D^k b^j
T_bar = eps['_ijk']*bDb['^ikj']
print(T_bar) ; T_bar.display()
Scalar field zero on the 3-dimensional differentiable manifold Sigma
Out[86]:
In [87]:
epsb = eps.contract(b) 
print(epsb)
epsb.display()
2-form on the 3-dimensional differentiable manifold Sigma
Out[87]:
In [88]:
epsB = eps['_ijl']*Bu['^l_k']
print(epsB)
Tensor field of type (0,3) on the 3-dimensional differentiable manifold Sigma
In [89]:
epsB.symmetries()
no symmetry; antisymmetry: (0, 1)
In [90]:
epsB[1,2,3]
Out[90]:
In [91]:
Z = 2*N*( D(N)  -K.contract(b)) + b.contract(xdb)
print(Z) ; Z.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[91]:
In [92]:
DNu = D(N).up(gam)
A = 2*(DNu - Ku.contract(b))*b + N*Dbu
Z_bar = eps['_ijk']*A['^kj']
print(Z_bar) ; Z_bar.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[92]:
In [93]:
# Test:
Dbdu = D(bd).up(gam,1).up(gam,1)  # (Db)^{ij} = D^i b^j
A = 2*b*(DNu - Ku.contract(b)) + N*Dbdu
Z_bar0 = eps['_ijk']*A['^jk']  # NB: '^jk' and not 'kj'
Z_bar0 == Z_bar
Out[93]:
In [94]:
W = N*Eb + epsb.contract(Bub)
print(W) ; W.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[94]:
In [95]:
W_bar = N*Bb - epsb.contract(Eub)
print(W_bar) ; W_bar.display()
1-form on the 3-dimensional differentiable manifold Sigma
Out[95]:
In [96]:
W[3].factor()
Out[96]:
In [97]:
W_bar[3].factor()
Out[97]:
In [98]:
M = - 4*Eb(Kub - DNu) - 2*(epsB['_ij.']*Dbu['^ji'])(b)
print(M) ; M.display()
Scalar field zero on the 3-dimensional differentiable manifold Sigma
Out[98]:
In [99]:
M_bar = 2*(eps.contract(Eub))['_ij']*Dbu['^ji'] - 4*Bb(Kub - DNu)
print(M_bar) ; M_bar.display()
Scalar field zero on the 3-dimensional differentiable manifold Sigma
Out[99]:
In [100]:
A = epsB['_ilk']*b['^l'] + epsB['_ikl']*b['^l'] \
    + Bu['^m_i']*epsb['_mk'] - 2*N*E
xdbE = xdb['_kl']*Eu['^k_i']
L = 2*N*epsB['_kli']*Dbu['^kl'] + 2*xdb['_ij']*Eub['^j'] \
    + 2*xdbE['_li']*b['^l'] + 2*A['_ik']*(Kub - DNu)['^k']
print(L)
1-form on the 3-dimensional differentiable manifold Sigma
In [101]:
L[1]
Out[101]:
In [102]:
L[1].factor()
Out[102]:
In [103]:
L[2]
Out[103]:
In [104]:
L[2].factor()
Out[104]:
In [105]:
L[3]
Out[105]:
In [106]:
N2pbb = N^2 + b2
V = N2pbb*E - 2*(b.contract(E)*bd).symmetrize() + Ebb*gam \
    + 2*N*(b.contract(epsB).symmetrize())
print(V)
Field of symmetric bilinear forms on the 3-dimensional differentiable manifold Sigma
In [107]:
V[1,1]
Out[107]:
In [108]:
V[1,1].factor()
Out[108]:
In [109]:
V[1,2]
Out[109]:
In [110]:
V[1,2].factor()
Out[110]:
In [111]:
V[1,3]
Out[111]:
In [112]:
V[2,2]
Out[112]:
In [113]:
V[2,2].factor()
Out[113]:
In [114]:
V[2,3]
Out[114]:
In [115]:
V[3,3]
Out[115]:
In [116]:
V[3,3].factor()
Out[116]:
In [117]:
beps = b.contract(eps)
V_bar = N2pbb*B - 2*(b.contract(B)*bd).symmetrize() + Bbb*gam \
        - 2*N*(beps['_il']*Eu['^l_j']).symmetrize()
print(V_bar)
Field of symmetric bilinear forms on the 3-dimensional differentiable manifold Sigma
In [118]:
V_bar[1,1]
Out[118]:
In [119]:
V_bar[1,1].factor()
Out[119]:
In [120]:
V_bar[1,2]
Out[120]:
In [121]:
V_bar[1,2].factor()
Out[121]:
In [122]:
V_bar[1,3]
Out[122]:
In [123]:
V_bar[2,2]
Out[123]:
In [124]:
V_bar[2,2].factor()
Out[124]:
In [125]:
V_bar[2,3]
Out[125]:
In [126]:
V_bar[3,3]
Out[126]:
In [127]:
V_bar[3,3].factor()
Out[127]:
In [128]:
G = (N^2 - b2)*gam + bd*bd
print(G)
Field of symmetric bilinear forms on the 3-dimensional differentiable manifold Sigma
In [129]:
G.display()
Out[129]:

3+1 decomposition of the real part of the Simon-Mars tensor

We follow Eqs. (77)-(80) of arXiv:1412.6542:

In [130]:
S1 = (4*(V*Z - V_bar*Z_bar) + G*L).antisymmetrize(1,2)
print(S1)
Tensor field of type (0,3) on the 3-dimensional differentiable manifold Sigma
In [131]:
S1.display()
Out[131]:
In [132]:
S2 = 4*(T*V - T_bar*V_bar - W*Z + W_bar*Z_bar) + M*G \
     - N*bd*L
print(S2)
Tensor field of type (0,2) on the 3-dimensional differentiable manifold Sigma
In [133]:
S2.display()
Out[133]:
In [134]:
S3 = (4*(W*Z - W_bar*Z_bar) + N*bd*L).antisymmetrize()
print(S3)
2-form on the 3-dimensional differentiable manifold Sigma
In [135]:
S3.display()
Out[135]:
In [136]:
S2[3,1] == -2*S3[3,1]
Out[136]:
In [137]:
S2[3,2] == -2*S3[3,2]
Out[137]:
In [138]:
S4 = 4*(T*W - T_bar*W_bar) -4*(Y*Z - Y_bar*Z_bar) + N*M*bd \
     - b2*L
print(S4)
1-form on the 3-dimensional differentiable manifold Sigma
In [139]:
S4.display()
Out[139]:

Hence all the tensors $S^1$, $S^2$, $S^3$ and $S^4$ involved in the 3+1 decomposition of the real part of the Simon-Mars are zero, as they should since the Simon-Mars tensor vanishes identically for the Kerr spacetime.

3+1 decomposition of the imaginary part of the Simon-Mars tensor

We follow Eqs. (82)-(85) of arXiv:1412.6542.

In [140]:
epsE = eps['_ijl']*Eu['^l_k']
print(epsE)
Tensor field of type (0,3) on the 3-dimensional differentiable manifold Sigma
In [141]:
A = - epsE['_ilk']*b['^l'] - epsE['_ikl']*b['^l'] \
     - Eu['^m_i']*epsb['_mk'] - 2*N*B
xdbB = xdb['_kl']*Bu['^k_i']
L_bar = - 2*N*epsE['_kli']*Dbu['^kl'] \
        + 2*xdb['_ij']*Bub['^j'] + 2*xdbB['_li']*b['^l'] \
        + 2*A['_ik']*(Kub - DNu)['^k']
print(L_bar)
1-form on the 3-dimensional differentiable manifold Sigma
In [142]:
L_bar.display()
Out[142]:
In [143]:
S1_bar = (4*(V*Z_bar + V_bar*Z) + G*L_bar).antisymmetrize(1,2)
print(S1_bar)
Tensor field of type (0,3) on the 3-dimensional differentiable manifold Sigma
In [144]:
S1_bar.display()
Out[144]:
In [145]:
S2_bar = 4*(T_bar*V + T*V_bar) - 4*(W*Z_bar + W_bar*Z) \
         + M_bar*G - N*bd*L_bar
print(S2_bar)
Tensor field of type (0,2) on the 3-dimensional differentiable manifold Sigma
In [146]:
S2_bar.display()
Out[146]:
In [147]:
S3_bar = (4*(W*Z_bar + W_bar*Z) + N*bd*L_bar).antisymmetrize()
print(S3_bar)
2-form on the 3-dimensional differentiable manifold Sigma
In [148]:
S3_bar.display()
Out[148]:
In [149]:
S4_bar = 4*(T_bar*W + T*W_bar - Y*Z_bar - Y_bar*Z) \
         + M_bar*N*bd - b2*L_bar
print(S4_bar)
1-form on the 3-dimensional differentiable manifold Sigma
In [150]:
S4_bar.display()
Out[150]:

Hence all the tensors ${\bar S}^1$, ${\bar S}^2$, ${\bar S}^3$ and ${\bar S}^4$ involved in the 3+1 decomposition of the imaginary part of the Simon-Mars are zero, as they should since the Simon-Mars tensor vanishes identically for the Kerr spacetime.