from sympy import *
from galgebra.printer import Format, latex, Fmt, GaLatexPrinter
Format()
from galgebra.ga import Ga
from galgebra.mv import ONE, ZERO, HALF
def dot_basis_r_basis(ga):
return [ga.dot(ga.basis[i], ga.r_basis[i]) for i in ga.n_range]
def gg(ga):
return simplify(ga.g * ga.g_inv)
def conv_christoffel_symbols(cf):
return permutedims(Array(cf), (2, 0, 1))
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)))
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)
# NBVAL_IGNORE_OUTPUT
minkowski.basis
minkowski.g
dot_basis_r_basis(minkowski)
gg(minkowski)
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)
g4.basis
g4.g
g4.e_sq
dot_basis_r_basis(g4)
gg(g4)
show_christoffel_symbols(g4)
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)
# NBVAL_IGNORE_OUTPUT
schwarzschild.basis
schwarzschild.g
schwarzschild.e_sq
dot_basis_r_basis(schwarzschild)
gg(schwarzschild)
show_christoffel_symbols(schwarzschild)