Symbolically Understanding Christoffel Symbol and Riemann Curvature Tensor using EinsteinPy

[1]:
import sympy
from einsteinpy.utils import christoffel
from pprint import pprint

Defining the metric tensor for 3d spherical coordinates

[2]:
syms = sympy.symbols('r theta phi')
# define the metric for 3d spherical coordinates
metric = [[0 for i in range(3)] for i in range(3)]
metric[0][0] = 1
metric[1][1] = syms[0]**2
metric[2][2] = (syms[0]**2)*(sympy.sin(syms[1])**2)

Calculating the christoffel symbols

[3]:
ch = christoffel.christoffels(metric, syms)
ch
[3]:
[[[0, 0, 0], [0, -r, 0], [0, 0, -r*sin(theta)**2]],
 [[0, 1/r, 0], [1/r, 0, 0], [0, 0, -sin(theta)*cos(theta)]],
 [[0, 0, 1/r], [0, 0, cos(theta)/sin(theta)], [1/r, cos(theta)/sin(theta), 0]]]
[4]:
ch[1][1][0]
[4]:
1/r

Calculating the Riemann Curvature tensor

[5]:
rm = christoffel.riemann_curvature_tensor(metric, syms)
rm
[5]:
[[[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
  [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]],
 [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
  [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]],
 [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
  [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]]

Calculating the christoffel symbols for Kerr Spacetime Metric

  • The expressions are unsimplified

[6]:
kerr_ch = christoffel.kerr_christoffels()
kerr_ch[0][0]
[6]:
[0,
 R*a*r*(2*R*a*r**2*sin(theta)**2/(a**2*cos(theta)**2 + r**2)**2 - R*a*sin(theta)**2/(a**2*cos(theta)**2 + r**2))*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)*(-R**2*a**2*r**2*sin(theta)**4/(a**2*cos(theta)**2 + r**2)**2 + (R*r/(a**2*cos(theta)**2 + r**2) - 1)*(-a**2*(-R*r + a**2 + r**2)*sin(theta)**2 + (a**2 + r**2)**2)*sin(theta)**2/(a**2*cos(theta)**2 + r**2))) + (-2*R*r**2/(a**2*cos(theta)**2 + r**2)**2 + R/(a**2*cos(theta)**2 + r**2))*(-a**2*(-R*r + a**2 + r**2)*sin(theta)**2 + (a**2 + r**2)**2)*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)*(-R**2*a**2*r**2*sin(theta)**4/(a**2*cos(theta)**2 + r**2)**2 + (R*r/(a**2*cos(theta)**2 + r**2) - 1)*(-a**2*(-R*r + a**2 + r**2)*sin(theta)**2 + (a**2 + r**2)**2)*sin(theta)**2/(a**2*cos(theta)**2 + r**2))),
 R*a**2*r*(-a**2*(-R*r + a**2 + r**2)*sin(theta)**2 + (a**2 + r**2)**2)*sin(theta)**3*cos(theta)/((a**2*cos(theta)**2 + r**2)**3*(-R**2*a**2*r**2*sin(theta)**4/(a**2*cos(theta)**2 + r**2)**2 + (R*r/(a**2*cos(theta)**2 + r**2) - 1)*(-a**2*(-R*r + a**2 + r**2)*sin(theta)**2 + (a**2 + r**2)**2)*sin(theta)**2/(a**2*cos(theta)**2 + r**2))) + R*a*r*(-2*R*a**3*r*sin(theta)**3*cos(theta)/(a**2*cos(theta)**2 + r**2)**2 - 2*R*a*r*sin(theta)*cos(theta)/(a**2*cos(theta)**2 + r**2))*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)*(-R**2*a**2*r**2*sin(theta)**4/(a**2*cos(theta)**2 + r**2)**2 + (R*r/(a**2*cos(theta)**2 + r**2) - 1)*(-a**2*(-R*r + a**2 + r**2)*sin(theta)**2 + (a**2 + r**2)**2)*sin(theta)**2/(a**2*cos(theta)**2 + r**2))),
 0]

Calculating the simplified expressions

[7]:
kerr_ch_simplified = christoffel.simplify_christoffels(kerr_ch)
kerr_ch_simplified
[7]:
[[[0,
   R*(-a**4*cos(theta)**2 - a**2*r**2*cos(theta)**2 + a**2*r**2 + r**4)/(2*(a**2*cos(theta)**2 + r**2)**2*(-R*r + a**2 + r**2)),
   -2*R*a**2*r*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2)**2,
   0],
  [R*(-a**4*cos(theta)**2 - a**2*r**2*cos(theta)**2 + a**2*r**2 + r**4)/(2*(a**2*cos(theta)**2 + r**2)**2*(-R*r + a**2 + r**2)),
   0,
   0,
   R*a*(a**6*cos(theta)**4 - a**4*r**2*cos(theta)**4 - 4*a**2*r**4*cos(theta)**2 - a**2*r**4 - 3*r**6)*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)**3*(-R*r + a**2 + r**2))],
  [-2*R*a**2*r*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2)**2,
   0,
   0,
   R*a**3*r*sin(theta)**3*cos(theta)/(a**2*cos(theta)**2 + r**2)**2],
  [0,
   R*a*(a**6*cos(theta)**4 - a**4*r**2*cos(theta)**4 - 4*a**2*r**4*cos(theta)**2 - a**2*r**4 - 3*r**6)*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)**3*(-R*r + a**2 + r**2)),
   R*a**3*r*sin(theta)**3*cos(theta)/(a**2*cos(theta)**2 + r**2)**2,
   0]],
 [[R*(-a**2*cos(theta)**2 + r**2)*(-R*r + a**2 + r**2)/(2*(a**2*cos(theta)**2 + r**2)**3),
   0,
   0,
   R*a*(a**2*cos(theta)**2 - r**2)*(-R*r + a**2 + r**2)*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)**3)],
  [0,
   (r*(-R*r + a**2 + r**2) + (R - 2*r)*(a**2*cos(theta)**2 + r**2)/2)/((a**2*cos(theta)**2 + r**2)*(-R*r + a**2 + r**2)),
   -a**2*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2),
   0],
  [0,
   -a**2*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2),
   -r*(-R*r + a**2 + r**2)/(a**2*cos(theta)**2 + r**2),
   0],
  [R*a*(a**2*cos(theta)**2 - r**2)*(-R*r + a**2 + r**2)*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)**3),
   0,
   0,
   (2*r*(a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2) + (a**2*cos(theta)**2 + r**2)*(a**2*(R - 2*r)*sin(theta)**2 + 4*r*(a**2 + r**2)))*(R*r - a**2 - r**2)*sin(theta)**2/(2*(a**2*cos(theta)**2 + r**2)**3)]],
 [[-4*R*a**2*r*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2)**3,
   0,
   0,
   4*R*a*r*(a**2 + r**2)*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2)**3],
  [0,
   a**2*sin(2*theta)/((-R*r + a**2 + r**2)*(a**2*cos(2*theta) + a**2 + 2*r**2)),
   r/(a**2*cos(theta)**2 + r**2),
   0],
  [0,
   r/(a**2*cos(theta)**2 + r**2),
   -a**2*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2),
   0],
  [4*R*a*r*(a**2 + r**2)*sin(2*theta)/(a**2*cos(2*theta) + a**2 + 2*r**2)**3,
   0,
   0,
   (a**2*(a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2)*sin(theta)**2 + (a**2*cos(theta)**2 + r**2)*(2*a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2))*sin(theta)*cos(theta)/(a**2*cos(theta)**2 + r**2)**3]],
 [[0,
   R*a*(-a**2*cos(theta)**2 + r**2)/(2*(a**2*cos(theta)**2 + r**2)**2*(-R*r + a**2 + r**2)),
   -R*a*r/((a**2*cos(theta)**2 + r**2)**2*tan(theta)),
   0],
  [R*a*(-a**2*cos(theta)**2 + r**2)/(2*(a**2*cos(theta)**2 + r**2)**2*(-R*r + a**2 + r**2)),
   0,
   0,
   (R**2*a**2*r*(a**2*cos(theta)**2 - r**2)*sin(theta)**2 + (2*r*(a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2) + (a**2*cos(theta)**2 + r**2)*(a**2*(R - 2*r)*sin(theta)**2 + 4*r*(a**2 + r**2)))*(-R*r + a**2*cos(theta)**2 + r**2))/(2*(a**2*cos(theta)**2 + r**2)**3*(-R*r + a**2 + r**2))],
  [-R*a*r/((a**2*cos(theta)**2 + r**2)**2*tan(theta)),
   0,
   0,
   (R**2*a**2*r**2*(a**2 + r**2)*sin(theta)**2 + (a**2*(a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2)*sin(theta)**2 + (a**2*cos(theta)**2 + r**2)*(2*a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2))*(R*r - a**2*cos(theta)**2 - r**2))/((a**2*cos(theta)**2 + r**2)**3*(-R*r + a**2 + r**2)*tan(theta))],
  [0,
   (R**2*a**2*r*(a**2*cos(theta)**2 - r**2)*sin(theta)**2 + (2*r*(a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2) + (a**2*cos(theta)**2 + r**2)*(a**2*(R - 2*r)*sin(theta)**2 + 4*r*(a**2 + r**2)))*(-R*r + a**2*cos(theta)**2 + r**2))/(2*(a**2*cos(theta)**2 + r**2)**3*(-R*r + a**2 + r**2)),
   (R**2*a**2*r**2*(a**2 + r**2)*sin(theta)**2 + (a**2*(a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2)*sin(theta)**2 + (a**2*cos(theta)**2 + r**2)*(2*a**2*(-R*r + a**2 + r**2)*sin(theta)**2 - (a**2 + r**2)**2))*(R*r - a**2*cos(theta)**2 - r**2))/((a**2*cos(theta)**2 + r**2)**3*(-R*r + a**2 + r**2)*tan(theta)),
   0]]]