(* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| *)
(*  Mathematica Syntax | EINSTEIN-MAXWELL TENSOR+GEODESIC SOLVER | geodesics.yukterez.net *)
(* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| *)

smp[y_]:=FullSimplify[FullSimplify[y, Reals],r>0&&0<θ<π/2&&M₀>M[u]>0&&t>0];
list[y_]:=y[[1]]==y[[2]];
rplc[y_]:=y;
                                                      (* kovariante metrische Komponenten *)
g11=guu=1-2 M[u]/r;
g22=grr=0;
g33=gθθ=-(r^2);
g44=gφφ=-(r^2)((Sin[θ])^2);
g12=-1;
g13=g14=g23=g24=g34=0;

                                                      (* Dimensionen, Funktionen *)
x={u, r, θ, φ}; n=4;

"Metrischer Tensor"
mt=smp[{
{g11, g12, g13, g14},
{g12, g22, g23, g24},
{g13, g23, g33, g34},
{g14, g24, g34, g44}
}];
Subscript["g", μσ] -> MatrixForm[mt]
it=Simplify[smp[Inverse[mt]]];
"g"^μσ -> MatrixForm[it]
mx=Table[smp[Sum[
it[[i, k]] mt[[k, j]], {k, 1, n}]],
{i, 1, n}, {j, 1, n}];
Subsuperscript["g", "μ", "σ"] -> MatrixForm[mx]
md=Det[mt]; "|g|" -> smp[md]

"Maxwell Tensor"
A={0,0,0,0};
F=ParallelTable[smp[((D[A[[j]],x[[k]]]-D[A[[k]],x[[j]]]))],{j,1,n},{k,1,n}];
Subscript["F",μσ]->MatrixForm[F]
f=smp[ParallelTable[Sum[it[[i,k]] it[[j,l]] F[[k,l]],{k,1,n},{l,1,n}],{i,1,n},{j,1,n}]];
"F"^μσ->MatrixForm[f]
џ=ParallelTable[smp[Sum[it[[i,k]] F[[k,j]],{k,1,n}]],{i,1,n},{j,1,n}];
Subsuperscript["F","μ","σ"]->MatrixForm[џ]

"Christoffelsymbole"
chr=ParallelTable[smp[(1/2)Sum[(it[[i, s]])
(D[mt[[s, j]], x[[k]]]+D[mt[[s, k]], x[[j]]] -D[mt[[j, k]], x[[s]]]), {s, 1, n}]],
{i, 1, n}, {j, 1, n}, {k, 1, n}];
crs=ParallelTable[If[UnsameQ[chr[[i,j,k]],0],{Subsuperscript["Γ",
ToString[j]<>ToString[k],i]->chr[[i,j,k]]}],{i,1,n},{j,1,n},{k,1,j}];
TableForm[DeleteCases[Flatten[crs],Null]]

"gemischter Riemann Tensor"
rmn=ParallelTable[smp[
D[chr[[i, j, l]], x[[k]]] - D[chr[[i, j, k]], x[[l]]] +
Sum[chr[[s, j, l]] chr[[i, k, s]] -
chr[[s, j, k]] chr[[i, l, s]],
{s, 1, n}]], {i, 1, n}, {j, 1, n}, {k, 1, n}, {l, 1, n}];
rie=ParallelTable[If[UnsameQ[rmn[[i,j,k,l]],0],
{Subsuperscript["R",ToString[j]<>ToString[k]<>ToString[l],i]->rmn[[i,j,k,l]]}],
{i,1,n},{j,1,n},{k,1,n},{l,1,k-1}];
TableForm[DeleteCases[Flatten[rie],Null]]
(* kovarianter Riemann Tensor *)
rcv=ParallelTable[Sum[mt[[i, j]] rmn[[j, k, l, m]], {j, 1, n}],
{i, 1, n}, {k, 1, n}, {l, 1, n}, {m, 1, n}];
(* kontravarianter Riemann Tensor *)
rcn=ParallelTable[Sum[it[[m, i]] it[[h, j]] it[[o, k]] it[[p, l]] rcv[[i, j, k, l]],
{i, 1, n}, {j, 1, n}, {k, 1, n}, {l, 1, n}],
{m, 1, n}, {h, 1, n}, {o, 1, n}, {p, 1, n}];

"Ricci Tensor"
rcc=ParallelTable[smp[Sum[rmn[[i,j,i,l]],{i,1,n}]],{j,1,n},{l,1,n}];
Subscript["Ř",μσ]->MatrixForm[rcc]
ric=ParallelTable[smp[Sum[it[[i,k]] it[[j,l]] rcc[[k,l]],{k,1,n},{l,1,n}]],{i,1,n},{j,1,n}];
"Ř"^μσ->MatrixForm[ric]
rck=ParallelTable[smp[Sum[it[[i,k]] rcc[[k,j]],{k,1,n}]],{i,1,n},{j,1,n}];
Subsuperscript["Ř","μ","σ"]->MatrixForm[rck]

"Ricci Skalar"
Ř=smp[Sum[it[[i, j]] rcc[[i, j]], {i, 1, n}, {j, 1, n}]]; "Ř"->Ř

"Kretschmann Skalar"
krn= Sum[rcv[[i, j, k, l]] rcn[[i, j, k, l]],
{i, 1, 4}, {j, 1, n}, {k, 1, n}, {l, 1, n}];
"K"->smp[krn]

"Einstein Tensor"
est=smp[rcc-Ř mt/2];
Subscript["G",μσ]->MatrixForm[est]
ein=ParallelTable[smp[Sum[it[[i,k]] it[[j,l]] est[[k,l]],{k,1,n},{l,1,n}]],{i,1,n},{j,1,n}];
"G"^μσ->MatrixForm[ein]
esm=ParallelTable[smp[Sum[it[[i,k]] est[[k,j]],{k,1,n}]],{i,1,n},{j,1,n}];
Subsuperscript["G","μ","σ"]->MatrixForm[esm]

"Stress Energie Impuls Tensor"
set=smp[est/8/π];
Subscript["T",μσ]->MatrixForm[set]
sei=ParallelTable[smp[Sum[it[[i,k]] it[[j,l]] set[[k,l]],{k,1,n},{l,1,n}]],{i,1,n},{j,1,n}];
"T"^μσ->MatrixForm[sei]
sem=ParallelTable[smp[Sum[it[[i,k]] set[[k,j]],{k,1,n}]],{i,1,n},{j,1,n}];
Subsuperscript["T","μ","σ"]->MatrixForm[sem]

"Bewegungsgleichungen"
geo=smp[Table[-Sum[
chr[[i, j, k]] x[[j]]' x[[k]]'+q f[[i, k]] x[[j]]' mt[[j, k]],
{j, 1, n}, {k, 1, n}], {i, 1, n}]];

equ=Table[{x[[i]]''==smp[rplc[geo[[i]]]]}, {i, 1, n}];

geodesic1=equ[[1]][[1]]
geodesic2=equ[[2]][[1]]
geodesic3=equ[[3]][[1]]
geodesic4=equ[[4]][[1]]

"kovarianter Viererimpuls"
p[μ_]:=-(Sum[mt[[μ, ν]]*x[[ν]]', {ν, 1, n}]+q A[[μ]]);
pu->rplc[smp[p[1]]]
pr->rplc[smp[p[2]]]
pθ->rplc[smp[p[3]]]
pφ->rplc[smp[p[4]]]

(* Koordinatentransformation *)

ř[r_]:=r+rs Log[r/rs-1]; "ř"->ř[r]

"dř/dr"->Simplify[ř'[r], rs>0&&r>rs]

u[t_,r_]:=t+ř[r]; "u"->u[t,r]

"du/dt"->Simplify[D[u[t,r], t], rs>0&&r>rs]

"du/dr"->Simplify[D[u[t,r], r], rs>0&&r>rs]

t[u_,r_]:=u-ř[r]; "t"->t[u,r]

"dt/du"->Simplify[D[t[u,r], u], rs>0&&r>rs]

"dt/dr"->Simplify[D[t[u,r], r], rs>0&&r>rs]

rs=2 M[u]