PDA

View Full Version : Maple 13 tensor package...


Orion1
Jan22-10, 03:17 AM
I attempted to use the Maple 13 'tensor' package to solve the G_{rr}[/tex] component of the Einstein_tensor for a General Relativity generic metric for which the solution is already known.

General Relativity generic metric: (reference 2 - eq. 1)
c^{2} d\tau^{2} = e^{\nu(r)} dt^{2} - e^{\lambda(r)} dr^{2} - r^2 d\theta^{2} - r^2 \sin^2 \theta d\phi^2

I used the exact same source code listed in the Maple 13 software help index and reference 1, except the definitions of the g_{11} and g_{22} matrix elements.
> with(tensor); coord := [t, r, th, ph];
g_compts := array(symmetric, sparse, 1 .. 4, 1 .. 4);
g_compts[1, 1] := exp(nu(r));
g_compts[2, 2] := -exp(lambda(r));
g_compts[3, 3] := -r^2;
g_compts[4, 4] := -r^2*sin(th)^2;
g := create([-1, -1], eval(g_compts));
ginv := invert(g, 'detg');
D1g := d1metric(g, coord);
D2g := d2metric(D1g, coord);
Cf1 := Christoffel1(D1g);
RMN := Riemann(ginv, D2g, Cf1);
RICCI := Ricci(ginv, RMN);
RS := Ricciscalar(ginv, RICCI);
Estn := Einstein(g, RICCI, RS)

The Maple 13 'tensor' package generated this solution for the [itex]G_{rr} component:
G_{rr} = \frac{- r \nu'(r) + e^{\lambda(r)} - 1}{r^2}

However, the correct solution is: (reference 2 - eq. 4)
G_{rr} = \frac{e^{-\lambda(r)} (-r \nu'(r) + e^{\lambda(r)} - 1)}{r^2}

Can anyone here identify any algorithmic error in my source code?

Reference:
tensor(Einstein) - compute the covariant components of the Einstein tensor (http://www.maplesoft.com/support/help/AddOns/view.aspx?path=tensor/Einstein)
On Massive Neutron Cores - Krori and Borgohain (www.new.dli.ernet.in/rawdataupload/upload/insa/INSA_2/20005a87_195.pdf)

Orion1
Jan25-10, 05:44 AM
Schwarzschild metric: (reference 2 - eq. 1)
c^{2} d\tau^{2} = e^{\nu(r)} dt^{2} - e^{\lambda(r)} dr^{2} - r^2 d\theta^{2} - r^2 \sin^2 \theta d\phi^2

Mathematica 'Einsteintensor' package source code:
ToFileName[{$TopDirectory, "AddOns", "Applications"}]
<< einsteintensor.m
x = {t, r, \[Theta], \[Phi]}
(metric = {{\[ExponentialE]^\[Nu][r]*c^2, 0, 0,
0}, {0, -\[ExponentialE]^\[Lambda][r], 0, 0}, {0, 0, -r^2,
0}, {0, 0, 0, -r^2*Sin[\[Theta]]^2}}) // MatrixForm
Simplify[(Einstein =
Inverse[metric].Simplify[EinsteinTensor[metric, x]]) //
MatrixForm]

Mathematica 6 'Einsteintensorr' package generated this solution for the G_{11} component:
G_{11} = \frac{e^{-\lambda} (-r \nu' + e^{\lambda} - 1)}{r^2}

According to reference 2 - eq. 4, the solution solution for the G_{11} component:
G_{11} = \frac{e^{-\lambda} (r \nu' - e^{\lambda} + 1)}{r^2}

Which package is generating the correct solution?

Reference:
Calculating the Einstein_Tensor - Wolfram (http://library.wolfram.com/infocenter/MathSource/162/)
On Massive Neutron Cores - Krori and Borgohain (http://www.new.dli.ernet.in/rawdataupload/upload/insa/INSA_2/20005a87_195.pdf)

Orion1
Jan27-10, 09:35 AM
(* Package written by
Pekka Janhunen
Finnish Meteorological Institute
Geophysics Dept. *)

BeginPackage["EinsteinTensor`"]

EinsteinTensor::usage = "EinsteinTensor[g,x] with g a nxn-matrix
(the metric with lower indices) and x n-vector (the coordinates)
gives the Einstein tensor (a nxn-matrix) with lower indices."

Begin["`Private`"]

EinsteinTensor[metric_,x_]:=
Block[ {Dim,Metric, PreChristoffel, Christoffel, Riemann,
PreRiemann, Ricci, CurvatureScalar,
sigma, mu, nu, alpha, beta, gamma},
Dim = Length[x];
Metric = Simplify[Inverse[metric]];
(* Metric with upper indices *)
PreChristoffel =
Table[ D[metric[[gamma,alpha]],x[[beta]]]
+ D[metric[[beta,gamma]],x[[alpha]]]
- D[metric[[alpha,beta]],x[[gamma]]],
{gamma,Dim}, {alpha,Dim}, {beta,Dim} ];
(* The "lower index part" of Christoffel symbols *)
PreChristoffel = Simplify[PreChristoffel];
Christoffel = (1/2) Metric . PreChristoffel;
(* The full Christoffel symbols *)
Christoffel = Simplify[Christoffel];
PreRiemann =
Table[ D[Christoffel[[sigma,alpha,nu]],x[[mu]]]
+ Sum[Christoffel[[gamma,alpha,nu]]
Christoffel[[sigma,gamma,mu]],
{gamma,Dim} ],
{sigma,Dim}, {alpha,Dim}, {mu,Dim}, {nu,Dim} ];
(* PreRiemann has to be antisymmetrized to yield
Riemann tensor: *)
Riemann = Table[ PreRiemann[[sigma,alpha,mu,nu]]
- PreRiemann[[sigma,alpha,nu,mu]],
{sigma,Dim}, {alpha,Dim},
{mu,Dim}, {nu,Dim} ];
Ricci = Table[ Sum[Riemann[[sigma,alpha,sigma,beta]],
{sigma,Dim}],
{alpha,Dim}, {beta,Dim} ];
CurvatureScalar = Sum[ Metric[[alpha,beta]]
Ricci[[alpha,beta]],
{alpha,Dim}, {beta,Dim} ];
(* Return Einstein tensor: *)
Ricci - (1/2) CurvatureScalar metric ]

End[]

EndPackage[]

Print[{EinsteinTensor}]

The output appears to be in the form:
G^i_j

G^1_1 = g^{1i}G_{1i} = g^{11}G_{11}

The Mathematica 6 'Einstein Tensor' package generated this solution for the G^i_j component:
G^1_1} = \frac{e^{-\lambda} (-r \nu' + e^{\lambda} - 1)}{r^2}

The correct G^1_1 component is:
G^1_1} = - \frac{e^{- \lambda} (-r {\nu}' + e^{\lambda} - 1)}{r^2}

Reference:
Calculating the Einstein_Tensor - Wolfram (http://library.wolfram.com/infocenter/MathSource/162/)

Orion1
Jan28-10, 03:04 PM
Mathematica Ricci tensor:
R_{ab} = R^c_{acb}

Maple Ricci tensor:
R_{ac} = R^b_{acb}

Package criteria:
R^{Mathematica} = -R^{Maple}

G^{Mathematica}_{ij} = - G^{Maple}_{ij}

The different signs are due to the use of different Ricci tensors.

Mathematica generated output:
G^1_1 = g^{1i}G_{1i}=g^{11}G_{11} = -e^{-\lambda}\frac{ r{\nu}' - e^{\lambda} + 1}{r^2} = \frac{e^{-\lambda} (-r{\nu}'+ e^{\lambda} - 1)}{r^2}

Maple generated output:
G_{11} = \frac{- r \nu' + e^{\lambda} - 1}{r^2}