> 文章列表 > 用Python获取史瓦西时空中克氏符的分量

用Python获取史瓦西时空中克氏符的分量

用Python获取史瓦西时空中克氏符的分量

文章目录

三维球面坐标

Einsteinpy中提供了克氏符模型,可通过ChristoffelSymbols获取。简单起见,先以最直观的三维球面为例,来用Einsteinpy查看其克氏符的表达形式。

三维球面的度规张量可表示为

g00=1g11=r2g22=r2sin⁡2θgij=0,i≠j\\begin{aligned} g_{00}&=1\\\\ g_{11}&=r^2\\\\ g_{22}&=r^2\\sin^2\\theta\\\\ g_{ij}&=0, i\\not=j \\end{aligned} g00g11g22gij=1=r2=r2sin2θ=0,i=j

克氏符这个概念是从度规张量的协变导数为0的事实中得到的,换言之,可通过度规来得到克氏符的分量表达式

import numpy as np
import sympy
from einsteinpy.symbolic import MetricTensor, ChristoffelSymbols, RiemannCurvatureTensorr, th, phi = sympy.symbols('r theta phi')
# 球坐标度规
metric = np.diagflat([1,r**2,(r**2)*(sympy.sin(th)**2)])
m_obj.tensor()
# [[1, 0, 0], [0, r**2, 0], [0, 0, r**2*sin(theta)**2]]
ch = ChristoffelSymbols.from_metric(m_obj)
sympy.latex(ch.tensor())

打印出来如下

[[0000−r000−rsin⁡2(θ)][01r01r0000−sin⁡(θ)cos⁡(θ)][001r00cos⁡(θ)sin⁡(θ)1rcos⁡(θ)sin⁡(θ)0]]\\left[\\begin{matrix}\\left[\\begin{matrix}0 & 0 & 0\\\\0 & - r & 0\\\\0 & 0 & - r \\sin^{2}{\\left(\\theta \\right)}\\end{matrix}\\right] & \\left[\\begin{matrix}0 & \\frac{1}{r} & 0\\\\\\frac{1}{r} & 0 & 0\\\\0 & 0 & - \\sin{\\left(\\theta \\right)} \\cos{\\left(\\theta \\right)}\\end{matrix}\\right] & \\left[\\begin{matrix}0 & 0 & \\frac{1}{r}\\\\0 & 0 & \\frac{\\cos{\\left(\\theta \\right)}}{\\sin{\\left(\\theta \\right)}}\\\\\\frac{1}{r} & \\frac{\\cos{\\left(\\theta \\right)}}{\\sin{\\left(\\theta \\right)}} & 0\\end{matrix}\\right]\\end{matrix}\\right] 0000r000rsin2(θ)0r10r10000sin(θ)cos(θ)00r100sin(θ)cos(θ)r1sin(θ)cos(θ)0

这就是克氏符的真实面貌。

史瓦西时空

下面来搞一下史瓦西时空中的克氏符,而在此之前,先给出史瓦西时空的度规

t, r, th, phi = sympy.symbols("t r theta phi")
G, M, c, a = sympy.symbols("G M c a")
c2 = c**2
# using metric values of schwarschild space-time
# a is schwarzschild radius
list2d = np.diagflat([1-a/r, -1 / ((1 - (a/r)) * c2), -1 * (r**2)/c2,-1 * (r**2) * (sympy.sin(th)**2) / c2])
sch = MetricTensor(list2d, [t, r, th, phi])
sympy.latex(sch.tensor())

即其度规张量为

[−ar+10000−1c2(−ar+1)0000−r2c20000−r2sin⁡2(θ)c2]\\left[\\begin{matrix}- \\frac{a}{r} + 1 & 0 & 0 & 0\\\\0 & - \\frac{1}{c^{2} \\left(- \\frac{a}{r} + 1\\right)} & 0 & 0\\\\0 & 0 & - \\frac{r^{2}}{c^{2}} & 0\\\\0 & 0 & 0 & - \\frac{r^{2} \\sin^{2}{\\left(\\theta \\right)}}{c^{2}}\\end{matrix}\\right] ra+10000c2(ra+1)10000c2r20000c2r2sin2(θ)

上式中,aaa为史瓦西半径,MMM为天体质量。

接下来,就可以请出史瓦西空间中的克氏符了

sch_ch = ChristoffelSymbols.from_metric(sch)
sympy.latex(sch_ch.tensor())

[[0a2r2(−ar+1)00a2r2(−ar+1)00000000000][−a(ac22r−c22)r20000a(ac22r−c22)c2r2(−ar+1)200002r(ac22r−c22)c200002r(ac22r−c22)sin⁡2(θ)c2][0000001r001r00000−sin⁡(θ)cos⁡(θ)][00000001r000cos⁡(θ)sin⁡(θ)01rcos⁡(θ)sin⁡(θ)0]]\\left[\\begin{matrix}\\left[\\begin{matrix}0 & \\frac{a}{2 r^{2} \\left(- \\frac{a}{r} + 1\\right)} & 0 & 0\\\\\\frac{a}{2 r^{2} \\left(- \\frac{a}{r} + 1\\right)} & 0 & 0 & 0\\\\0 & 0 & 0 & 0\\\\0 & 0 & 0 & 0\\end{matrix}\\right] \\left[\\begin{matrix}- \\frac{a \\left(\\frac{a c^{2}}{2 r} - \\frac{c^{2}}{2}\\right)}{r^{2}} & 0 & 0 & 0\\\\0 & \\frac{a \\left(\\frac{a c^{2}}{2 r} - \\frac{c^{2}}{2}\\right)}{c^{2} r^{2} \\left(- \\frac{a}{r} + 1\\right)^{2}} & 0 & 0\\\\0 & 0 & \\frac{2 r \\left(\\frac{a c^{2}}{2 r} - \\frac{c^{2}}{2}\\right)}{c^{2}} & 0\\\\0 & 0 & 0 & \\frac{2 r \\left(\\frac{a c^{2}}{2 r} - \\frac{c^{2}}{2}\\right) \\sin^{2}{\\left(\\theta \\right)}}{c^{2}}\\end{matrix}\\right] & \\left[\\begin{matrix}0 & 0 & 0 & 0\\\\0 & 0 & \\frac{1}{r} & 0\\\\0 & \\frac{1}{r} & 0 & 0\\\\0 & 0 & 0 & - \\sin{\\left(\\theta \\right)} \\cos{\\left(\\theta \\right)}\\end{matrix}\\right] & \\left[\\begin{matrix}0 & 0 & 0 & 0\\\\0 & 0 & 0 & \\frac{1}{r}\\\\0 & 0 & 0 & \\frac{\\cos{\\left(\\theta \\right)}}{\\sin{\\left(\\theta \\right)}}\\\\0 & \\frac{1}{r} & \\frac{\\cos{\\left(\\theta \\right)}}{\\sin{\\left(\\theta \\right)}} & 0\\end{matrix}\\right]\\end{matrix}\\right] 02r2(ra+1)a002r2(ra+1)a00000000000r2a(2rac22c2)0000c2r2(ra+1)2a(2rac22c2)0000c22r(2rac22c2)0000c22r(2rac22c2)sin2(θ)000000r100r100000sin(θ)cos(θ)0000000r1000sin(θ)cos(θ)0r1sin(θ)cos(θ)0