/* Ableiten der Schwarzschild-Metrik aus den Bedingungen:
Eine statische (= alle Metrikkoeffizienten sind zeitunabhängig) Raumzeit (Signatur = (-,+,+,+)) auf dem R^4,
 die invariant unter räumlichen Rotationen ist 
 und die Einsteinvakuumgleichungen (Ric=0) erfüllt.
*/

/*  Parametrisierung der Kugel durch Kugelkoordinaten */
x: cos(theta[1])*cos(theta[2]);
y: cos(theta[1])*sin(theta[2]);
z: sin(theta[1]);
F:[x,y,z];

/* Berechnen der induzierten Metrik*/
g[i,j]:= diff(F, theta[i]).diff(F, theta[j]);

/* Gibt die zugehörige Matrix der induzierten Metrik  aus
-- trigsimp performs simplifications that use the Pythagorean identity
-- genmatrix (a, i_2, j_2, i_1, j_1): Generiert eine Matrix aus einem Array a. 
Das erste Element der Matrix ist der Wert a[i_1,j_1] und das letzte Element der Matrix ist a[i_2,j_2]. 
*/
A:trigsimp(genmatrix(g,2,2,1,1));

/* Ansatz: Statische Metrik in R^4 mit Rotationssymmetrie
-- h1 und h2 sollen Funktionen von r sein
*/

depends([h1, h2],r);
dependencies;

lg: matrix ([-h1(r), 0,0,0], [0, h2(r),0,0], [0,0, r^2*A[1,1], r^2*A[1,2]], [0,0, r^2*A[2,1], r^2*A[2,2]]);

/* Setzt ug auf die inverse Matrix von lg*/
ug:invert(lg);

/* Laden des ctensor-Pakets - das ist ein Paket zum Manipulieren von Tensoren (wie Metrik, Krümmungstensor...)
Ableitung unter http://maxima.sourceforge.net/docs/manual/maxima_26.html
-- ausserdem uebergben wir die Dimension und die Koordinaten */
load(ctensor);
dim:4;
ct_coords:[t,r,theta[1], theta[2]];

/*Ricci tensor (es werden nur die Komponenten ungleich 0 angezeigt)*/

uricci(1);

/* uric[3,3]=uric[4,4], Ziel alle uric[i,j]=0*/;

/* also auch: uric[1,1]-uric[2,2]=0*/
expand(-r*h2(r)^2*h1(r)*(uric[1,1]-uric[2,2]));

/* 0 = d(h1*h2)/dr  -- also h2=a/h1 für eine Konstante a*/
e1:subst(a/h1(r), h2(r), uric[1,1]);
e2:subst(a/h1(r), h2(r), uric[2,2]);
e3:subst(a/h1(r), h2(r), uric[3,3]);

ev(e1, nouns); 
/* nouns vs. verbs see: http://maxima.sourceforge.net/docs/manual/maxima_6.html#Item_003a-Nouns-and-Verbs*/;

/* nounify und zusammenfassen */
f1:expand(ev(e1, nouns));
f2:expand(ev(e2, nouns));
f3:expand(ev(e3, nouns));

/*ode2 kann ODEs zweiter Ordnung lösen*/;
ode2(r^2*f3=0, h1(r),r);

z1:subst((b+a*r)/r, h1(r), f1);
z2:subst((b+a*r)/r, h1(r), f2);
z3:subst((b+a*r)/r, h1(r), f3);

expand(ev(z1, nouns));
expand(ev(z2, nouns));
expand(ev(z3, nouns));

/* Also ist die allgemeine Metrik:
-(a+b/r)*dt^2 +1/(a+b/r)*dr^2 + r^2 Metrik(S^2)*/;

/* a entspricht der Lichtgeschwindigkeit c:
sieht man, wenn man sich lichtartige Geodäten für die asymptotische Metrik (r\to infty) anschaut:
\gamma: \tau \mapsto (\tau , c\tau, 0,0) ist lichtartig für c^2=a^2*/;

/* b=-r_S der Schwarzschildradius 
für r_S=0 kommt wieder die Minkowskimetrik raus,
r_S\in (0, infty) ist die Schwarzschild-Metrik,
und r_S <0  ? -> 
*/