Fix bug #1848: taytorat leaks internal gensyms from multivar expansions
[maxima.git] / doc / info / es / Ctensor.es.texi
blob26cdead5c1a6783890490dfd61506844e1063900
1 @c English version 2011-03-14
2 @menu
3 * Introducción a ctensor::     
4 * Funciones y variables para ctensor::     
5 @end menu
7 @node Introducción a ctensor, Funciones y variables para ctensor, ctensor, ctensor
8 @section Introducción a ctensor
10 El paquete @code{ctensor} dispone de herramientas para manipular componentes de tensores. Para poder hacer uso de @code{ctensor} es necesario cargarlo previamente en memoria ejecutando  @code{load(ctensor)}. Para comenzar una sesión interactiva con @code{ctensor}, ejecutar la función @code{csetup()}. Primero se le pregunta al usuario la dimensión de la variedad. Si la dimensión es 2, 3 o 4, entonces la lista de coordenadas será por defecto  @code{[x,y]}, @code{[x,y,z]}
11 o @code{[x,y,z,t]}, respectivamente. Estos nombres pueden cambiarse asignando una nueva lista de coordenadas a la variable @code{ct_coords} (que se describe más abajo), siendo el usuario advertido sobre este particular. 
12 Se debe tener cuidado en evitar que los nombres de las coordenadas entren en conflicto con los nombres de otros objetos en Maxima.
14 A continuación, el usuario introduce la métrica, bien directamente, o desde un fichero especificando su posición ordinal. 
15 @c NO SUCH FILE !
16 @c As an example of a file of common metrics, see @code{share/tensor/metrics.mac}.
17 La métrica se almacena en la matriz @code{lg}. Por último, la métrica inversa se obtiene y almacena en la matriz @code{ug}. También se dispone de la opción de efectuar todos los cálculos en serie de potencias.
19 Se desarrolla a continuación un ejemplo para la métrica estática, esférica y simétrica, en coordenadas estándar, que se aplicará posteriormente al problema de derivar las ecuaciones de vacío de Einstein (de las que se obtiene la solución de Schwarzschild). Muchas de las funciones de @code{ctensor} se mostrarán  en los ejemplos para la métrica estándar.
21 @example
22 (%i1) load(ctensor);
23 (%o1)      /share/tensor/ctensor.mac
24 (%i2) csetup();
25 Enter the dimension of the coordinate system: 
27 Do you wish to change the coordinate names?
29 Do you want to
30 1. Enter a new metric?
32 2. Enter a metric from a file?
34 3. Approximate a metric with a Taylor series?
37 Is the matrix  1. Diagonal  2. Symmetric  3. Antisymmetric  4. General
38 Answer 1, 2, 3 or 4
40 Row 1 Column 1:
42 Row 2 Column 2:
43 x^2;
44 Row 3 Column 3:
45 x^2*sin(y)^2;
46 Row 4 Column 4:
47 -d;
49 Matrix entered.
50 Enter functional dependencies with the DEPENDS function or 'N' if none 
51 depends([a,d],x);
52 Do you wish to see the metric? 
54                           [ a  0       0        0  ]
55                           [                        ]
56                           [     2                  ]
57                           [ 0  x       0        0  ]
58                           [                        ]
59                           [         2    2         ]
60                           [ 0  0   x  sin (y)   0  ]
61                           [                        ]
62                           [ 0  0       0       - d ]
63 (%o2)                                done
64 (%i3) christof(mcs);
65                                             a
66                                              x
67 (%t3)                          mcs        = ---
68                                   1, 1, 1   2 a
70                                              1
71 (%t4)                           mcs        = -
72                                    1, 2, 2   x
74                                              1
75 (%t5)                           mcs        = -
76                                    1, 3, 3   x
78                                             d
79                                              x
80 (%t6)                          mcs        = ---
81                                   1, 4, 4   2 d
83                                               x
84 (%t7)                          mcs        = - -
85                                   2, 2, 1     a
87                                            cos(y)
88 (%t8)                         mcs        = ------
89                                  2, 3, 3   sin(y)
91                                                2
92                                           x sin (y)
93 (%t9)                      mcs        = - ---------
94                               3, 3, 1         a
96 (%t10)                   mcs        = - cos(y) sin(y)
97                             3, 3, 2
99                                             d
100                                              x
101 (%t11)                         mcs        = ---
102                                   4, 4, 1   2 a
103 (%o11)                               done
105 @end example
108 @node Funciones y variables para ctensor,  , Introducción a ctensor, ctensor
109 @section Funciones y variables para ctensor
111 @subsection Inicialización y preparación
113 @deffn {Función} csetup ()
114 Es la función del paquete @code{ctensor} que inicializa el paquete y permite al usuario introducir una métrica de forma interactiva. Véase @code{ctensor} para más detalles.
115 @end deffn
117 @deffn {Función} cmetric (@var{dis})
118 @deffnx {Función} cmetric ()
119 Es la función del paquete @code{ctensor} que calcula la métrica inversa y prepara el paquete para cálculos ulteriores.
121 Si @code{cframe_flag} vale @code{false}, la función calcula la métrica inversa @code{ug} a partir de la matriz @code{lg} definida por el usuario. Se calcula también la métrica determinante y se almacena en la variable @code{gdet}. Además, el paquete determina si la métrica es diagonal y ajusta el valor de @code{diagmetric} de la forma apropiada. Si el argumento opcional @var{dis} está presente y no es igual a @code{false}, el usuario podrá ver la métrica inversa.
123 Si @code{cframe_flag} vale @code{true}, la función espera que los valores de @code{fri} (la matriz del sistema de referencia inverso) y @code{lfg} (la matriz del sistema de referencia) estén definidos. A partir de ellos, se calculan la matriz del sistema de referencia @code{fr} y su métrica @code{ufg}.
125 @end deffn
128 @deffn {Función} ct_coordsys (@var{sistema_coordenadas}, @var{extra_arg})
129 @deffnx {Función} ct_coordsys (@var{sistema_coordenadas})
131 Prepara un sistema de coordenadas predefinido y una métrica. El argumento @var{sistema_coordenadas} puede ser cualquiera de los siguientes símbolos:
133 @example
135   Símbolo              Dim Coordenadas       Descripción/comentarios
136   --------------------------------------------------------------------------------
137   cartesian2d           2  [x,y]             Sistema de coordenadas cartesianas en 2D
138   polar                 2  [r,phi]           Sistema de coordenadas polares
139   elliptic              2  [u,v]             Sistema de coordenadas elípticas
140   confocalelliptic      2  [u,v]             Coordenadas elípticas confocales
141   bipolar               2  [u,v]             Sistema de coordenas bipolares
142   parabolic             2  [u,v]             Sistema de coordenadas parabólicas
143   cartesian3d           3  [x,y,z]           Sistema de coordenadas cartesianas en 3D
144   polarcylindrical      3  [r,theta,z]       Polares en 2D con cilíndrica z
145   ellipticcylindrical   3  [u,v,z]           Elípticas en 2D con cilíndrica z
146   confocalellipsoidal   3  [u,v,w]           Elipsoidales confocales
147   bipolarcylindrical    3  [u,v,z]           Bipolares en 2D con cilíndrica z
148   paraboliccylindrical  3  [u,v,z]           Parabólicas en 2D con cilíndrica z
149   paraboloidal          3  [u,v,phi]         Coordenadas paraboloidales
150   conical               3  [u,v,w]           Coordenadas cónicas
151   toroidal              3  [u,v,phi]         Coordenadas toroidales
152   spherical             3  [r,theta,phi]     Sistema de coordenadas esféricas
153   oblatespheroidal      3  [u,v,phi]         Coordenadas esferoidales obleadas
154   oblatespheroidalsqrt  3  [u,v,phi]
155   prolatespheroidal     3  [u,v,phi]         Coordenadas esferoidales prolatas
156   prolatespheroidalsqrt 3  [u,v,phi]
157   ellipsoidal           3  [r,theta,phi]     Coordenadas elipsoidales
158   cartesian4d           4  [x,y,z,t]         Sistema de coordenadas cartesianas en 4D
159   spherical4d           4  [r,theta,eta,phi] Sistema de coordenadas esféricas en 4D
160   exteriorschwarzschild 4  [t,r,theta,phi]   Métrica de Schwarzschild
161   interiorschwarzschild 4  [t,z,u,v]         Métrica interior de Schwarzschild
162   kerr_newman           4  [t,r,theta,phi]   Métrica simétrica con carga axial
164 @end example
166 El argumento @code{sistema_coordenadas} puede ser también una lista de funciones de transformación, seguida de una lista que contenga los nombres de las coordenadas. Por ejemplo, se puede especificar una métrica esférica como se indica a continuación:
168 @example
170 (%i1) load(ctensor);
171 (%o1)       /share/tensor/ctensor.mac
172 (%i2) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
173       r*sin(theta),[r,theta,phi]]);
174 (%o2)                                done
175 (%i3) lg:trigsimp(lg);
176                            [ 1  0         0        ]
177                            [                       ]
178                            [     2                 ]
179 (%o3)                      [ 0  r         0        ]
180                            [                       ]
181                            [         2    2        ]
182                            [ 0  0   r  cos (theta) ]
183 (%i4) ct_coords;
184 (%o4)                           [r, theta, phi]
185 (%i5) dim;
186 (%o5)                                  3
188 @end example
190 Las funciones de transformación se pueden utilizar también si @code{cframe_flag} vale @code{true}:
192 @example
194 (%i1) load(ctensor);
195 (%o1)       /share/tensor/ctensor.mac
196 (%i2) cframe_flag:true;
197 (%o2)                                true
198 (%i3) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
199       r*sin(theta),[r,theta,phi]]);
200 (%o3)                                done
201 (%i4) fri;
202       [ cos(phi) cos(theta)  - cos(phi) r sin(theta)  - sin(phi) r cos(theta) ]
203       [                                                                       ]
204 (%o4) [ sin(phi) cos(theta)  - sin(phi) r sin(theta)   cos(phi) r cos(theta)  ]
205       [                                                                       ]
206       [     sin(theta)            r cos(theta)                   0            ]
207 (%i5) cmetric();
208 (%o5)                                false
209 (%i6) lg:trigsimp(lg);
210                            [ 1  0         0        ]
211                            [                       ]
212                            [     2                 ]
213 (%o6)                      [ 0  r         0        ]
214                            [                       ]
215                            [         2    2        ]
216                            [ 0  0   r  cos (theta) ]
218 @end example
220 El argumento opcional @var{extra_arg} puede ser cualquiera de los siguientes:
222 @code{cylindrical} indica a @code{ct_coordsys} que añada una coordenada cilíndrica más.
224 @code{minkowski} indica a  @code{ct_coordsys} que añada una coordenada más con signatura métrica negativa.
226 @code{all} indica a  @code{ct_coordsys} que llame a  @code{cmetric} y a @code{christof(false)} tras activar la métrica.
228 Si la variable global @code{verbose} vale @code{true}, @code{ct_coordsys} muestra los valores de @code{dim}, @code{ct_coords}, junto con @code{lg} o @code{lfg} y @code{fri}, dependiendo del valor de @code{cframe_flag}.
230 @end deffn
232 @deffn {Función} init_ctensor ()
233 Inicializa el paquete @code{ctensor}.
235 La función @code{init_ctensor} reinicializa el paquete @code{ctensor}. Borra todos los arreglos ("arrays") y matrices utilizados por @code{ctensor} y reinicializa todas las variables, asignando a @code{dim} el valor 4 y la métrica del sistema de referencia a la de Lorentz.
237 @end deffn
239 @subsection Los tensores del espacio curvo
241 El propósito principal del paquete @code{ctensor} es calcular los tensores del espacio (-tiempo) curvo, en especial los tensores utilizados en relatividad general.
243 Cuando se utiliza una métrica, @code{ctensor} puede calcular los siguientes tensores:
245 @example
247  lg  -- ug
248    \      \
249     lcs -- mcs -- ric -- uric 
250               \      \       \
251                \      tracer - ein -- lein
252                 \
253                  riem -- lriem -- weyl
254                      \
255                       uriem
258 @end example
260 El paquete @code{ctensor} también puede trabajar con sistemas de referencia móviles. Si @code{cframe_flag} vale @code{true}, se pueden calcular los siguientes tensores:
262 @example
264  lfg -- ufg
265      \
266  fri -- fr -- lcs -- mcs -- lriem -- ric -- uric
267       \                       |  \      \       \
268        lg -- ug               |   weyl   tracer - ein -- lein
269                               |\
270                               | riem
271                               |
272                               \uriem
274 @end example
276 @deffn {Función} christof (@var{dis})
277 Es una función del paquete @code{ctensor}. Calcula los símbolos de Christoffel de ambos tipos. El argumento @var{dis} determina qué resultados se mostrarán de forma inmediata. Los símbolos de Christoffel de primer y segundo tipo se almacenan en los arreglos  @code{lcs[i,j,k]} y @code{mcs[i,j,k]}, respectivamente, y se definen simétricos en sus dos primeros índices. Si el argumento de @code{christof} es @code{lcs} o @code{mcs} entonces serán mostrados únicamente los valores no nulos de @code{lcs[i,j,k]} o @code{mcs[i,j,k]}, respectivamente. Si el argumento es @code{all} entonces se mostrarán los valores no nulos de @code{lcs[i,j,k]} y @code{mcs[i,j,k]}.  Si el argumento vale @code{false} entonces no se mostrarán los elementos. El arreglo @code{mcs[i,j,k]} está definido de tal modo que el último índice es contravariante.
278 @end deffn
280 @deffn {Función} ricci (@var{dis})
281 Es una función del paquete @code{ctensor}. La función @code{ricci} calcula las componentes covariantes (simétricas) 
282 @code{ric[i,j]} del tensor de Ricci. Si el argumento @var{dis} vale @code{true}, entonces se muestran las componentes no nulas.
283 @end deffn
286 @deffn {Función} uricci (@var{dis})
287 Esta función calcula en primer lugar las componentes covariantes  @code{ric[i,j]} del tensor de Ricci. Después se calcula el tensor de Ricci utilizando la métrica contravariante. Si el valor del argumento @var{dis} vale @code{true}, entonces se mostrarán directamente las componentes @code{uric[i,j]} (el índice @var{i} es covariante y el @var{j} contravariante). En otro caso,  @code{ricci(false)} simplemente calculará las entradas del arreglo @code{uric[i,j]} sin mostrar los resultados.
289 @end deffn
291 @deffn {Función} scurvature ()
293 Devuelve la curvatura escalar (obtenida por contracción del tensor de Ricci) de la variedad de Riemannian con la métrica dada.
295 @end deffn
297 @deffn {Función} einstein (@var{dis})
298 Es una función del paquete @code{ctensor}. La función  @code{einstein} calcula el tensor de Einstein después de que los símbolos de  Christoffel y el tensor de Ricci hayan sido calculados (con las funciones @code{christof} y @code{ricci}).  Si el argumento @var{dis} vale @code{true}, entonces se mostrarán los valores no nulos del tensor de Einstein @code{ein[i,j]}, donde @code{j} es el índice contravariante. La variable @code{rateinstein} causará la simplificación racional de estas componentes. Si @code{ratfac} vale @code{true} entonces las componentes también se factorizarán.
300 @end deffn
302 @deffn {Función} leinstein (@var{dis})
303 Es el tensor covariante de Einstein. La función @code{leinstein} almacena los valores del tensor covariante de Einstein en el arreglo @code{lein}. El tensor covariante de Einstein se calcula a partir del tensor de Einstein @code{ein} multiplicándolo por el tensor métrico. Si el argumento  @var{dis} vale @code{true}, entonces se mostrarán los valores no nulos del tensor covariante de Einstein.
305 @end deffn
307 @deffn {Función} riemann (@var{dis})
308 Es una función del paquete @code{ctensor}. La función @code{riemann} calcula el tensor de curvatura de Riemann a partir de la métrica dada y de los símbolos de Christoffel correspondientes. Se utiliza el siguiente convenio sobre los índices:
310 @example
311                 l      _l       _l       _l   _m    _l   _m
312  R[i,j,k,l] =  R    = |      - |      + |    |   - |    |
313                 ijk     ij,k     ik,j     mk   ij    mj   ik
314 @end example
316 Esta notación es consistente con la notación utilizada por el paquete @code{itensor} y su función @code{icurvature}. Si el argumento opcional @var{dis} vale @code{true}, se muestran las componentes no nulas únicas de @code{riem[i,j,k,l]}. Como en el caso del tensor de Einstein, ciertas variables permiten controlar al usuario la simplificación de las componentes del tensor de Riemann. Si  @code{ratriemann} vale @code{true}, entonces se hará la simplificación racional. Si @code{ratfac} vale @code{true}, entonces se factorizarán todas las componentes.
318 Si la variable @code{cframe_flag} vale @code{false}, el tensor de Riemann se calcula directamente a partir de los símbolos de Christoffel. Si @code{cframe_flag} vale @code{true}, el tensor covariante de Riemann se calcula a partir de los coeficientes del campo.
320 @end deffn
322 @deffn {Función} lriemann (@var{dis})
323 Es el tensor covariante de Riemann (@code{lriem[]}).
325 Calcula el tensor covariante de Riemann como un arreglo @code{lriem}. Si el argumento @var{dis} vale @code{true}, sólo se muestran los valores no nulos.
327 Si la variable @code{cframe_flag} vale @code{true}, el tensor covariante de Riemann se calcula directamente de los coeficientes del campo. En otro caso, el tensor de Riemann (3,1) se calcula en primer lugar.
329 Para más información sobre la ordenación de los índices, véase @code{riemann}.
331 @end deffn
333 @deffn {Función} uriemann (@var{dis})
334 Calcula las componentes contravariantes del tensor de curvatura de Riemann como un arreglo @code{uriem[i,j,k,l]}.  Éstos se muestran si @var{dis} vale @code{true}.
336 @end deffn
338 @deffn {Función} rinvariant ()
339 Calcula la invariante de Kretchmann (@code{kinvariant}) obtenida por contracción de los tensores.
341 @example
342 lriem[i,j,k,l]*uriem[i,j,k,l].
343 @end example
345 Este objeto no se simplifica automáticamente al ser en ocasiones muy grande.
347 @end deffn
349 @deffn {Función} weyl (@var{dis})
350 Calcula el tensor conforme de Weyl. Si el argumento @var{dis} vale @code{true}, se le mostrarán al usuario las componentes no nulas @code{weyl[i,j,k,l]}. En otro caso, estas componentes serán únicamente calculadas y almacenadas. Si la variable @code{ratweyl} vale @code{true}, entonces las componentes se simplifican racionalmente; si @code{ratfac} vale @code{true} los resultados también se simplificarán.
352 @end deffn
354 @subsection Desarrollo de Taylor
356 El paquete @code{ctensor} puede truncar resultados e interpretarlos como aproximaciones de Taylor. Este comportamiento se controla con lavariable @code{ctayswitch}; cuando vale @code{true}, @code{ctensor} utiliza internamente la función @code{ctaylor} cuando simplifica resultados.
358 La función @code{ctaylor} es llamada desde las siguientes funciones del paquete @code{ctensor}:
360 @example
362     Función      Comentarios
363     ---------------------------------
364     christof()   Sólo para mcs
365     ricci()
366     uricci()
367     einstein()
368     riemann()
369     weyl()
370     checkdiv()
371 @end example
373 @deffn {Función} ctaylor ()
375 La función @code{ctaylor} trunca su argumento convirtiéndolo en un desarrollo de Taylor por medio de la función @code{taylor} e invocando después a @code{ratdisrep}. Esto tiene el efecto de eliminar términos de orden alto en la variable de expansión @code{ctayvar}. El orden de los términos que deben ser eliminados se define @code{ctaypov}; el punto alrededor del cual se desarrolla la serie se especifica en @code{ctaypt}.
377 Como ejemplo, considérese una sencilla métrica que es una perturbación de la de Minkowski. Sin añadir restricciones, incluso una métrica diagonal produce expansiones del tensor de Einstein que pueden llegar a ser muy complejas:
379 @example
381 (%i1) load(ctensor);
382 (%o1)       /share/tensor/ctensor.mac
383 (%i2) ratfac:true;
384 (%o2)                                true
385 (%i3) derivabbrev:true;
386 (%o3)                                true
387 (%i4) ct_coords:[t,r,theta,phi];
388 (%o4)                         [t, r, theta, phi]
389 (%i5) lg:matrix([-1,0,0,0],[0,1,0,0],[0,0,r^2,0],[0,0,0,r^2*sin(theta)^2]);
390                         [ - 1  0  0         0        ]
391                         [                            ]
392                         [  0   1  0         0        ]
393                         [                            ]
394 (%o5)                   [          2                 ]
395                         [  0   0  r         0        ]
396                         [                            ]
397                         [              2    2        ]
398                         [  0   0  0   r  sin (theta) ]
399 (%i6) h:matrix([h11,0,0,0],[0,h22,0,0],[0,0,h33,0],[0,0,0,h44]);
400                             [ h11   0    0    0  ]
401                             [                    ]
402                             [  0   h22   0    0  ]
403 (%o6)                       [                    ]
404                             [  0    0   h33   0  ]
405                             [                    ]
406                             [  0    0    0   h44 ]
407 (%i7) depends(l,r);
408 (%o7)                               [l(r)]
409 (%i8) lg:lg+l*h;
410          [ h11 l - 1      0          0                 0            ]
411          [                                                          ]
412          [     0      h22 l + 1      0                 0            ]
413          [                                                          ]
414 (%o8)    [                        2                                 ]
415          [     0          0      r  + h33 l            0            ]
416          [                                                          ]
417          [                                    2    2                ]
418          [     0          0          0       r  sin (theta) + h44 l ]
419 (%i9) cmetric(false);
420 (%o9)                                done
421 (%i10) einstein(false);
422 (%o10)                               done
423 (%i11) ntermst(ein);
424 [[1, 1], 62] 
425 [[1, 2], 0] 
426 [[1, 3], 0] 
427 [[1, 4], 0] 
428 [[2, 1], 0] 
429 [[2, 2], 24] 
430 [[2, 3], 0] 
431 [[2, 4], 0] 
432 [[3, 1], 0] 
433 [[3, 2], 0] 
434 [[3, 3], 46] 
435 [[3, 4], 0] 
436 [[4, 1], 0] 
437 [[4, 2], 0] 
438 [[4, 3], 0] 
439 [[4, 4], 46] 
440 (%o12)                               done
442 @end example
444 Sin embargo, si se recalcula este ejemplo como una aproximación lineal en la variable @code{l}, se obtienen expresiones más sencillas:
446 @example
448 (%i14) ctayswitch:true;
449 (%o14)                               true
450 (%i15) ctayvar:l;
451 (%o15)                                 l
452 (%i16) ctaypov:1;
453 (%o16)                                 1
454 (%i17) ctaypt:0;
455 (%o17)                                 0
456 (%i18) christof(false);
457 (%o18)                               done
458 (%i19) ricci(false);
459 (%o19)                               done
460 (%i20) einstein(false);
461 (%o20)                               done
462 (%i21) ntermst(ein);
463 [[1, 1], 6] 
464 [[1, 2], 0] 
465 [[1, 3], 0] 
466 [[1, 4], 0] 
467 [[2, 1], 0] 
468 [[2, 2], 13] 
469 [[2, 3], 2] 
470 [[2, 4], 0] 
471 [[3, 1], 0] 
472 [[3, 2], 2] 
473 [[3, 3], 9] 
474 [[3, 4], 0] 
475 [[4, 1], 0] 
476 [[4, 2], 0] 
477 [[4, 3], 0] 
478 [[4, 4], 9] 
479 (%o21)                               done
480 (%i22) ratsimp(ein[1,1]);
481                          2      2  4               2     2
482 (%o22) - (((h11 h22 - h11 ) (l )  r  - 2 h33 l    r ) sin (theta)
483                               r               r r
485                                 2               2      4    2
486                   - 2 h44 l    r  - h33 h44 (l ) )/(4 r  sin (theta))
487                            r r                r
491 @end example
493 Esta capacidad del paquete @code{ctensor} puede ser muy útil; por ejemplo, cuando se trabaja en zonas del campo gravitatorio alejadas del origen de éste.
495 @end deffn
497 @subsection Campos del sistema de referencia
499 Cuando la variable @code{cframe_flag} vale @code{true}, el paquete @code{ctensor} realiza sus cálculos utilizando un sistema de referencia móvil.
501 @deffn {Función} frame_bracket (@var{fr}, @var{fri}, @var{diagframe})
502 Es el sistema de referencia soporte (@code{fb[]}).
504 Calcula el soporte del sistema de referencia de acuerdo con la siguiente definición:
506 @example
507    c          c         c        d     e
508 ifb   = ( ifri    - ifri    ) ifr   ifr
509    ab         d,e       e,d      a     b
510 @end example
512 @end deffn
514 @subsection Clasificación algebraica
516 Una nueva funcionalidad (Noviembre de 2004) de @code{ctensor} es su capacidad de obtener la clasificación de Petrov de una métrica espaciotemporal de dimensión 4. Para una demostración de esto véase el fichero 
517 @code{share/tensor/petrov.dem}.
519 @deffn {Función} nptetrad ()
520 Calcula la cuaterna nula de Newman-Penrose (@code{np}). Véase @code{petrov} para un ejemplo.
522 La cuaterna nula se construye bajo la suposición de que se está utilizando una métrica tetradimensional ortonormal con signatura métrica (-,+,+,+). Los componentes de la cuaterna nula se relacionan con la inversa de la matriz del sistema de referencia de la siguiente manera:
524 @example
526 np  = (fri  + fri ) / sqrt(2)
527   1       1      2
529 np  = (fri  - fri ) / sqrt(2)
530   2       1      2
532 np  = (fri  + %i fri ) / sqrt(2)
533   3       3         4
535 np  = (fri  - %i fri ) / sqrt(2)
536   4       3         4
538 @end example
540 @end deffn
542 @deffn {Función} psi (@var{dis})
543 Calcula los cinco coeficientes de Newman-Penrose @code{psi[0]}...@code{psi[4]}.
544 Si @code{dis} vale @code{true}, se muestran estos coeficientes. 
545 Véase @code{petrov} para un ejemplo.
547 @c AQUI HAY UN PARRAFO COMPLETO POR TRADUCIR (Mario)
548 Estos coeficientes se calculan a partir del tensor de Weyl.
550 @end deffn
552 @deffn {Función} petrov ()
553 Calcula la clasificación de  Petrov de la métrica caracterizada por @code{psi[0]}...@code{psi[4]}.
555 Por ejemplo, lo que sigue demuestra cómo obtener la clasificación de Petrov para la métrica de Kerr:
557 @example
558 (%i1) load(ctensor);
559 (%o1)       /share/tensor/ctensor.mac
560 (%i2) (cframe_flag:true,gcd:spmod,ctrgsimp:true,ratfac:true);
561 (%o2)                                true
562 (%i3) ct_coordsys(exteriorschwarzschild,all);
563 (%o3)                                done
564 (%i4) ug:invert(lg)$
565 (%i5) weyl(false);
566 (%o5)                                done
567 (%i6) nptetrad(true);
568 (%t6) np = 
570        [  sqrt(r - 2 m)           sqrt(r)                                     ]
571        [ ---------------   ---------------------      0             0         ]
572        [ sqrt(2) sqrt(r)   sqrt(2) sqrt(r - 2 m)                              ]
573        [                                                                      ]
574        [  sqrt(r - 2 m)            sqrt(r)                                    ]
575        [ ---------------  - ---------------------     0             0         ]
576        [ sqrt(2) sqrt(r)    sqrt(2) sqrt(r - 2 m)                             ]
577        [                                                                      ]
578        [                                              r      %i r sin(theta)  ]
579        [        0                    0             -------   ---------------  ]
580        [                                           sqrt(2)       sqrt(2)      ]
581        [                                                                      ]
582        [                                              r       %i r sin(theta) ]
583        [        0                    0             -------  - --------------- ]
584        [                                           sqrt(2)        sqrt(2)     ]
586                              sqrt(r)          sqrt(r - 2 m)
587 (%t7) npi = matrix([- ---------------------, ---------------, 0, 0], 
588                       sqrt(2) sqrt(r - 2 m)  sqrt(2) sqrt(r)
590           sqrt(r)            sqrt(r - 2 m)
591 [- ---------------------, - ---------------, 0, 0], 
592    sqrt(2) sqrt(r - 2 m)    sqrt(2) sqrt(r)
594            1               %i
595 [0, 0, ---------, --------------------], 
596        sqrt(2) r  sqrt(2) r sin(theta)
598            1                 %i
599 [0, 0, ---------, - --------------------])
600        sqrt(2) r    sqrt(2) r sin(theta)
602 (%o7)                                done
603 (%i7) psi(true);
604 (%t8)                              psi  = 0
605                                       0
607 (%t9)                              psi  = 0
608                                       1
610                                           m
611 (%t10)                             psi  = --
612                                       2    3
613                                           r
615 (%t11)                             psi  = 0
616                                       3
618 (%t12)                             psi  = 0
619                                       4
620 (%o12)                               done
621 (%i12) petrov();
622 (%o12)                                 D
624 @end example
626 La función de clasificación de Petrov se basa en el algoritmo publicado en "Classifying geometries in general relativity: III Classification in practice" de Pollney, Skea, and d'Inverno, Class. Quant. Grav. 17 2885-2902 (2000).
627 Excepto para algunos ejemplos sencillos, esta implementación no ha sido exhaustivamente probada, por lo que puede contener errores.
629 @end deffn
631 @subsection Torsión y no metricidad
633 El paquete @code{ctensor} es capaz de calcular e incluir coeficientes de torsión y no metricidad en los coeficientes de conexión.
635 Los coeficientes de torsión se calculan a partir de un tensor suministrado por el usuario, @code{tr}, el cual debe ser de rango (2,1). A partir de ahí, los coeficientes de torsión @code{kt} se calculan de acuerdo con las siguientes fórmulas:
637 @example
639               m          m      m
640        - g  tr   - g   tr   - tr   g
641           im  kj    jm   ki     ij  km
642 kt   = -------------------------------
643   ijk                 2
646   k     km
647 kt   = g   kt
648   ij         ijm
650 @end example
652 @c AQUI FALTA UN PARRAFO
654 Los coeficientes de no metricidad se calculan a partir de un vector de no metricidad, @code{nm}, suministrado por el usuario. A partir de ahí, los coeficientes de no metricidad, @code{nmc}, se calculan como se indica a continuación:
656 @example
658              k    k        km
659        -nm  D  - D  nm  + g   nm  g
660    k      i  j    i   j         m  ij
661 nmc  = ------------------------------
662    ij                2
664 @end example
666 donde D es la delta de Kronecker.
668 @c AQUI FALTAN DOS PARRAFOS
670 @deffn {Función} contortion (@var{tr})
672 Calcula los coeficientes (2,1) de contorsión del tensor de torsión @var{tr}.
674 @end deffn
676 @deffn {Función} nonmetricity (@var{nm})
678 Calcula los coeficientes (2,1) de no metricidad del vector de no metricidad @var{nm}.
680 @end deffn
682 @subsection Otras funcionalidades
684 @deffn {Función} ctransform (@var{M})
685 Es una función del paquete @code{ctensor}.  Realiza una transformación de coordenadas a partir de una matriz cuadrada simétrica @var{M} arbitraria. El usuario debe introducir las funciones que definen la transformación.
687 @end deffn
689 @deffn {Función} findde (@var{A}, @var{n})
691 Devuelve la lista de las ecuaciones diferenciales que corresponden a los elementos del arreglo cuadrado @var{n}-dimensional. El argumento @var{n} puede ser 2 ó 3; @code{deindex} es una lista global que contiene los índices de @var{A} que corresponden a estas ecuaciones diferenciales. Para el tensor de Einstein (@code{ein}), que es un arreglo bidimensional, si se calcula para la métrica del ejemplo de más abajo, @code{findde} devuelve las siguientes ecuaciones diferenciales independientes:
693 @example
694 (%i1) load(ctensor);
695 (%o1)       /share/tensor/ctensor.mac
696 (%i2) derivabbrev:true;
697 (%o2)                                true
698 (%i3) dim:4;
699 (%o3)                                  4
700 (%i4) lg:matrix([a,0,0,0],[0,x^2,0,0],[0,0,x^2*sin(y)^2,0],[0,0,0,-d]);
701                           [ a  0       0        0  ]
702                           [                        ]
703                           [     2                  ]
704                           [ 0  x       0        0  ]
705 (%o4)                     [                        ]
706                           [         2    2         ]
707                           [ 0  0   x  sin (y)   0  ]
708                           [                        ]
709                           [ 0  0       0       - d ]
710 (%i5) depends([a,d],x);
711 (%o5)                            [a(x), d(x)]
712 (%i6) ct_coords:[x,y,z,t];
713 (%o6)                            [x, y, z, t]
714 (%i7) cmetric();
715 (%o7)                                done
716 (%i8) einstein(false);
717 (%o8)                                done
718 (%i9) findde(ein,2);
719                                             2
720 (%o9) [d  x - a d + d, 2 a d d    x - a (d )  x - a  d d  x + 2 a d d
721         x                     x x         x        x    x            x
723                                                         2          2
724                                                 - 2 a  d , a  x + a  - a]
725                                                      x      x
726 (%i10) deindex;
727 (%o10)                     [[1, 1], [2, 2], [4, 4]]
729 @end example
731 @end deffn
733 @deffn {Función} cograd ()
734 Calcula el gradiente covariante de una función escalar permitiendo al usuario
735 elegir el nombre del vector correspondiente, tal como ilustra el ejemplo que acompaña
736 a la definición de la función @code{contragrad}.
737 @end deffn
740 @deffn {Function} contragrad ()
742 Calcula el gradiente contravariante de una función escalar permitiendo al usuario elegir el nombre del vector correspondiente, tal como muestra el siguiente ejemplo para la métrica de Schwarzschild:
744 @example
746 (%i1) load(ctensor);
747 (%o1)       /share/tensor/ctensor.mac
748 (%i2) derivabbrev:true;
749 (%o2)                                true
750 (%i3) ct_coordsys(exteriorschwarzschild,all);
751 (%o3)                                done
752 (%i4) depends(f,r);
753 (%o4)                               [f(r)]
754 (%i5) cograd(f,g1);
755 (%o5)                                done
756 (%i6) listarray(g1);
757 (%o6)                            [0, f , 0, 0]
758                                       r
759 (%i7) contragrad(f,g2);
760 (%o7)                                done
761 (%i8) listarray(g2);
762                                f  r - 2 f  m
763                                 r        r
764 (%o8)                      [0, -------------, 0, 0]
765                                      r
767 @end example
769 @end deffn
771 @deffn {Función} dscalar ()
772 Calcula el tensor de d'Alembertian de la función escalar una vez se han declarado las dependencias. Por ejemplo:
774 @example
775 (%i1) load(ctensor);
776 (%o1)       /share/tensor/ctensor.mac
777 (%i2) derivabbrev:true;
778 (%o2)                                true
779 (%i3) ct_coordsys(exteriorschwarzschild,all);
780 (%o3)                                done
781 (%i4) depends(p,r);
782 (%o4)                               [p(r)]
783 (%i5) factor(dscalar(p));
784                           2
785                     p    r  - 2 m p    r + 2 p  r - 2 m p
786                      r r           r r        r          r
787 (%o5)               --------------------------------------
788                                        2
789                                       r
790 @end example
792 @end deffn
794 @deffn {Función} checkdiv ()
796 Calcula la divergencia covariante del tensor de segundo rango (mixed second rank tensor), cuyo primer índice debe ser covariante, devolviendo las @code{n} componentes correspondientes del campo vectorial (la divergencia), siendo @code{n = dim}. @c FALTA POR COMPLETAR ESTE PARRAFO.
797 @end deffn
799 @deffn {Función} cgeodesic (@var{dis})
800 Es una función del paquete @code{ctensor} que calcula las ecuaciones geodésicas del movimiento para una métrica dada, las cuales se almacenan en el arreglo @code{geod[i]}. Si el argumento  @var{dis} vale @code{true} entonces se muestran estas ecuaciones.
802 @end deffn
804 @deffn {Función} bdvac (@var{f})
806 Genera las componentes covariantes de las ecuaciones del campo vacío de la teoría gravitacional de Brans- Dicke gravitational. El campo escalar se especifica con el argumento  @var{f}, el cual debe ser el nombre de una función no evaluada (precedida de apóstrofo) con dependencias funcionales, por ejemplo,  @code{'p(x)}.
808 Las componentes del tensor covariante (second rank covariant field tensor) se almacenan en el arreglo @code{bd}.
810 @end deffn
812 @deffn {Función} invariant1 ()
814 Genera el tensor de Euler-Lagrange (ecuaciones de campo) para la densidad invariante de  R^2. Las ecuaciones de campo son las componentes del arreglo @code{inv1}.
816 @end deffn
818 @subsection Utilidades
820 @deffn {Función} diagmatrixp (@var{M})
822 Devuelve @code{true} si @var{M} es una matriz diagonal o un arreglo bidimensional.
824 @end deffn
826 @deffn {Función} symmetricp (@var{M})
828 Devuelve @code{true} si @var{M} es una matriz simétrica o un arreglo bidimensional.
830 @end deffn
832 @deffn {Función} ntermst (@var{f})
833 Permite hacerse una idea del tamaño del tensor @var{f}. @c FALTA COMPLETAR PARRAFO
835 @end deffn
838 @deffn {Función} cdisplay (@var{ten})
839 Muestra todos los elementos del tensor @var{ten} como arreglo multidimensional. Tensors de rango 0 y 1, así como otros tipos de variables, se muestran como en @code{ldisplay}. Tensors de rango 2 se muestran como matrices bidimensionales, mientras que tensores de mayor rango se muestran como listas de matrices bidimensionales. Por ejemplo, el tensor de Riemann de la métrica de Schwarzschild se puede ver como:
841 @example
842 (%i1) load(ctensor);
843 (%o1)       /share/tensor/ctensor.mac
844 (%i2) ratfac:true;
845 (%o2)                                true
846 (%i3) ct_coordsys(exteriorschwarzschild,all);
847 (%o3)                                done
848 (%i4) riemann(false);
849 (%o4)                                done
850 (%i5) cdisplay(riem);
851                [ 0               0                    0            0      ]
852                [                                                          ]
853                [                              2                           ]
854                [      3 m (r - 2 m)   m    2 m                            ]
855                [ 0  - ------------- + -- - ----       0            0      ]
856                [            4          3     4                            ]
857                [           r          r     r                             ]
858                [                                                          ]
859     riem     = [                                 m (r - 2 m)              ]
860         1, 1   [ 0               0               -----------       0      ]
861                [                                      4                   ]
862                [                                     r                    ]
863                [                                                          ]
864                [                                              m (r - 2 m) ]
865                [ 0               0                    0       ----------- ]
866                [                                                   4      ]
867                [                                                  r       ]
869                                 [    2 m (r - 2 m)       ]
870                                 [ 0  -------------  0  0 ]
871                                 [          4             ]
872                                 [         r              ]
873                      riem     = [                        ]
874                          1, 2   [ 0        0        0  0 ]
875                                 [                        ]
876                                 [ 0        0        0  0 ]
877                                 [                        ]
878                                 [ 0        0        0  0 ]
880                                 [         m (r - 2 m)    ]
881                                 [ 0  0  - -----------  0 ]
882                                 [              4         ]
883                                 [             r          ]
884                      riem     = [                        ]
885                          1, 3   [ 0  0        0        0 ]
886                                 [                        ]
887                                 [ 0  0        0        0 ]
888                                 [                        ]
889                                 [ 0  0        0        0 ]
891                                 [            m (r - 2 m) ]
892                                 [ 0  0  0  - ----------- ]
893                                 [                 4      ]
894                                 [                r       ]
895                      riem     = [                        ]
896                          1, 4   [ 0  0  0        0       ]
897                                 [                        ]
898                                 [ 0  0  0        0       ]
899                                 [                        ]
900                                 [ 0  0  0        0       ]
902                                [       0         0  0  0 ]
903                                [                         ]
904                                [       2 m               ]
905                                [ - ------------  0  0  0 ]
906                     riem     = [    2                    ]
907                         2, 1   [   r  (r - 2 m)          ]
908                                [                         ]
909                                [       0         0  0  0 ]
910                                [                         ]
911                                [       0         0  0  0 ]
913                    [     2 m                                         ]
914                    [ ------------  0        0               0        ]
915                    [  2                                              ]
916                    [ r  (r - 2 m)                                    ]
917                    [                                                 ]
918                    [      0        0        0               0        ]
919                    [                                                 ]
920         riem     = [                         m                       ]
921             2, 2   [      0        0  - ------------        0        ]
922                    [                     2                           ]
923                    [                    r  (r - 2 m)                 ]
924                    [                                                 ]
925                    [                                         m       ]
926                    [      0        0        0         - ------------ ]
927                    [                                     2           ]
928                    [                                    r  (r - 2 m) ]
930                                 [ 0  0       0        0 ]
931                                 [                       ]
932                                 [            m          ]
933                                 [ 0  0  ------------  0 ]
934                      riem     = [        2              ]
935                          2, 3   [       r  (r - 2 m)    ]
936                                 [                       ]
937                                 [ 0  0       0        0 ]
938                                 [                       ]
939                                 [ 0  0       0        0 ]
941                                 [ 0  0  0       0       ]
942                                 [                       ]
943                                 [               m       ]
944                                 [ 0  0  0  ------------ ]
945                      riem     = [           2           ]
946                          2, 4   [          r  (r - 2 m) ]
947                                 [                       ]
948                                 [ 0  0  0       0       ]
949                                 [                       ]
950                                 [ 0  0  0       0       ]
952                                       [ 0  0  0  0 ]
953                                       [            ]
954                                       [ 0  0  0  0 ]
955                                       [            ]
956                            riem     = [ m          ]
957                                3, 1   [ -  0  0  0 ]
958                                       [ r          ]
959                                       [            ]
960                                       [ 0  0  0  0 ]
962                                       [ 0  0  0  0 ]
963                                       [            ]
964                                       [ 0  0  0  0 ]
965                                       [            ]
966                            riem     = [    m       ]
967                                3, 2   [ 0  -  0  0 ]
968                                       [    r       ]
969                                       [            ]
970                                       [ 0  0  0  0 ]
972                                [   m                      ]
973                                [ - -   0   0       0      ]
974                                [   r                      ]
975                                [                          ]
976                                [        m                 ]
977                                [  0   - -  0       0      ]
978                     riem     = [        r                 ]
979                         3, 3   [                          ]
980                                [  0    0   0       0      ]
981                                [                          ]
982                                [              2 m - r     ]
983                                [  0    0   0  ------- + 1 ]
984                                [                 r        ]
986                                     [ 0  0  0    0   ]
987                                     [                ]
988                                     [ 0  0  0    0   ]
989                                     [                ]
990                          riem     = [            2 m ]
991                              3, 4   [ 0  0  0  - --- ]
992                                     [             r  ]
993                                     [                ]
994                                     [ 0  0  0    0   ]
996                                 [       0        0  0  0 ]
997                                 [                        ]
998                                 [       0        0  0  0 ]
999                                 [                        ]
1000                      riem     = [       0        0  0  0 ]
1001                          4, 1   [                        ]
1002                                 [      2                 ]
1003                                 [ m sin (theta)          ]
1004                                 [ -------------  0  0  0 ]
1005                                 [       r                ]
1007                                 [ 0        0        0  0 ]
1008                                 [                        ]
1009                                 [ 0        0        0  0 ]
1010                                 [                        ]
1011                      riem     = [ 0        0        0  0 ]
1012                          4, 2   [                        ]
1013                                 [         2              ]
1014                                 [    m sin (theta)       ]
1015                                 [ 0  -------------  0  0 ]
1016                                 [          r             ]
1018                               [ 0  0          0          0 ]
1019                               [                            ]
1020                               [ 0  0          0          0 ]
1021                               [                            ]
1022                    riem     = [ 0  0          0          0 ]
1023                        4, 3   [                            ]
1024                               [                2           ]
1025                               [         2 m sin (theta)    ]
1026                               [ 0  0  - ---------------  0 ]
1027                               [                r           ]
1029                  [        2                                             ]
1030                  [   m sin (theta)                                      ]
1031                  [ - -------------         0                0         0 ]
1032                  [         r                                            ]
1033                  [                                                      ]
1034                  [                         2                            ]
1035                  [                    m sin (theta)                     ]
1036       riem     = [        0         - -------------         0         0 ]
1037           4, 4   [                          r                           ]
1038                  [                                                      ]
1039                  [                                          2           ]
1040                  [                                   2 m sin (theta)    ]
1041                  [        0                0         ---------------  0 ]
1042                  [                                          r           ]
1043                  [                                                      ]
1044                  [        0                0                0         0 ]
1046 (%o5)                                done
1048 @end example
1049 @end deffn
1051 @deffn {Función} deleten (@var{L}, @var{n})
1052 Devuelve una nueva lista consistente en @var{L} sin su @var{n}-ésimo elemento.
1053 @end deffn
1055 @subsection Variables utilizadas por @code{ctensor}
1057 @defvr {Variable opcional} dim
1058 Valor por defecto: 4
1060 Es la dimensión de la variedad, que por defecto será 4. La instrucción @code{dim: n} establecerá la dimensión a cualquier otro valor @code{n}.
1062 @end defvr
1064 @defvr {Variable opcional} diagmetric
1065 Valor por defecto: @code{false}
1067 Si @code{diagmetric} vale @code{true} se utilizarán rutinas especiales para calcular todos los objetos geométricos teniendo en cuenta la diagonalidad de la métrica, lo que redundará en una reducción del tiempo de cálculo. Esta opción se fija automáticamente por @code{csetup} si se especifica una métrica diagonal.
1069 @end defvr
1071 @defvr {Variable opcional} ctrgsimp
1073 Provoca que se realicen simplificaciones trigonométricas cuando se calculan tensores. La variable @code{ctrgsimp} afecta únicamente a aquellos cálculos que utilicen un sistema de referencia móvil.
1075 @end defvr
1077 @defvr {Variable opcional} cframe_flag
1079 Provoca que los cálculos se realicen respecto de un sistema de referencia móvil. @c FALTA POR COMPLETAR EL PARRAFO
1081 @end defvr
1083 @defvr {Variable opcional} ctorsion_flag
1085 Obliga a que se calcule también el tensor de contorsión junto con los coeficientes de conexión. El propio tensor de contorsión se calcula con la función @code{contortion} a partir del tensor @code{tr} suministrado por el usuario.
1087 @end defvr
1089 @defvr {Variable opcional} cnonmet_flag
1091 Obliga a que se calculen también los coeficientes de no metricidad junto con los coeficientes de conexión. Los coeficientes de no metricidad se calculan con la función @code{nonmetricity} a partir del vector de no metricidad@code{nm} suministrado por el usuario.
1093 @end defvr
1095 @defvr {Variable opcional} ctayswitch
1097 Si vale @code{true}, obliga a que ciertos cálculos de @code{ctensor} se lleven a cabo utilizando desarrollos de series de 
1098 Taylor. Estos cálculos hacen referencia a las funciones @code{christof}, @code{ricci}, @code{uricci}, @code{einstein} y @code{weyl}.
1100 @end defvr
1102 @defvr {Variable opcional} ctayvar
1104 Variable utilizada para desarrollos de Taylor cuando la variable @code{ctayswitch} vale @code{true}.
1106 @end defvr
1108 @defvr {Variable opcional} ctaypov
1110 Máximo exponente utilizado en los desarrollos de Taylor cuando @code{ctayswitch} vale @code{true}.
1112 @end defvr
1114 @defvr {Variable opcional} ctaypt
1116 Punto alrededor del cual se realiza un desarrollo de Taylor cuando @code{ctayswitch} vale @code{true}.
1118 @end defvr
1120 @defvr {Variable opcional} gdet
1122 Es el determinante del tensor métrico @code{lg}, calculado por  @code{cmetric} cuando @code{cframe_flag} vale @code{false}.
1124 @end defvr
1126 @defvr {Variable opcional} ratchristof
1128 Obliga a que la función @code{christof} aplique la simplificación racional.
1130 @end defvr
1132 @defvr {Variable opcional} rateinstein
1133 Valor por defecto: @code{true}
1135 Si vale @code{true} entonces se hará la simplificación racional en los componentes no nulos de los tensores de Einstein; si @code{ratfac} vale @code{true} entonces las componentes también serán factorizadas.
1137 @end defvr
1139 @defvr {Variable opcional} ratriemann
1140 Valor por defecto: @code{true}
1142 Es una de las variables que controlan la simplificación de los tensores de Riemann; si vale @code{true}, entonces se llevará a cabo la simplificación racional; si @code{ratfac} vale @code{true} entonces las componentes también serán factorizadas.
1144 @end defvr
1146 @defvr {Variable opcional} ratweyl
1147 Valor por defecto: @code{true}
1149 Si vale @code{true}, entonces la función @code{weyl} llevará a cabo la simplificación racional de los valores del tensor de Weyl. si @code{ratfac} vale @code{true} entonces las componentes también serán factorizadas.
1150 @end defvr
1152 @defvr {Variable} lfg
1153 Es la covariante de la métrica del sistema de referencia. Por defecto, está inicializada al sistema de referencia tetradimensional de Lorentz con signatura  (+,+,+,-). Se utiliza cuando @code{cframe_flag} vale @code{true}.
1154 @end defvr
1156 @defvr {Variable} ufg
1157 Es la métrica del sistema de referencia inverso. La calcula @code{lfg} cuando @code{cmetric} es invocada tomando  @code{cframe_flag} el valor  @code{true}.
1158 @end defvr
1160 @defvr {Variable} riem
1161 Es el tensor (3,1) de Riemann. Se calcula cuando se invoca la función @code{riemann}. Para información sobre el indexado, véase la descripción de  @code{riemann}.
1163 Si @code{cframe_flag} vale @code{true}, @code{riem} se calcula a partir del tensor covariante de Riemann @code{lriem}.
1165 @end defvr
1167 @defvr {Variable} lriem
1169 Es el tensor covariante de Riemann. Lo calcula la función @code{lriemann}.
1171 @end defvr
1173 @defvr {Variable} uriem
1175 Es el tensor contravariante de Riemann. Lo calcula la función @code{uriemann}.
1177 @end defvr
1179 @defvr {Variable} ric
1181 Es el tensor de Ricci. Lo calcula la función @code{ricci}.
1183 @end defvr
1185 @defvr {Variable} uric
1187 Es el tensor contravariante de Ricci. Lo calcula la función @code{uricci}.
1189 @end defvr
1191 @defvr {Variable} lg
1193 Es el tensor métrico. Este tensor se debe especificar (como matriz cuadrada de orden @code{dim}) antes de que se hagan otros cálculos.
1195 @end defvr
1197 @defvr {Variable} ug
1199 Es la inversa del tensor métrico. Lo calcula la función @code{cmetric}.
1201 @end defvr
1203 @defvr {Variable} weyl
1205 Es el tensor de Weyl. Lo calcula la función @code{weyl}.
1207 @end defvr
1209 @defvr {Variable} fb
1211 Son los coeficientes del sistema de referencia soporte, tal como los calcula @code{frame_bracket}.
1213 @end defvr
1215 @defvr {Variable} kinvariant
1217 Es la invariante de Kretchmann, tal como la calcula la función @code{rinvariant}.
1219 @end defvr
1221 @defvr {Variable} np
1223 Es la cuaterna nula de Newman-Penrose, tal como la calcula la función @code{nptetrad}.
1225 @end defvr
1227 @defvr {Variable} npi
1229 Es la cuaterna nula "raised-index Newman-Penrose". Lo calcula la función @code{nptetrad}.
1230 Se define como @code{ug.np}. El producto @code{np.transpose(npi)} es constante:
1232 @example
1233 (%i39) trigsimp(np.transpose(npi));
1234                               [  0   - 1  0  0 ]
1235                               [                ]
1236                               [ - 1   0   0  0 ]
1237 (%o39)                        [                ]
1238                               [  0    0   0  1 ]
1239                               [                ]
1240                               [  0    0   1  0 ]
1241 @end example
1243 @end defvr
1245 @defvr {Variable} tr
1247 Tensor de rango 3 suministrado por el usuario y que representa una torsión. Lo utiliza la función @code{contortion}.
1248 @end defvr
1250 @defvr {Variable} kt
1252 Es el tensor de contorsión, calculado a partir de @code{tr} por la función @code{contortion}.
1253 @end defvr
1255 @defvr {Variable} nm
1257 Vector de no metricidad suministrado por el usuario. Lo utiliza la función @code{nonmetricity}.
1258 @end defvr
1260 @defvr {Variable} nmc
1262 Son los coeficientes de no metricidad, calculados a partir de @code{nm} por la función @code{nonmetricity}.
1264 @end defvr
1266 @defvr {Variable del sistema} tensorkill
1268 Variable que indica si el paquete de tensores se ha inicializado. Utilizada por @code{csetup} y reinicializada por @code{init_ctensor}.
1270 @end defvr
1272 @defvr {Variable opcional} ct_coords
1273 Valor por defecto: @code{[]}
1275 La variable @code{ct_coords} contiene una lista de coordenadas. Aunque se define normalmente cuando se llama a la función @code{csetup}, también se pueden redefinir las coordenadas con la asignación @code{ct_coords: [j1, j2, ..., jn]} donde  @code{j} es el nuevo nombre de las coordenadas. Véase también @code{csetup}.
1277 @end defvr
1279 @subsection Nombres reservados
1281 Los siguientes nombres se utilizan internamente en el paquete @code{ctensor} y no deberían redefinirse:
1283 @example
1284   Nombre       Descripción
1285   ---------------------------------------
1286   _lg()        Toma el valor @code{lfg} si se utiliza métrica del sistema de referencia,
1287                @code{lg} en otro caso
1288   _ug()        Toma el valor @code{ufg} si se utiliza métrica del sistema de referencia,
1289                @code{ug} en otro caso
1290   cleanup()    Elimina elementos de la lista @code{deindex}
1291   contract4()  Utilizada por @code{psi()}
1292   filemet()    Utilizada por @code{csetup()} cuando se lee la métrica desde un fichero
1293   findde1()    Utilizada por @code{findde()}
1294   findde2()    Utilizada por @code{findde()}
1295   findde3()    Utilizada por @code{findde()}
1296   kdelt()      Delta de Kronecker (no generalizada)
1297   newmet()     Utilizada por @code{csetup()} para establecer una métrica interactivamente
1298   setflags()   Utilizada por @code{init_ctensor()}
1299   readvalue()
1300   resimp()
1301   sermet()     Utilizada por @code{csetup()} para definir una métrica como serie de Taylor
1302   txyzsum()
1303   tmetric()    Métrica del sistema de referencia, utilizada por @code{cmetric()}
1304                cuando @code{cframe_flag:true}
1305   triemann()   Tensor de Riemann en la base del sistema de referencia, se utiliza cuando
1306                @code{cframe_flag:true}
1307   tricci()     Tensor de Ricci en la base del sistema de referencia, se utiliza cuando
1308                @code{cframe_flag:true}
1309   trrc()       Coeficientes de rotación de Ricci, utilizada por @code{christof()}
1310   yesp()
1311 @end example