(* Koordinatenvektor *)

x = {theta, phi};
dim = 2;

(* Die nachfolgende Symbole habe als Argumente die Indizes.
Dabei werden in der Namensgebung kontravariante Indizes mit U (up)
und kovariante Indizes mit D (down) bezeichnet.*)

(* Metrischer Tensor: *)
    
    
(* (a) beide Indizes kovariant *)

gmetDD = {{a^2, 0}, {0, a^2 Sin[theta]^2}};

(* (b) beide Indizes kontravariant = Inverse Matrix *)
gmetUU = Inverse[gmetDD];

(* (c) gemischt e Indizes; das muss eine Einheitsmatrix sein. *)

gmetUD = gmetUU.gmetDD

(* Definiton der Christoffel-Symbole: *)

GamSymDDD[mu_, alpha_, beta_] := 
    (1/2)(D[gmetDD[[mu, alpha]], x[[beta]]] + 
          D[gmetDD[[mu, beta]], x[[alpha]]] - 
          D[gmetDD[[alpha, beta]], x[[mu]]]);
          
(* Ein Index wird kontravariant gemacht: *)

GamSymUDD[mu_, alpha_, beta_] := 
    Sum[gmetUU[[mu, nu]]GamSymDDD[mu, alpha, beta], {nu, 1, dim}];

(* Riemannscher Krümmungstensor: wird aus den Christoffel-Symbolen
durch Ableitunge berechnet. *)

RiemannUDDD[mu_, nu_, alpha_, beta_] := 
    D[GamSymUDD[mu, nu, beta], x[[alpha]]] - 
    D[GamSymUDD[mu, nu, alpha], x[[beta]]] + 
    Sum[GamSymUDD[mu, rho, alpha]GamSymUDD[rho, nu, beta], {rho, 1, dim}] - 
    Sum[GamSymUDD[mu, rho, beta]GamSymUDD[rho, nu, alpha], {rho, 1, dim}];

RiemannUUDD[mu_, nu_, alpha_, beta_] := 
  Simplify[Sum[gmetUU[[nu, rho]] RiemannUDDD[mu, rho, alpha, beta], 
  {rho, 1, dim}]];
          
(* Die Krümmung R ist dann die erneute Verjüngung. *)

Rscal = Simplify[Sum[RicciUD[mu, mu], {mu, 1, dim}]]

(* Das Ergebnis müsste 2/a^2 ergeben haben!*)
    
(* Die Krümmung R ist dann die erneute Verjüngung. *)

Rscal = Simplify[Sum[RicciUD[mu, mu], {mu, 1, dim}]]

(* Das Ergebnis müsste 2/a^2 ergeben haben!*)
   
(* Daraus berechnen wir durch Verjüngung den Ricci-Tensor: *)

RicciUD[mu_, nu_] := 
    Simplify[Sum[RiemannUUDD[alpha, mu, alpha, nu], {alpha, 1, dim}]];
    
(* Die Krümmung R ist dann die erneute Verjüngung. *)

Rscal = Simplify[Sum[RicciUD[mu, mu], {mu, 1, dim}]]

(* Das Ergebnis müsste 2/a^2 ergeben haben!*)
