Elementary rudiments of GRTensorII:

This is a brief introduction only. For more interesting examples consult the demonstrations page on the Web.

For more detailed information consult the help pages and Release Notes.

The following (optional) line allows the worksheet to be re-executed.

> restart:

We now load the GRTensorII package:

> grtw():

`GRTensorII Version 1.79 (R6)`

`6 February 2001`

`Developed by Peter Musgrave, Denis Pollney and Kay...

`Copyright 1994-2001 by the authors.`

`Latest version available from: http://grtensor.phy...

The current environment can be checked as follows:

> groptions();

grOptionAlterSize = false

grOptionCoordNames = true

grOptionDefaultSimp = 8

grOptionDisplayLimit = 5000

grOptionLLSC = true

grOptionMetricPath = `e:/Grtii(6)/Metrics`

grOptionqloadPath = (not assigned)

grOptionTermSize = 100

grOptionTrace = false

grOptionTimeStamp = true

grOptionVerbose = false

grOptionWindows = true

grOptionDefaultSimp values: 0=None, 1=simplify, 2=simplify[trig],

3=simplify[power] 4=simplify[hypergeom], 5=simplify[radical],

6=expand, 7=factor, 8=normal, 9=sort, 10=simplify[sqrt]

11=simplify[trigsin]

We now use makeg to create a file (schwarz) which is the Schwarzschild exterior metric in curvature coordinates. Here we choose to enter the line

element directly:

> makeg(schwarz);

Makeg 2.0: GRTensor metric/basis entry utility

To quit makeg, type 'exit' at any prompt.

Do you wish to enter a 1) metric [g(dn,dn)],

2) line element [ds],

3) non-holonomic basis [e(1)...e(n)], or

4) NP tetrad [l,n,m,mbar]?

makeg> 2;

2

makeg> [r,theta,phi,t];

[r, theta, phi, t]

makeg> d[r]^2/(1-2*m/r)+r^2*(d[theta]^2+sin(theta)^2*d[phi]^2)-(1-2*m/r)*d[t]^2;

d[r]^2/(1-2*m/r)+r^2*(d[theta]^2+sin(theta)^2*d[phi...

makeg> {};

{}

makeg> 5;

5

> The Schwarzschild exterior metric in curvature coordinates;

`The values you have entered are:`

Coordinates = [r, theta, phi, t]

`Metric:`

g[a]*``[b] = matrix([[1/(1-2*m/r), 0, 0, 0], [0, r^...

You may choose to 0) Use the metric WITHOUT saving it,

1) Save the metric as it is,

2) Correct an element of the metric,

3) Re-enter the metric,

4) Add/change constraint equations,

5) Add a text description, or

6) Abandon this metric and return to Maple.

makeg> 1;

1

We choose not to load it so as to demonstrate the loading procedure.

makeg> 0;

0

We now load the metric we have created:

> qload(schwarz);

`Default spacetime` = schwarz

`For the schwarz spacetime:`

Coordinates

x(up)

`x `^a = vector([r, theta, phi, t])

`Line element`

` ds`^2 = ` d`*r^`2 `/(1-2*m/r)+r^2*` d`*theta^`2 `...

`The Schwarzschild exterior metric in curvature coo...

To see what objects are predefined, load the help library (?grtensor; for information on the help system, readlib(griihelp); to load the help library) and do ?grt_objects;. Here we calculate and display (grcalcd) the covariant Ricci tensor (R(dn,dn)) and Kretschmann scalar (RiemSq).

> grcalcd(R(dn,dn),RiemSq);

Created definition for R(dn,dn,up,up)

`CPU Time ` = .201

`For the schwarz spacetime:`

`Covariant Ricci`

R(dn,dn)

`R `[a]*``[b] = `All components are zero`

`Full Contraction of Riemann`

`K ` = 48*m^2/(r^6)

Normally you would not want to display an object without further simplification (see below).

Let us use the definition facility (grdef) to define the covariant Einstein tensor:

> grdef(`E{a b}:=R{a b}-Ricciscalar*g{a b}/2`);

This object is already defined. The new definition has been ignored.

Notice that the attempt was ignored because the 2-tensor "E" is predefined. (It is the"electric part" of the Weyl tensor, described in ?grt_operators;). Let's use "En":

> grdef(`En{a b}:=R{a b}-Ricciscalar*g{a b}/2`);

Created definition for En(dn,dn)

Now let us ask for the mixed components. The definition for these is created automatically:

> grcalcd(En(dn,up));

Created definition for En(dn,up)

`CPU Time ` = .70e-1

`For the schwarz spacetime:`

`En(dn,up)`

En(dn,up)

En[a]^b = `All components are zero`

Spacetimes which are implicitly defined are handled by the application of constraints. Consider the Kruskal-Szekeres metric:

> qload(krn);

`Default spacetime` = krn

`For the krn spacetime:`

Coordinates

x(up)

`x `^a = vector([u, v, theta, phi])

`Line element`

` ds`^2 = -16*m^2*(2*m-r(u,v))*` d`*u^` `*`d `*v^` ...

Constraints = [diff(r(u,v),u) = -2*m*(2*m-r(u,v))/(...

`    Null form of Kruskal metric    `

Since objects calculated for this metric must be simplified (at least by the application of constraints) we calculate some objects without displaying them (grcalc):

> grcalc(R(dn,dn),RiemSq);

`CPU Time ` = .101

To simplify the objects we apply gralter. If no routine is given, a menu of options is given as shown below. Refer to the help on gralter. The argument _ is shorthand for the previous objects (in this case R(dn,dn) and RiemSq).

> gralter(_);

Component simplification of a GRTensorII object:

(use ?name for help on a particular simplification routine)

Choose which routine to apply:

0) none

1) simplify() try all simplification techniques

2) simplify[trig] apply trig simplification

3) simplify[power] simplify powers, exp and ln

4) simplify[hypergeom] simplify hypergeometric functions

5) simplify[radical] convert radicals,log,exp to canonical form

6) expand()

7) factor()

8) normal()

9) sort()

10) simplify[sqrt,symbolic] allows sqrt(r^2) = r

11) simplify[trigsin] trig simp biased to sin

12) Apply constraint equations

13) Apply constraints repeatedly

14) other user specified routine

Number of routine to apply (followed by ;) >

gralter> 13;

13

We now display the objects:

> grdisplay(_);

`For the krn spacetime:`

`Covariant Ricci`

R(dn,dn)

`R `[a]*``[b] = `All components are zero`

`Full Contraction of Riemann`

`K ` = 48*m^2/(r(u,v)^6)

Let us now do a basis calculation. We use a covariant basis here:

> qload(schwb);

`Default spacetime` = schwb

`For the schwb spacetime:`

Coordinates

x(up)

`x `^a = vector([r, theta, phi, t])

`Basis inner product`

eta(bup,bup)

eta^`(a)`*``^`(b)` = matrix([[-1, 0, 0, 0], [0, -1,...

`Basis (covariant components)`

w1(dn)

omega1[a] = vector([sqrt(r)/(sqrt(r-2*m)), 0, 0, 0]...

w2(dn)

omega2[a] = vector([0, r, 0, 0])

w3(dn)

omega3[a] = vector([0, 0, r*sin(theta), 0])

w4(dn)

omega4[a] = vector([0, 0, 0, sqrt(r-2*m)/(sqrt(r))]...

`    Schwarzschild basis   `

The basis components are distinguished by the prefix b. For example, let's calculate the mixed basis components of the Weyl tensor:

> grcalc(C(bdn,bdn,bup,bup));

Created definition for C(bdn,bdn,bup,bup)

Created definition for rot(bdn,bup,bdn)

Created a definition for e(bdn,dn,pdn)

`CPU Time ` = .200

> grdisplay(_);

`For the schwb spacetime:`

`C(bdn,bdn,bup,bup)`

C[`(1) (2)`]*``^`(1) (2)` = m/(r^3)

C[`(1) (3)`]*``^`(1) (3)` = m/(r^3)

C[`(1) (4)`]*``^`(1) (4)` = -2*m/(r^3)

C[`(2) (3)`]*``^`(2) (3)` = -2*m/(r^3)

C[`(2) (4)`]*``^`(2) (4)` = m/(r^3)

C[`(3) (4)`]*``^`(3) (4)` = m/(r^3)

The Newman-Penrose formalism can be used from a contravariant or a covariant null tetrad. We start with the contravariant tetrad:

> qload(npschw);

`Default spacetime` = npschw

`For the npschw spacetime:`

Coordinates

x(up)

`x `^a = vector([r, theta, phi, t])

`Basis inner product`

eta(bup,bup)

eta^`(a)`*``^`(b)` = matrix([[0, 1, 0, 0], [1, 0, 0...

`Null tetrad (contravaraint components)`

NPl(up)

l^a = vector([1/2*sqrt(2)/(sqrt(r/(r-2*m))), 0, 0, ...

NPn(up)

n^a = vector([-1/2*sqrt(2)/(sqrt(r/(r-2*m))), 0, 0,...

NPm(up)

m^a = vector([0, 1/2*sqrt(2)/r, 1/2*I*sqrt(2)/(r*si...

NPmbar(up)

mbar^a = vector([0, 1/2*sqrt(2)/r, -1/2*I*sqrt(2)/(...

`    Contravariant NPtetrad for the Schwarzschild m...

Let's calculate the Ricci scalars:

> grcalcd(RicciSc);

`Basis/tetrad related object definitions`

`Last modified 23 January 2001`

`CPU Time ` = .401

`For the npschw spacetime:`

`Ricci Scalar, Phi00`

Phi00 = 0

`Ricci Scalar, Phi01`

Phi01 = 0

`Ricci Scalar, Phi02`

Phi02 = 0

`Ricci Scalar, Phi11`

Phi11 = 0

`Ricci Scalar, Phi12`

Phi12 = 0

`Ricci Scalar, Phi22`

Phi22 = 0

`NPLambda := Ricci Scalar/24`

NPLambda = 0

From a covariant tetrad let us calculate the Petrov type:

> qload(npcschw);

`Default spacetime` = npcschw

`For the npcschw spacetime:`

Coordinates

x(up)

`x `^a = vector([r, theta, phi, t])

`Basis inner product`

eta(bup,bup)

eta^`(a)`*``^`(b)` = matrix([[0, 1, 0, 0], [1, 0, 0...

`Null tetrad (covariant components)`

NPl(dn)

l[a] = vector([-1/2*r*sqrt(2)/((r-2*m)*sqrt(r/(r-2*...

NPn(dn)

n[a] = vector([1/2*r*sqrt(2)/((r-2*m)*sqrt(r/(r-2*m...

NPm(dn)

m[a] = vector([0, -1/2*r*sqrt(2), -1/2*I*r*sin(thet...

NPmbar(dn)

mbar[a] = vector([0, -1/2*r*sqrt(2), 1/2*I*r*sin(th...

`   Covariant NPtetrad for the Schwarzschild metric...

> grcalcd(Petrov);

`CPU Time ` = .90e-1

`For the npcschw spacetime:`

`Petrov Type`

`Petrov Type ` = `D (or simpler)`

Since we were not careful to ensure that the Weyl scalars were in fully simplifed form, we ask for a report:

> PetrovReport();

`The conclusion 'Petrov type = D (or simpler)'`

`for the npcschw metric`

`was based on the following results:`

`Weyl scalar Psi0` = 0

`Weyl scalar Psi1` = 0

`Weyl scalar Psi2 could not be evaluated to zero.`

`Weyl scalar Psi3` = 0

`Weyl scalar Psi4` = 0

`---> Therefore the metric is Petrov D (or simpler)...

`--------------------------------------------------...

`The quantities that could not be evaluated to zero...

`Weyl scalar Psi2` = -m/(r^3)

Notice that we have 5 spacetimes active in this session (schwarz, krn, schwb, npschw, npcschw). The current default is npcschw (the last one loaded). We can calculate an object for any one of the spacetimes (e.g. the Weyl invariant W1R for krn)

> grcalc(W1R[krn]);

Scalar invariant library.

Last modified 25 March 1997.

`CPU Time ` = .190

> gralter(_,13);

Component simplification of a GRTensorII object:

Applying routine `Apply constraints repeatedly` to object W1R

`CPU Time ` = .20e-1

> grdisplay(_);

`For the krn spacetime:`

`CM invariant Re(W1)`

`W1R ` = 6*m^2/(r(u,v)^6)

Let us load another implicit form of the metric

> qload(israel);

`Default spacetime` = israel

`For the israel spacetime:`

Coordinates

x(up)

`x `^a = vector([u, w, theta, phi])

`Line element`

` ds`^2 = 1/2*w^2*` d`*u^`2 `/(m*r(u,w))+2*` d`*u^`...

Constraints = [r(u,w) = 2*m+1/4*u*w/m]

`Israel coordinates (Phys. Rev. 143,1016)`

We define a differential invariant:

> grdef(`DiRiem:=R{a b ^c ^d ; e}*R{c d ^a ^b ; ^e}`);

Created a definition for R(dn,dn,up,up,cdn)

Created a definition for R(dn,dn,up,up,cdn)

Created definition for R(dn,dn,up,up,cup)

Created definition for DiRiem

> grcalc(DiRiem);

`CPU Time ` = .250

> gralter(_,13);

Component simplification of a GRTensorII object:

Applying routine `Apply constraints repeatedly` to object DiRiem

`CPU Time ` = .20e-1

> grdisplay(_);

`For the israel spacetime:`

DiRiem

DiRiem = 47185920*m^10*u*w/((8*m^2+u*w)^9)

Notice that the invariant vanishes at u=0 (r(0,w)=2m), a property of this object that holds more generally.

Whereas we have interactively defined this invariant here, it is also predefined in the differential invariants library dinvar as diRiem. Do grlib(dinvar); to load the library.

We can also change the default spacetime with grmetric. Let's go back to schwarz and CREATE a null tetrad:

> grmetric(schwarz);

Default metric is now schwarz.

> nptetrad([r,t]);

The metric signature of the schwarz spacetime is +2.

In order to create an NP-tetrad, the signature of g(dn,dn) will be changed to -2.

Continue? (1=yes [default], other=no) :

nptetrad> 1;

1

The situation here (in Schwarzschild) is unusually simple. The basis vectors would normally require further simplification for efficient use.

>