In [1]:
from sympy import *
from galgebra.printer import Format, latex, Fmt, GaLatexPrinter
Format()
from galgebra.ga import Ga
from galgebra.mv import ONE, ZERO, HALF
In [2]:
def dot_basis_r_basis(ga):
return [ga.dot(ga.basis[i], ga.r_basis[i]) for i in ga.n_range]
In [3]:
def gg(ga):
return simplify(ga.g * ga.g_inv)
In [4]:
def conv_christoffel_symbols(cf):
return permutedims(Array(cf), (2, 0, 1))
In [5]:
def show_christoffel_symbols(ga):
if ga.connect_flg:
display(conv_christoffel_symbols(ga.Christoffel_symbols(mode=1)))
display(conv_christoffel_symbols(ga.Christoffel_symbols(mode=2)))
In [6]:
coord = symbols('t x y z')
metric = Matrix([
[ 1, 0, 0, 0 ],
[ 0, -1, 0, 0 ],
[ 0, 0, -1, 0 ],
[ 0, 0, 0, -1 ]
])
minkowski = Ga('e', g=metric, coords=coord, norm=False)
In [7]:
# NBVAL_IGNORE_OUTPUT
minkowski.basis
Out[7]:
In [8]:
minkowski.g
Out[8]:
In [9]:
dot_basis_r_basis(minkowski)
Out[9]:
In [10]:
gg(minkowski)
Out[10]:
In [11]:
g4coords = (u, x, y, z) = symbols("u x y z")
g = Matrix([
[0, 0, -exp(-z), 0],
[0, HALF * u ** 2 * exp(4 * z), 0, 0],
[-exp(-z), 0, 12 * exp(-2 * z), u * exp(-z)],
[0, 0, u * exp(-z), HALF * u ** 2],
])
g4 = Ga('e', g=g, coords=g4coords, norm=False)
In [12]:
g4.basis
Out[12]:
In [13]:
g4.g
Out[13]:
In [14]:
g4.e_sq
Out[14]:
In [15]:
dot_basis_r_basis(g4)
Out[15]:
In [16]:
gg(g4)
Out[16]:
In [17]:
show_christoffel_symbols(g4)
In [18]:
G, M, c = symbols('G M c')
coords = (x0, x1, x2, x3) = symbols("t r theta phi")
g = Matrix([
[ (1-(2*G*M)/(x1*c**2)), 0, 0, 0 ],
[ 0, - (1-(2*G*M)/(x1*c**2))**(-1), 0, 0 ],
[ 0, 0, - x1**2, 0 ],
[ 0, 0, 0, - x1**2*sin(x2)**2 ]
])
schwarzschild = Ga('e', g=g, coords=coords, norm=False)
In [19]:
# NBVAL_IGNORE_OUTPUT
schwarzschild.basis
Out[19]:
In [20]:
schwarzschild.g
Out[20]:
In [21]:
schwarzschild.e_sq
Out[21]:
In [22]:
dot_basis_r_basis(schwarzschild)
Out[22]:
In [23]:
gg(schwarzschild)
Out[23]:
In [24]:
show_christoffel_symbols(schwarzschild)
In [ ]: