Vous êtes sur la page 1sur 12

REVISTA MEXICANA DE F

ISICA S 53 (4) 159170 AGOSTO 2007


Denci on y c alculo de tensores mediante el paquete GRTensor
R.A. Sussman
Instituto de Ciencias Nucleares, Universidad Nacional Aut onoma de M exico,
Circuito Exterior, C.U., M exico D.F., 04510, M exico,
e-mail: sussman@nucleares.unam.mx,
http://www.nuclecu.unam.mx/ sussman
Recibido el 1 de mayo de 2006; aceptado el 1 de noviembre de 2006
El paquete GRTensor permite denir, calcular y manipular tensores de rango y dimensi on arbitrarios, a partir de las componentes de una
m etrica dada en una base de coordenadas o mediante bases de t etradas arbitrarias. Presentamos en el presente trabajo algunas aplicaciones
b asicas de dicho paquete a la denicion y evaluaci on de objetos tensoriales de uso com un en Relatividad General, considerando para este
objetivo ejemplos sencillos e ilustrativos.
Descriptores:

Algebra computacional; relatividad general; tensores.
The package GRTensor allows one to dene, calculate and manipulate tensors of arbitrary range and dimension from the components of a
metric, either in a coordinate basis or tetrad. By considering simple and instructive examples we implement basic applications of this package
to dene and compute tensorial objects of common usage in General Relativity.
Keywords: Computer algebra; general relativity; tensors.
PACS: 95.30.Lz; 95.30.Sf; 98.80-k
1. Introducci on
Los objetos tensoriales de rango diverso son de gr an impor-
tancia en varias disciplinas de la Fsica Te orica y Matem ati-
cas Aplicadas: Relatividad General, Teora del Medio Con-
tinuo, Termodin amica e Hidrodin amica de Fen omenos de
Transporte, Geometra Diferencial. Debido a la alta comple-
jidad de los algoritmos utilizados, es sumamante util poder
aplicar programas conocidos de c omputo simb olico al c alcu-
lo y manipulaci on de dichos objetos. El presente trabajo ilus-
tra c omo se efect ua esta manipulaci on tensorial en el paquete
GRTensor
i
.
El paquete GRTensor [1] es un m odulo completo de
subrutinas del lenguaje de programaci on interpretado Ma-
ple [2], cuyo prop osito es denir, calcular y manipular ob-
jetos tensoriales de rango y dimensi on arbitrarios. Dichas su-
brutinas corren en el ambiente simb oliconum erico y gr aco
de Maple. Al correr GRTensor en una sesi on de Maple pode-
mos utilizar las instrucciones y comandos pre-existentes en
Maple, sin embargo GRTensor cuenta con instrucciones pro-
pias (diferentes de las de Maple est andar) que llevan a denir
objetos de GRTensor que solo pueden ser operados o modi-
cados por instrucciones de GRTensor.
Es necesario mencionar que, adem as de las versiones pro-
gramadas de GRTensor para Maple, existen versiones pro-
gramadas de GRTensor que corren sobre el paquete Mathe-
matica, en forma muy semejante a como corre sobre Ma-
ple. GRTensor puede ser utilizado en cualquiera de las plata-
formas de hardware compatibles con Maple o Mathematica:
DOS-Windows, AppleMacintosh, IntelLinux, as como en
las principales estaciones de trabajo con sistemas operativos
Unix. Mientras que Maple y Mathematica son paquetes de
software comerciales, GRTensor puede ser descargado de la
red gratuitamente [1].
Al descargar GRTensor, el usuario recibe los archivos bi-
narios que permiten activar las subrutinas del mismo (ya sea
en Maple o en Mathematica
ii
. Junto con estos archivos vie-
ne la documentaci on necesaria para el uso de GRTensor: el
manual (en archivos postscript), un sistema de ayuda en li-
nea en hipertexto, asi como archivos de texto que contienen
las componentes del tensor m etrico de un vasto cat alogo de
espaciotiempos conocidos (los cuales GRTensor deber a car-
gar para denir y calcular tensores).
En lo que resta del presente artculo describimos el fun-
cionamiento de GRTensor, empezando por la instalci on del
mismo, siguiendo por la lectura de una m etrica dada, as co-
mo la denici on, c alculo y manipulaci on de varios tensores
relevantes.
2. Instalaci on y lectura de m etricas
Una vez que recibimos de la red la distribuci on de GRTensor,
el primer paso es el proceso de su instalaci on como m odulo
asociado a Maple. Obviamente, GRTensor requiere que Ma-
ple est e funcionando en la computadora huesped. La docu-
mentaci on que acompa na a GRTensor contiene instrucciones
precisas para la instalaci on del mismo en los sistemas DOS
Windows, IntelLinux y estaciones de trabajo basadas en
Unix. Para su instalaci on en la plataforma AppleMacintosh
(sistemas 9 y anteriores, asi como en MacOSX), sugerimos
que el lector consulte la Ref. 4.
Para denir y calcular tensores arbitrarios GRTensor re-
quiere la especicaci on de un tensor m etrico, ya sea dado en
una base de coordenadas o en una base de vectores. Adem as
de los archivos binarios (extensi on .m), la distrubuci on de
GRTensor que recibimos de la red contiene un archivo de ini-
cializaci on (MapleInit) y un directorio llamado metrics que
contiene archivos de texto (con extensi on .mpl) que especi-
160 R.A. SUSSMAN
can los componentes de las m etricas que deber a leer GRTen-
sor para denir y calcular tensores.
Aunque los detalles del proceso de instalaci on dependen
del sistema operativo de la computadora huesped, indepen-
dientemente del mismo, este proceso consiste en los siguien-
tes tres pasos:
1. Colocar el directorio lib que contiene los archivos bi-
narios de GRTensor en los subdirectorios apropiados.
2. Editar el archivo de inicializaci on de GRTensor, dando
la trayectorial local del subdirectorio lib, de manera
que los binarios puedan ser leidos al abrir una sesi on
de Maple.
3. Editar el archivo de inicializaci on de modo que que-
de especicada la trayectoria local del directorio me-
trics.
Estos pasos vienen descritos en un archivo readme, as co-
mo en el sitio ocial de GRTensor [1]. El usuario puede tam-
bi en consultar [4] o solicitar ayuda al autor por correo elec-
tr onico.
Una vez terminado el proceso de instalaci on, al teclear la
instrucci on de inicializaci on de GRTensor
> grtw();
debe aparecer un mensaje de bienvenida que indica que
GRTensor est a listo para ser utilizado.
El siguiente paso es cargar una m etrica, es decir, alguno
de los archivos de texto .mpl que estan ubicados en el subdi-
rectorio metrics. Es posible tambi en introducir los compo-
nentes de la m etrica (en base de coordenadas o de vectores)
en forma interactiva (ver Ref. 4), sin embargo en este artculo
veremos unicamente el proceso nointeractivo.
Supongamos que deseamos que GRTensor dena y cal-
cule tensores asociados a la m etrica RobertsonWalker dada
en una base de coordenadas esf ericas (r, , , t):
ds
2
= dt
2
+
A
2
(t)[dr
2
+r
2
(d
2
+ sin
2
d
2
)]
_
1 +
k
0
4
r
2

2
, (1)
donde k
0
= 0, 1. El archivo de texto con extensi on .mpl
que debemos crear (si es que a un no existe en el directorio
metrics) es:
Ndim := 4 :
x1 := r :
x2 := theta :
x3 := phi :
x4 := t :
g11 := A(t)2/(1+k0/4*r2)2 :
g22 := A(t)2*r2/(1+k0/4*r2)2 :
g33 := A(t)2*r2*sin(theta)2/(1+k0/4*r2)2
:
g44 := -1 :
# Metrica Robertson-Walker
# Coordenadas esfericas r,theta,phi,t
# k0 = 0,1,-1
Si a este archivo lo nombramos RW.mpl, entonces la ins-
truccion de GRTensor que carga esta m etrica es
> qload(RW);
N otese que la extension .mpl ha sido omitida. El archivo .mpl
indica el n umero de dimensiones, los nombres de cada coor-
denada, as como comentarios pertinentes que Maple no lee
(lineas que inician con el caracter #). Una vez ejecutada la
instrucci on qload GRTensor responde con la m etrica dada
exactamente por (1). GRTensor est a ahora listo para denir
y calcular tensores para dicha m etrica. La Fig. 1 ilustra la
acci on de las instrucciones grtw y qload para la m etrica
RW.mpl.
3. Tensores predenidos: modo de c alculo
GRTensor tiene una lista amplia de tensores y obje-
tos tensoriales de uso com un predenidos, por ejemplo, la
m etrica inversa y el determinante de la m etrica, g
ab
, g, los
smbolos de Christoffel,
a
bc
, los tensores de Riemann, Ric-
ci, Einstein, Weyl, (R
a
bcd
, R
a
b
, G
a
b
, C
a
bcd
) y todos sus obje-
tos duales obtenidos por contracciones con la m etrica (su-
bir y bajar ndices), as como los escalares que resultan de
sus contracciones entre ellos: escalar de Ricci, Kretschmann,
(R = R
a
a
, K = R
abcd
R
abcd
). La lista de objetos predenidos
puede ser consultada accediendo a la hoja de ayuda en linea
grt-objects.
Los objetos predenidos pueden ser calculados directa-
mente mediante la instrucci on grcalc. El uso de esta
instrucci on determina el modo de c alculo de GRTensor
en el que la posici on de cada ndice se especica con dn
(ndice abajo) y up (ndice arriba). Por ejemplo, si quere-
mos que GRTensor calcule el tensor R
a
b
(tensor mixto de
Ricci, debemos teclear
> grcalc(R(up,dn));
Para que GRtensor despliegue el tensor tecleamos
> grdisplay(R(up,dn));
De la misma forma podemos calcular y desplegar cualquier
otro objeto predenido (ver Fig. 2). La instrucci on grcalcd
calcula y despliega el tensor.
Rev. Mex. Fs. S 53 (4) (2007) 159170
DEFINCI

ON Y C

ALCULO DE TENSORES MEDIANTE EL PAQUETE GRTENSOR 161


FIGURA 1. Input y output de las instrucciones grtw y qload para la m etrica RobertsonWalker.
FIGURA 2. Input y output de las instrucciones grcalc y grdisplay para el tensor de Ricci.
Rev. Mex. Fs. S 53 (4) (2007) 159170
162 R.A. SUSSMAN
En el caso de escalares (no hay ndices) grcalc simple-
mente act ua sobre el nombre asignado al objeto (ver hoja de
ayuda en linea grt objects). Por ejemplo, el nombre asig-
nado al escalar de Ricci es Ricciscalar, por lo que para
calcular y visualizar este objeto tecleamos
> grcalc(Ricciscalar);
> grdisplay( );
en donde hemos usado el caracter con el cual GRTensor de-
nota que grdisplay es aplicada al ultimo objeto tensorial
calculado, o sea, en este caso Ricciscalar.
3.1. Simplicaci on, factorizaci on y sustituci on en Maple
est andar.
Una vez calculado un tensor dado, podemos aplicar global-
mente (a todas sus componentes) cualquier instrucci on o ru-
tina de manipulaci on algebr aica de Maple. Por ejemplo, que
factorice o expanda cada componente o que sustituya alguna
variable o una funci on arbitraria que aparezca en la m etrica.
Para entender como GRTensor opera globalmente estas ru-
tinas es conveniente examinar c omo estas operan en Maple
est andar. Las instrucciones mas comunes de este tipo son:
normal, transforma
a
b
+
c
d
en
ad+bc
bd
expand, transforma
a+b
c
en
a
c
+
b
c
(a +b)c en ac +ab
(a +b)
2
en a
2
+ 2ab +b
2
factor, transforma
a
2
+ 2ab +b
2
en (a +b)
2
Adem as de estas instrucciones est a simplify, la cual es
equivalente a normal o a factor (a menudo estas instrucciones
dan el mismo resultado).
Para manipulaciones mas especializadas Maple usa la
instrucci on simplify con una opci on adecuada, por ejem-
plo, si X es una expresi on con funciones trigonom etricas, es
conveniente simplicarla con la opci on trig:
> simplify(X, trig);
O bien, para que Maple transforme

a
2
en a (asumir que a
es real positivo), o que exprese (e
a
)
2
como e
2a
, usamos la
instrucci on simplify con la opci on symbolic. Para mayor
detalle sobre estas simplicaciones ver Ref. 4.
Una manipulaci on algebr aica muy utilizada es la sustitu-
ci on de una variable por otra (o por un valor num erico). En el
caso de la m etrica RW, tenemos una funci on arbitraria A(t),
por lo que podra ser util el poder sustituir esta funci on por
un ansatz o una funci on explcita (por ejemplo A(t) = t
1/2
).
La instrucci on de sustituci on en Maple est andar es subs y
su sintaxis es muy simple: para sutituir x = k/3 en la ex-
presi on x sinx, tecleamos:
> subs(x = k*Pi/3, x*sin(x) );
Si sustituimos una forma explcita de A(t) en una expresi on
que contenga a esta funci on y derivadas de la misma, en-
tonces para que se evaluen las derivadas debemos aplicar la
instrucci on eval despu es de haber sustituido con subs. Por
ejemplo, si queremos sustituir A(t) = t
2/3
en la expresi on
1 +

A/A
2
(con = d/dt), le asignamos el nombre F a esta
expresi on y la sustituci on y evaluaci on se da mediante:
> F := 1+diff(A(t),t)/A(t)2;
> subs( A(t) = t(2/3), F);
> eval(%);
donde el smbolo % indica que eval act ua sobre el resultado
de la instrucci on inmediatamente anterior.
3.2. Simplicaci on, factorizaci on y sustituci on con GR-
Tensor.
Sin embargo, las instrucciones de Maple est andar que hemos
descrito anteriormente no pueden ser aplicadas directamente
a objetos calculados por GRTensor. Por lo tanto, una opci on
es transformar objetos de GRTensor en objetos de Maple
(arreglos), lo cual discutiremos mas adelante. La otra opci on
es aplicar globalmente las instrucciones de Maple con ins-
trucciones propias de GRTensor. Por ejemplo, si queremos
aplicar expand a todas las componentes de R(up,dn)
(o sea, R
a
b
), podemos usar la instrucci on gralter que
puede trabajar en forma interactiva
> gralter(R(up,dn));
apareciendo inmediatamente un men u interactivo de opcio-
nes que identica cada instrucci on predenida con un n ume-
ro. El n umero 6 identica a expand, por lo que al teclear
este n umero, esta instrucci on es aplicada a cada componente
de R(up,dn). Para usar gralter en forma nointeractiva
(cuando ya se conoce las instrucciones que aplica) simple-
mente se teclea el nombre de la instrucci on (o su n umero)
como segundo argumento de gralter.
Una opci on muy util de gralter es autoAlias, cuyo
efecto es reemplazar A(t) simplemente por A, mientras que
sus derivadas dA(t)/dt y d
2
A(t)/dt
2
son respectivamente
reemplazadas por A
t
y A
tt
. Este efecto permite tratar con
expresiones mas compactas por lo que es de gran ayuda para
la visualizaci on de componentes tensoriales. Como ejemplo,
aplicamos gralter con la opci on autoAlias seguido
inmediatamente de expand (ver Fig. 3):
> gralter(R(up,dn), autoAlias);
Rev. Mex. Fs. S 53 (4) (2007) 159170
DEFINCI

ON Y C

ALCULO DE TENSORES MEDIANTE EL PAQUETE GRTENSOR 163


> gralter( , expand);
> grdisplay( );
Una variante interesante es la instrucci on grcalcalter,
que calcula un objeto predenido y aplica (conforme calcu-
la) las instrucciones contenidas en gralter.
Otra instrucci on para aplicar cualquier rutina, funci on
o instrucci on estandar de Maple en forma global a objetos
de GRTensor es grmap. Esta instrucci on de es sumamente
poderosa y versatil, sin embargo su sintaxis es m as compli-
cada que gralter. Como ejemplo (ilustrado por la Fig. 4),
veamos la sustituci on global de A(t) = t
1/3
y k
0
= 0 en el
tensor R
a
b
(ya modicado por gralter, ver Fig. 3) teclea-
mos
> grmap(R(up,dn),subs,A(t)=t(1/3),k0=0,
x);
> grdisplay( );
Para consultar otros ejemplos de aplicaci on de grmap referi-
mos al lector a la hoja de ayuda de dicha instrucci on, as como
al manual incluido en la distribuci on de GRTensor (disponi-
ble en el sitio de GRTensor [1]) o bien a la Ref. 4.
3.3. Extracci on de componentes individuales.
Una vez calculado, si deseamos extraer una compenente es-
pecca, por ejemplo la componente R
r
r
del tensor R
a
b
(com-
ponente 1,1 de R(up,dn)), tecleamos
> grcomponent(R(up,dn),[1,1]);
Una vez ejecutada esta instrucci on, la componente extrada
es una expresi on de Maple est andar, por lo que es posible
aplicarle directamente cualquier instrucci on estandar de Ma-
ple, por ejemplo, asignarle un nombre (por ejemplo R11):
> grcomponent( R(up,dn),[1,1]);
> R11:=%;
o bien, aplicar cualquiera de las instrucciones de simplica-
ci on mencionadas anteriormente. Obviamente, para extraer
un objeto vectorial (tensor de un ndice) la componente se
especica con un solo n umero dentro del corchete [ ]. Para
escalares no es necesario dar el n umero de una componente:
> grcomponent(Ricciscalar);
con lo cual es posible asignarle un nombre o aplicar cualquier
instrucci on de Maple est andar.
3.4. Pasar objetos de GRTensor a objetos de Maple
En vez de extraer componentes uno a uno para poderlos tratar
como objetos de Maple est andar, podemos transformar glo-
balmente objetos de GRTensor en objetos de Maple llamados
arreglos, los cuales se pueden manipular como objetos
matriciales. La instrucci on de GRTensor que lleva a cabo
esta transformaci on es grarray. Por ejemplo, si queremos
construir un arreglo de Maple con nombre asignado Rmix
que contenga las componentes ya calculadas de R(up,dn)
tecleamos
> Rmix := grarray( R(up,dn));
La componente R
r
r
( o 1,1) se obtiene inmediatamente te-
cleando:
> Rmix[1,1];
Una vez que tenemos un objeto de GRTensor denido como
arreglo de Maple est andar, lo podemos manipular o simpli-
car usando las instrucciones usuales de Maple para arre-
glos. Si aplicamos grarray a un objeto vectorial, obtene-
mos un vector de Maple est andar y entonces las componen-
tes se extraen especicando un solo n umero, mientras que
grarray aplicado a un escalar simplemente da una sola ex-
presi on (arreglo de orden cero).
4. Modo de denici on de tensores
Si necesitamos trabajar con un objeto tensorial que no est a en
la lista de tensores predenidos, necesitamos entonces de-
nirlo. La sintaxis del modo de denici on de GRTensor es
diferente a la del modo de c alculo que vimos en la secci on
anterior. Obviamente, necesitamos denir un tensor antes de
poder calcularlo en el modo de c alculo.
Usaremos como ejemplo la denici on de una 4-velocidad
u
a
y la construcci on subsecuente del tensor de momento
energa del uido perfecto:
T
ab
= [(t) +p(t)] u
a
u
b
+p(t) g
ab
, (2)
ambos tensores compatibles con la m etrica Robertson
Walker (1). Primero denimos la 4-velocidad com ovil dada
ya sea por
u
a
=
a
t
, (3)
o equivalentemente como
u
a
= [0, 0, 0, 1], (4)
(recordemos que t es la cuarta coordenada). GRTensor per-
mite denir u
a
de ambas formas atrav es de la instrucci on
grdef:
> grdef(u{a} := kdelta{a $t });
Rev. Mex. Fs. S 53 (4) (2007) 159170
164 R.A. SUSSMAN
FIGURA 3. Modicaci on del tensor de Ricci mediante gralter con las opciones autoAlias y expand.
FIGURA 4. Modicaci on del tensor de Ricci mediante gralter con las opciones autoAlias y expand.
Rev. Mex. Fs. S 53 (4) (2007) 159170
DEFINCI

ON Y C

ALCULO DE TENSORES MEDIANTE EL PAQUETE GRTENSOR 165


o bien
> grdef(u{a} := [0,0,0,1]);
las cuales son muy parecidas a como de escribe u
a
en (3) y
(4). Del lado izquierdo del smbolo de asignaci on (:=) escri-
bimos el nombre que ser a asignado al tensor que deniremos.
En este caso usamos u, pues ninguno de los tensores prede-
nidos usa este smbolo (en caso contrario sera necesario
escoger otro smbolo para evitar un conicto de nombres)
iii
.
Cada ndice contravariante (superndice) se escribe prece-
dido con el smbolo , mientras que los ndices covariantes
(subndice) se escriben como texto normal, todos ellos dentro
de llaves { } que siguen al nombre del tensor. Del lado dere-
cho de := escribimos la f ormula o regla de correspondencia
del tensor [como en (3)] o como una lista de componentes
[como en (4)], lo cual es solo aplicable al caso de tensores
de rango 1 (vectores o 1formas como u
a
o u
a
). N otese que
el tensor delta de Kronecker puede denirse con un ndice
dado por una coordenada (en este caso t).
Una vez denida u
a
, de una forma u otra, necesitamos
calcularla. En modo de c alculo, el tensor denido como
u{a} pasa a ser u(up), por lo que se calcula median-
te
> grcalc(u(up));
Ahora, ya que hemos denido y calculado u
a
y dado que g
ab
ya est a predenido, podemos construir y denir el tensor T
ab
dado por (2) de la siguiente forma:
> grdef(T{a b} :=
(mu(t)+p(t))*u{a}*u{b}+p(t)*g{a b});
la cual es (como para u
a
) muy parecida a como se dene
T
ab
en notaci on matem atica en (2). Como no hay conicto
de nombres, usamos el nombre T y del lado derecho de :=
escribimos la regla de correspondencia dada por (2). Remar-
camos que en la denicion de este tensor grdef denota con
el mismo smbolo * a productos tensoriales (como u
a
u
b
) y a
productos por un escalar (como p(t) g
ab
).
Habiendo denido T{a b} mediante grdef tene-
mos un nuevo tensor que, en modo de c alculo, se denota
T(up,up). Para calcularlo usamos grcalc aplicado a
T(up,up). Una vez denido el tensor T
ab
, podemos calcu-
lar y visualizar directamente con grcal y grdisplay (sin
tener que denirlos previamente) los tensores duales asocia-
dos T
a
b
o T
ab
:
> grcalc(T(up,dn));
> grdisplay( );
As como formamos T
ab
a partir de u
a
y g
ab
, po-
demos denir y calcular las ecuaciones de campo
de Einstein G
a
b
= T
a
b
, pues el tensor de Einstein
G
a
b
= R
a
b
(1/2) R
a
b
est a predenido y ya tenemos
T
ab
denido y calculado. Las ecuaciones de Einstein se de-
nen y calculan mediante:
> grdef(EE{ab} := G{ab} = kappa*T{a
b});
> grcalc(EE(up,dn));
> gralter( , expand);
> gralter( , autoAlias);
> grdisplay( );
donde hemos modicado el nuevo tensor mediante
gralter con las opciones expand y autoAlias. N ote-
se c omo GRTensor permite denir ecuaciones tensoriales,
adem as de tensores individuales. Es importante remarcar
que, tanto en Maple est andar como en GRTensor, el smbolo
:= no denota una igualdad (ecuaci on), sino una asignaci on
de un nombre a una variable o expresi on, mientras que el
smbolo = denota simplemente una igualdad. Una vez deni-
das las ecuaciones de Einstein como una ecuaci on tensorial,
podemos aplicar rutinas de simplicaci on, sustituci on o ma-
nipulaci on, tal y como se aplican a tensores predenidos (ver
secci on anterior):
> gralter(EE(up,dn), expand);
> grdisplay( );
GRTensor permite tambi en denir tensores en cuya re-
gla de correspondencia aparecen derivadas covariantes. Por
ejemplo, el 4vector formado por la divergencia J
a
T
ab
;b
,
queda denido y calculado mediante:
> grdef(J{a} := T{a b;b});
> grcalc(J(up));
> grdisplay( );
N otese que aunque la derivada covariante aparece como
subndice en T
ab
;b
, en grdef el ndice de esta se colo-
ca junto al superndice b. Si en vez de la divergencia
J
a
T
ab
;b
quisieramos denir y calcular la derivada cova-
riante J
ab
c
T
ab
;c
, la regla de correspondencia en grdef
sera: J{a b;c }:=T{a b;c}. GRTensor tamb en
permite denir y calcular objetos tensoriales obtenidos me-
diante derivadas ordinarias, escribiendo en ese caso una coma
, en vez del punto y coma ;. Estos objetos tensoriales se
calculan y manipulan mediante las instrucciones grcalc,
gralter, grmap, grdisplay, tal y como se hace con
los tensores predenidos.
Un ejemplo muy util e interesante es el tensor de
momentoenerga de un campo escalar con potencial
V = V ():
T
ab
=
,a

,b

_
1
2

,c

,c
+V ()
_
g
ab
. (5)
Para la m etrica RW necesariamente = (t), por lo que
V = V (t). Tenemos entonces
,a
= [0, 0, 0,
,t
]. Construi-
mos primero este objeto tensorial de rango 1:
Rev. Mex. Fs. S 53 (4) (2007) 159170
166 R.A. SUSSMAN
> grdef(DPhi{a} := [0,0,0,diff(Phi(t),t)]);
> grcalc(DPhi(dn));
> grdisplay( );
Inmediatamente podemos denir (5), pues el tensor m etrico
est a predenido:
> grdef(TS{a b} :=
DPhi{a}*DPhi{b}-(1/2*DPhi{c}*DPhi{c}+V(t))*g{a
b});
> grcalc(TS(up,dn));
> grdisplay( );
La ecuaci on de KleinGordon sigue de calcular la divergen-
cia J
a
= T
ab
;b
con el tensor (5):
> grdef(JS{a} := TS{a b;b});
> grcalc(JS(up));
> gralter(JS(up), expand);
> gralter(JS(up), autoAlias);
> grdisplay( );
Si tomamos en cuenta que

V /

= dV/d, obtenemos la for-


ma usual de la ecuaci on de KleinGordon para la geometra
RobertsonWalker.
5. Denici on y manipulaci on de tensores mas
complicados.
Para ilustrar ejemplos mas complicados usaremos una m etri-
ca menos restringida que la de RobertsonWalker (1). Consi-
deremos la m etrica general con simetra esf erica dada por el
elemento de linea
ds
2
= A
2
dt
2
+B
2
dr
2
+Y
2
(d
2
+ sin
2
d
2
), (6)
donde A, B y Y son funciones arbitrarias de (t, r). El archi-
vo de texto equivalente al archivo RW.mpl lo llamamos
SS.mpl y viene dado por:
Ndim := 4 :
x1 := r :
x2 := theta :
x3 := phi :
x4 := t :
g11 := B(t,r)2 :
g22 := Y(t,r)2 :
g33 := Y(t,r)2*sin(theta)2 :
g44 := -A(t,r)2 :
# Metrica general con simetria esferica
Por lo tanto, en una nueva sesi on de Maple repetimos el
proceso de carga de GRTensor y de esta nueva m etrica tal y
como procedimos en las secci on II con las las instrucciones
grtw y qload, pero ahora la m etrica (6):
> grtw();
> qload(SS);
A continuaci on podemos calcular para esta m etrica cualquie-
ra de los objetos tensoriales predenidos, asi como denir y
calcular tensores nuevos.
5.1. Tensores con simetras y componentes especiales
Muy a menudo un tensor de rango mayor o igual a 2 presenta
simetras especiales entre sus ndices. Veamos el caso de ran-
go 2: a partir de cualquier tensor V
ab
podemos construir su
parte sim etrica y antisim etrica mediante:
V
(ab)

1
2
(V
ab
+V
ba
), parte sim etrica (7)
V
[ab]

1
2
(V
ab
V
ba
), parte antisim etrica (8)
de modo que un tensor totalmente sim etrico o totalmen-
te antisim etrico satisface, respectivamente, V
ab
= V
(ab)
o
V
ab
= V
[ab]
. GRTensor permite autom aticamente denir y
calcular tensores con estos tipos de simetra: basta simple-
mente con usar los par entesis adecuados (...) o [...]
en la denici on de grdef.
Un ejemplo cl asico de un tensor totalmente antisim etri-
co es el tensor de Maxwell dado en t erminos del potencial
vectorial electromagn etico A
a
por:
F
ab
= A
a;b
A
b;a
= 2A
[a;b]
(9)
En particular, para la m etrica (6) este tensor tiene solo dos
componentes diferentes de cero: F
tr
= F
rt
= , donde
= 2A
[t,r]
. Por lo tanto, para esta m etrica este tensor se
puede denir como: F
ab
= (
r
a

t
b

t
a

r
b
) =
r
[a

t
b]
,
donde los par entesis rectangulares [... ] indican anti
simetrizaci on. En GRTensor este tensor antisim etrico se
dene y calcula mediante las instrucciones:
> grdef(F{a b} :=
psi(t,r)* kdelta{[a $t}*kdelta{b] $r});
> grcalc(F(dn,dn));
> grdisplay( );
N otese c omo GRTensor reconoce el smbolo de anti-
simetrizaci on de ndices [a .. b] en grdef. Tambi en,
estas instrucciones ilustran c omo es posible denir el tensor
delta de Kronecker con un ndice jo, o sea dado por una
coordenada en particular (anteponiendo el smbolo $ antes
del nombre t o r en grdef).
Tambi en es importante remarcar que GRTensor tam-
bi en reconoce el smbolo de simetrizaci on de indices
(a ..b) dentro de grdef, de manera que el tensor
u
(a;b)
(1/2)(u
a;b
+ u
b;a
) puede ser r apidamente denido
y calculado a partir de un vector 4velocidad u
a
. El primer
paso es denir, calcular y normalizar u
a
(ya que u
b
u
b
= 1).
Rev. Mex. Fs. S 53 (4) (2007) 159170
DEFINCI

ON Y C

ALCULO DE TENSORES MEDIANTE EL PAQUETE GRTENSOR 167


Si consideramos una velocidad com ovil, tenemos:
> grdef(u{a} :=[0,0,0,1]);
> grcalc(u(up));
> grnormalize(u(up,-1));
La instrucci on grnormalize(u(up,-1)); normali-
za el vector u
a
previamente calculado para que su nor-
ma sea u
a
u
a
= 1 (sin embargo puede ser aplicada
a cualquier vector calculado, ya sea temporal o espa-
cial, en cuyo caso se normaliza a 1). Para la m etrica (6)
grnormalize(u(up,-1)); lleva al vector u
a
cuya uni-
ca componente diferente de cero es u
t
= 1/A. El siguiente
paso es denir y calcular U
ab
u
(a;b)
> grdef(U{a b} :=u{(a;b)});
> grcalc(U(up,dn));
> gralter( , autoAlias);
> grdisplay( );
en donde hemos usado la opci on autoAlias para expresar
A(t) como A y sus derivadas como subndices.
Otro ejemplo interesante es el denir un tensor de traza
cero ortogonal a la 4velocidad. Sea P
ab
tal que P
ab
u
b
=
0 y P
c
c
= 0. Para la m etrica (6) y la 4velocidad
u
a
=
_
g
tt

a
t
= (1/A)
a
t
, este tensor podra tener co-
mo unicas componentes diferentes de cero a: P
r
r
= 2,
P

= P

= , donde = (t, r) es una funci on arbi-


traria. Por lo tanto, tenemos la expresi on tensorial
P
a
b
= 2
a
r

r
b
+
a

b
+
a

b
, (10)
la cual podemos denir y calcular en GRTensor mediante
> grdef(P{a b} :=
-2*PI(t,r)*kdelta{a $r}*kdelta{$r b}
+ PI(t,r)*kdelta{a $theta}*kdelta{$theta b}
+ PI(t,r)*kdelta{a $phi}*kdelta{$phi b});
> grcalc(P(up,dn));
> grdisplay( );
El tensor de momentoenerga mas general que podemos aso-
ciar a la m etrica (6) es
T
ab
= ( +p)u
a
u
b
+pg
ab
+P
ab
+ 2q
(a
u
b)
, (11)
donde , p (densidad de energa y presi on isotr opica) son
funciones de (t, r), P
ab
es el tensor denido anteriormen-
te (presiones anisotr opicas) y q
a
(ujo de energa) satisface
q
a
u
a
= 0. Para la m etrica (6) este covector es q
a
= Q
r
a
,
donde Q = Q(t, r) es una funci on arbitraria. Denimos y
calculamos primero q
a
:
> grdef(q{a} :=Q(t,r)*kdelta{a $r});
> grcalc(q(dn));
e inmediatamente denimos y calculamos T
ab
dado por (11):
> grdef(T{a b} :=
(mu(t,r)+p(t,r))*u{a}*u{b} + p(t,r)*g{a
b}
+ P{a b} + 2*q{(a}*u{b)});
> grcalc(T(up,dn));
Las ecuaciones de Einstein (G
a
b
= T
a
b
) forman un objeto
tensorial que se dene y calcula como:
> grdef(EE{a b} := G{a b} = kappa*
T{a b});
> grcalc(EE(up,dn));
> gralter( , autoAlias);
> grdisplay( );
La divergencia T
ab
;b
se dene y calcula tal y como lo hici-
mos para la m etrica RobertsonWalker:
> grdef(J{a} := T{ab;b});
> grcalc(J(up));
> gralter( , autoAlias);
> grdisplay( );
Sin embargo, este vector es ahora mucho mas complicado
que el calculado para (1).
Para tensores de rango mayor que 2, la simetra o anti-
simetra sobre dos ndices nocontiguos se denota mediante
barras verticales. Por ejemplo, si el tensor V
abc
es sim etrico o
antisim etrico con respecto a los ndices a y c, esto se denota
como
V
(a|b|c)
o V
[a|b|c]
. (12)
Podemos formar un tensor de rango 3 atrav es de
V
abc
=P
ab;c
, donde P
ab
es el tensor de presiones anisotr opi-
cas de (11). Si queremos denir la parte sim etrica de este
tensor con respecto a los ndices a y c, primero denimos
y calculamos V
abc
, para luego denir y calcular su parte
sim etrica
> grdef(V{a b c} := P{a b;c});
> grcalc(V(dn,dn,dn));
> grdef(VS{(a b c} := V{(a |b| c)});
> grcalc(VS(dn,dn,dn));
> gralter( , autoAlias);
> grdisplay( );
N otese c omo GRTensor reconoce las barras verticales |..|
en grdef.
5.2. Derivadas covariantes y operadores diferenciales
Dado un objeto tensorial previamente denido (o predeni-
do) y ya calculado, podemos calcular su derivada covariante
sin tener que denir un nuevo tensor. Por ejemplo, si quere-
mos calcular el tensor dado por la derivada covariante R
a
b;c
,
Rev. Mex. Fs. S 53 (4) (2007) 159170
168 R.A. SUSSMAN
no necesitamos denirlo con grdef, lo podemos calcular
directamente agregando un tercer ndice cdn:
> grcalc(R(up,dn,cdn));
Lo mismo podemos hacer con la derivada covariante de cual-
quier objeto tensorial denido y calculado con grdef y
grcalc, por ejemplo, para los tensores u
a
y P
ab
ya calcula-
dos, podemos calcular directamente u
a
;b
o P
ab
;c
, agregando
un ndice extra cdn o cup (seg un sea el caso):
> grcalc(u(up,cdn));
> grcalc(P(dn,dn,cup));
Tambi en es posible calcular objetos tensoriales formados me-
diante derivadas ordinarias, como por ejemplo R
a
b,c
o P
ab
,c
.
Estos objetos se calculan tambi en directamente usando como
ndices extra pdn o pup, seg un sea el caso.
GRTensor tiene predenidos varios operadores diferen-
ciales que act uan sobre objetos tensoriales, como por ejem-
plo el operador delambertiano y la derivada de Lie a lo
largo de un vector v
a
. Si consideramos un tensor A
ab
, estos
operadores son:
A
ab
= g
cd
A
ab
;c;d
, (13)

v
A
ab
= A
ab ;c
v
c
+A
bc
v
c
;a
+A
ab
v
c
;b
. (14)
Suponiendo que A
ab
ya ha sido denido y calculado, las
ecuaciones anteriores se calculan con GRTensor mediante
> grcalc(Box[A(up,up)]);
> grcalc(LieD[v(up),A(dn,dn)]);
En particular, la condici on que determina si v
a
es un vector
de Killing (ya sea un vector de Killing propio o vector confor-
me de Killing) viene dada por la derivada de Lie con respecto
a v
c
, pero aplicada al caso particular en que A
ab
= g
ab
. To-
mando en cuenta que g
ab;c
= 0 obtenemos a partir de (14) la
condici on siguiente:

v
g
ab
g
ab
= v
(a;b)
g
ab
= 0, (15)
donde es un escalar. El vector v
a
es vector de Killing pro-
pio si = 0, lo cual dene una isometra, mientras que si
es una constante (= 0) v
a
dene una simetra homot etica
(autosimilaridad). GRTensor permite para un vector arbitra-
rio v
a
vericar si se cumple la condici on (15), dando el valor
de (si no es cero), mediante la instrucci on:
> grcalc ( KillingTest[v] );
Otros operadores diferenciales son derivadas direcciona-
les a lo largo de vectores base, as como Dsq y CDsq aso-
ciados respectivamente a
,a

,a
y
;a

;a
para un escalar
previamente denido = (x
a
).
5.3. Tensores asociados a una 4-velocidad
Dado un campo de 4-velocidades u
a
podemos denir varios
tensores que surgen de la descomposici on invariante de u
a;b
:
u
a
;a
, escalar de expansi on
u
a
u
a;b
u
b
, 4aceleraci on

ab
u
(a;b)
+ u
a
u
b


3
h
ab
, deformaci on (shear)

ab
u
[a;b]
u
a
u
b
, vorticidad
E
ab
C
abcd
u
c
u
d
, Tensor el ectrico de Weyl (16)
Estas cantidades tienen una clara interpretaci on fsica y
geom etrica y son muy utiles en el estudio de espaciotiempos
cosmol ogicos. Estos objetos tensoriales ya est an predenidos
por lo que, habiendo denido y calculado u
a
, los podemos
calcular directamente con grcalc. Si usamos u(up) pre-
viamente calculado para (6), las siguientes instrucciones nos
permiten calcular estos objetos (en el orden en que aparecen
en (16)):
> grcalc(expscalar[u]);
> grcalc(acc[u](dn));
> grcalc(shear[u](dn,dn));
> grcalc(vor[u](dn,dn));
> grcalc(E[u](dn,dn));
Asociados a los tensores
ab
,
ab
tenemos a los escalares
= [
ab

ab
]
1/2
, = [
ab

ab
]
1/2
, (17)
los cuales se calculan con:
> grcalc(shear[u]);
> grcalc(vor[u]);
Otras cantidades asociadas a un vector u
a
son la parte
magn etica del tensor de Weyl y la ecuaci on de Raychaud-
huri:
u
a

,a
+

2
3
+ u
a
;a
u
a
u
a
+
2

2
=

2
(+3p). (18)
cuyo lado izquierdo est a completamente determinado en
t erminos de los objetos (16) y (17).
Aunque hemos usado a la 4velocidad u
a
como ejemplo
del c alculo de los tensores en (16), (17) y (18), podramos ha-
ber utilizado cualquier campo vectorial v
a
normalizado, ya
sea temporal (v
a
v
a
= 1) o espacial (v
a
v
a
= 1), pero no
nulo o tipoluz (v
a
v
a
= 0).
6. Tensores en una base nocoordenada.
Hasta ahora hemos visto c omo GRTensor permite denir y
calcular objetos tensoriales denidos en una base de coorde-
nadas (base holon omica). Tambi en es posible denir y calcu-
Rev. Mex. Fs. S 53 (4) (2007) 159170
DEFINCI

ON Y C

ALCULO DE TENSORES MEDIANTE EL PAQUETE GRTENSOR 169


lar tensores en t erminos de bases o t etradas de vectores o 1
formas anholon omicas. Como ejemplo, veamos el espacio
tiempo de Schwarzschild
ds
2
=
_
1
2M
r
_
dt
2
+
_
1
2M
r
_
1
dr
2
+r
2
_
d
2
+ sin
2
d
2
_
. (19)
Para la base ortonormal de 1formas:

(1)
a
=
_
_
1
2M
r
_
1/2
, 0, 0, 0
_
, (20)

(2)
a
= [0, r, 0, 0] , (21)

(3)
a
= [0, 0, r sin, 0] , (22)

(4)
a
=
_
0, 0, 0,
_
1
2M
r
_
1/2
_
, (23)
la m etrica (19) toma la forma ortonormal lorenziana:

(a)(b)
=
(a)
c

(b)
d
g
cd
= diag[1, 1, 1, 1], (24)
donde g
ab
es el inverso matricial de la m etrica dada en (19) y
el ndice de la t etrada toma los valores (a) = 1, 2, 3, 4.
Todos los tensores predenidos que calculamos en ba-
ses de coordenadas se calculan para la base (23) y la m etrica
(24). Sin embargo, GRTensor debe cargar (23) y (24) leyendo
un archivo de texto diferente al usado en las m etricas dadas
en base de coordenadas (aunque dicho archivo debe estar
tambi en ubicado en el mismo subdirectorio metrics que
contiene los archivos de las m etricas en base de coordena-
das). Para el espaciotiempo de Schwarzschild con la t etrada
(23) este archivo debe tener la forma:
Ndim := 4 :
x1 := r :
x2 := theta :
x3 := phi :
x4 := t :
eta11 := 1 :
eta22 := 1 :
eta33 := 1 :
eta44 := -1 :
bd11 := (1-2*M/r)(-1/2) :
bd22 := r :
bd33 := r*sin(theta) :
bd44 := (1-2*M/r)(1/2) :
# Metrica de Schwarzschild en base ortonormal
Si a este archivo lo llamamos schwb.mpl, entonces pa-
ra cargar GRTensor y esta m etrica tecleamos
> grtw();
> qload(schwb);
Una vez cargada la m etrica (24) y la base (23), la instrucci on
de GRTensor para calcular (por ejemplo) el tensor de Rie-
mann R
(a)
(b)(c)(d)
es
> grcalc(R(bup,bdn,bdn,bdn));
Como muestra el ejemplo, tenemos exactamente la misma
sintaxis que en la base de coordenadas, excepto que en vez
de denotar los ndices como up y dn los denotamos como
bup y bdn, mientras que para tensores nuevos formados con
derivadas covariantes se agregan ndices cbup o cbdn seg un
sea el caso (ver hoja de ayuda grt basis).
Para denir tensores nuevos mediante grdef usamos
exactamente la misma sintaxis que en los casos de ba-
ses coordenadas, excepto que los ndices se escriben en
par entesis: (a) o (a), respectivamente para ndices co-
variantes y contravariantes. Por ejemplo, denimos el vector
W
(a)
= [r, 0, 0, t] y lo calculamos junto con su derivada co-
variante W
(a)
;(b)
> grdef(W(a):=[r,0,0,t]);
> grcalc(W(bup));
> grcalc(W(bup,cbdn));
Ahora denimos y calculamos el tensor
Z
(a)(b)(c)
= R
(a)(b)(c)(d)
W
(d)
y su derivada covariante Z
(a)(b)(c)
;(d)
> grdef(Z{(a)(b)(c)}:=R{(a)(b)(c)(d)*W(d)});
> grcalc(Z(bdn,bdn,bdn));
> grcalc(Z(bdn,bdn,bdn,cbup));
Hemos usado como ejemplo una t etrada ortonormal, pero
tambi en es posible utilizar t etradas de NewmanPenrose.
Tanto para uno como para el otro (o cualquier) tipo de t etra-
das GRTensor tiene predenidos escalares invariantes asocia-
dos a los tensores de Riemann y Weyl, ligados a varias clasi-
caciones invariantes de espaciotiempos, incluyendo la clasi-
caci on de Petrov (ver hojas de ayuda grt basis y gr invars).
7. Otras instrucciones importantes.
En esta secci on ofrecemos un resumen de algunas instruccio-
nes utiles que no fueron descritas en las secciones anteriores.
grapply
Aplica una funci on o rutina de Maple a todo compo-
nente, pero (a diferencia de grmap) no modica la
forma calculada del tensor en la memoria de GR-
Tensor. La salida de esta instrucci on es a la hoja de
trabajo o a un archivo de texto. Es particularmente util
para construir una salida de L
A
T
E
X de tensores calcu-
lados y modicados atrav es de la funci on latex, que
genera el c odigo de L
A
T
E
X de cualquier objeto eva-
luado en una sesi on de Maple. Por ejemplo, si hemos
Rev. Mex. Fs. S 53 (4) (2007) 159170
170 R.A. SUSSMAN
calculado el tensor de Ricci, R
ab
, para alguna m etri-
ca, podemos generar el c odigo L
A
T
E
Xde dicho objeto y
desplegarlo en la pantalla mediante:
> grapply ( R(dn,dn), latex, x );
o bien, guardarlo en un archivo de texto con la opci on
le = especicando la trayectoria del archivo:
> grapply ( R(dn,dn), latex, x,
file=trayectoria );
grcalc1(Tensor(), [comp]);
Calcula una sola componente especca de objeto ten-
sorial. Para desplegarla en la pantalla es necesario usar
grcomponent
grclear( arg );
Borra la memoria de un tensor calculado (no borra de-
niciones hechas con grdef, eso lo hace grundef).
El resultado de esta instrucci on depende de la variable
arg:
arg = objeto tensorial (por ejemplo
R(up,dn)), borra el objeto tensorial cal-
culado en la sesi on, mas no la m etrica car-
gada.
arg = results, borra todos los tensores
calculados, mas no la m etrica cargada.
arg = metric, borra tambi en m etrica (pero
no la base, en caso de estar usando una base
nocoordenada).
arg = spacetime, tambi en la base.
grsavedef(GRTobjects, trayectoria ); y
grloaddef(GRTobjects, trayectoria );
Permite guardar en un archivo de texto (ubicado en
trayectoria) deniciones de tensores hechas
mediante grdef. Dichas deniciones se pueden car-
gar a una sesi on de GRTensor mediante grloaddef.
Acknowledgments
El autor agradece apoyo nanciero por parte del proyecto
PAPIIT-DGAPA n umero IN-117803. Tambi en agradece apo-
yo por parte del ICN-UNAM y de la DGFM-SMF.
Ap endice
Es muy ilustrativo mostrar c omo podemos utilizar las instruc-
ciones de manipulaci on y simplicaci on de Maple para trans-
formar las ecuaciones de campo (G
ab
= T
ab
) y de balance
(T
ab
;b
= 0) en un sistema de ecuaciones diferenciales de pri-
mer orden que puede ser integrado con m etodos num ericos.
i. El material del presente artculo est a basado en el curso Apli-
caciones del c omputo simb olico a la Relatividad General, im-
partido por el autor en el VI Taller de la Divisi on de Gravita-
ci on y Fsica Matem atica de la Sociedad Mexicana de Fsica,
Metepec, Puebla, noviembre de 2005. El material del curso e
informaci on util sobre GRTensor puede ser descargado del sitio
www.smf.dgfm/VI taller/curso sussman.
ii. De aquen adelante describiremos exclusivamente el uso de
GRTensor en Maple, considerando que este m odulo corre en
Mathematica en froma completamente equivalente).
iii. En general es importante no usar nombres que coincidan con el
de alg un tensor, predenido o denido por el usuario. Esta regla
se aplica ya sea a objetos tensoriales que el usuario quiere de-
nir, o a nombres de ndinces, e incluso a variables usadas en la
sesi on de Maple. Esto descarta, por ejemplo, la posibilidad de
usar nombres como: g (tensor m etrico), R (tensores de Riemann
y Ricci), G (tensor de Einstein) y C (tensor de Weyl). Sugerimos
al lector consultar la hoja de ayuda en linea grt objects.
1. P. Musgrave, D. Pollney y K. Lake (1996), Queens Univer-
sity, Kingston, Ontario, Canada. El software y documentaci on
de GRTensor est a disponible en el sitio www.grtensor.org
2. Waterloo Maplesoft Inc.
3. Wolfram Research Institute
4. www.smf.org.mx/dgfm/VI taller/curso sussman
Rev. Mex. Fs. S 53 (4) (2007) 159170

Vous aimerez peut-être aussi