/* Calcolo tensoriale prolisso */ /* In questo documento wxm calcolo tutte le grandezze tensoriali partendo dal tensore metrico covariante e da quello controvariante che devono esse l'inverso l'uno dell'altro. */ /* Non uso, salvo casi eccezionali, variabili vettoriali o matrici ma assegno PEDANTEMENTE un nome ad ogni elemento di tensore. Uso le seguenti convenzioni. 1) gli indici sono separati dal nome della grandezza tramite il carattere "_". 2) gli indici sono solo alfabetici e monocarattere e quando sono covarianti sono lettere minuscole mentre se sono controvarianti sono lettere maiuscole. 3) uso delle cifre per indicare indici speciali successivi. Indico con 0 la derivata ordinaria e con 9 la derivata covariante. 4) normalmente i quattro indici in forma covariante sono t,x,y e z mentre in forma controvariante sono T,X,Y,Z. Indico le dieci componenti del tensore metrico covariante, in base alle precedenti convenzioni, nel seguente modo: g_tt, g_tx, g_ty, g_tz, g_xt, g_xx, g_xy, g_xz, g_yt, g_yx, g_yy, g_yz, g_zt, g_zx, g_zy, g_zz. Pertanto il tensore metrico controvariante è indicato nel seguente modo: g_TT, g_TX, g_TY, g_TZ, g_XT, g_XX, g_XY, g_XZ, g_YT, g_YX, g_YY, g_YZ, g_ZT, g_ZX, g_ZY, g_ZZ. La derivata parziale prima rispetto al tempo viene indicata con g_tt0t, g_tx0t, .... etc... */ g_tt: T; g_tx: 0; g_ty:0; g_tz:0; g_xx:-1; g_xy:0; g_xz:0; g_yy:-1; g_yz:0; g_zz:-1; (g_xt:g_tx, g_yt:g_ty, g_zt:g_tz, g_yx:g_xy, g_zx:g_xz, g_zy:g_yz); g_TT: 1/T; g_TX: 0; g_TY:0; g_TZ:0; g_XX:-1; g_XY:0; g_XZ:0; g_YY:-1; g_YZ:0; g_ZZ:-1; (g_XT:g_TX, g_YT:g_TY, g_ZT:g_TZ, g_YX:g_XY, g_ZX:g_XZ, g_ZY:g_YZ); ghk:matrix( [ g_tt, g_tx, g_ty, g_tz ], [ g_xt, g_xx, g_xy, g_xz ], [ g_yt, g_yx, g_yy, g_yz ], [ g_zt, g_zx, g_zy, g_zz ]); gHK:matrix( [ g_TT, g_TX, g_TY, g_TZ ], [ g_XT, g_XX, g_XY, g_XZ ], [ g_YT, g_YX, g_YY, g_YZ ], [ g_ZT, g_ZX, g_ZY, g_ZZ ]); /* Verifica. Deve venire la matrice identità: */ ghk . gHK; /* Ora faccio le derivate prime del tensore covariante rispetto alle variabili indipendenti che assumo essere T,X,Y,Z. Notare che uso le maiuscole per ricordare che sono le componenti CONTROVARIANTI del vettore posizione. */ ( g_tt0t:diff(g_tt,T), g_tx0t:diff(g_tx,T), g_ty0t:diff(g_ty,T), g_tz0t:diff(g_tz,T), g_xt0t:diff(g_xt,T), g_xx0t:diff(g_xx,T), g_xy0t:diff(g_xy,T), g_xz0t:diff(g_xz,T), g_yt0t:diff(g_yt,T), g_yx0t:diff(g_yx,T), g_yy0t:diff(g_yy,T), g_yz0t:diff(g_yz,T), g_zt0t:diff(g_zt,T), g_zx0t:diff(g_zx,T), g_zy0t:diff(g_zy,T), g_zz0t:diff(g_zz,T)); ( g_tt0x:diff(g_tt,X), g_tx0x:diff(g_tx,X), g_ty0x:diff(g_ty,X), g_tz0x:diff(g_tz,X), g_xt0x:diff(g_xt,X), g_xx0x:diff(g_xx,X), g_xy0x:diff(g_xy,X), g_xz0x:diff(g_xz,X), g_yt0x:diff(g_yt,X), g_yx0x:diff(g_yx,X), g_yy0x:diff(g_yy,X), g_yz0x:diff(g_yz,X), g_zt0x:diff(g_zt,X), g_zx0x:diff(g_zx,X), g_zy0x:diff(g_zy,X), g_zz0x:diff(g_zz,X)); ( g_tt0y:diff(g_tt,Y), g_tx0y:diff(g_tx,Y), g_ty0y:diff(g_ty,Y), g_tz0y:diff(g_tz,Y), g_xt0y:diff(g_xt,Y), g_xx0y:diff(g_xx,Y), g_xy0y:diff(g_xy,Y), g_xz0y:diff(g_xz,Y), g_yt0y:diff(g_yt,Y), g_yx0y:diff(g_yx,Y), g_yy0y:diff(g_yy,Y), g_yz0y:diff(g_yz,Y), g_zt0y:diff(g_zt,Y), g_zx0y:diff(g_zx,Y), g_zy0y:diff(g_zy,Y), g_zz0y:diff(g_zz,Y)); ( g_tt0z:diff(g_tt,Z), g_tx0z:diff(g_tx,Z), g_ty0z:diff(g_ty,Z), g_tz0z:diff(g_tz,Z), g_xt0z:diff(g_xt,Z), g_xx0z:diff(g_xx,Z), g_xy0z:diff(g_xy,Z), g_xz0z:diff(g_xz,Z), g_yt0z:diff(g_yt,Z), g_yx0z:diff(g_yx,Z), g_yy0z:diff(g_yy,Z), g_yz0z:diff(g_yz,Z), g_zt0z:diff(g_zt,Z), g_zx0z:diff(g_zx,Z), g_zy0z:diff(g_zy,Z), g_zz0z:diff(g_zz,Z));