Nächste: , Vorige: , Nach oben: Funktionen und Variablen für ITENSOR   [Inhalt][Index]

20.2.2.2 Tensorsymmetrien

Optionsvariable: allsym

Standardwert: false

Hat die Optionsvariable allsym den Wert true, werden alle indizierten Größen als symmetrisch in ihren kovarianten und kontravarianten Indizes angenommen. Ist der Wert false, werden keine Symmetrien für die Indizes angenommen. Die Indizes von Ableitungen werden immer als symmetrisch angenommen, außer wenn die Optionsvariable iframe_flag den Wert true hat.

Funktion: decsym (tensor, m, n, [cov_1, cov_2, …], [contr_1, contr_2, …])

Definiert Symmetrieeigenschaften für den Tensor tensor mit m kovarianten und n kontravarianten Indizes. Die Argumente cov_i und contr_i geben Symmetrieeigenschaften zwischen den kontravarianten und kontravarianten Indizes an. Die Argumente haben die Form symoper(index_1, index_2, .... symoper ist einer der Symmetrieeigenschaften sym für symmetrisch, anti für antisymmetrisch oder cyc für zyklisch und die Argumente index_i sind ganze Zahlen, die die Position des Index im Tensor tensor angegeben. Weiterhin ist die Form symoper(all) möglich. In diesem Fall wird die entsprechende Symmetrieeigenschaft für alle Indizes angenommen.

Ist zum Beispiel b ein Tensor mit 5 kovarianten Indizes, dann wird mit decsym(b, 5, 3, [sym(1,2), anti(3,4)], [cyc(all)]) definiert, dass b symmetrisch in den Indizes 1 und 2, antisymmetrisch in den Indizes 3 und 4 sowie zyklisch in allen kontravarianten Indizes ist.

Symmetrieeigenschaften, die mit der Funktion decsym definiert werden, werden von der Funktion canform angewendet.

Beispiele:

(%i1) load("itensor");
(%o1)      /share/tensor/itensor.lisp
(%i2) expr:contract( expand( a([i1, j1, k1], [])
           *kdels([i, j, k], [i1, j1, k1])))$
(%i3) ishow(expr)$
(%t3)         a      + a      + a      + a      + a      + a
               k j i    k i j    j k i    j i k    i k j    i j k
(%i4) decsym(a,3,0,[sym(all)],[]);
(%o4)                                done
(%i5) ishow(canform(expr))$
(%t5)                              6 a
                                      i j k
(%i6) remsym(a,3,0);
(%o6)                                done
(%i7) decsym(a,3,0,[anti(all)],[]);
(%o7)                                done
(%i8) ishow(canform(expr))$
(%t8)                                  0
(%i9) remsym(a,3,0);
(%o9)                                done
(%i10) decsym(a,3,0,[cyc(all)],[]);
(%o10)                               done
(%i11) ishow(canform(expr))$
(%t11)                        3 a      + 3 a
                                 i k j      i j k
(%i12) dispsym(a,3,0);
(%o12)                     [[cyc, [[1, 2, 3]], []]]
Funktion: remsym (tensor, m, n)

Entfernt die Symmetrieeigenschaften des Tensors tensor, der m kovariante und n kontravariante Indizes hat.

Funktion: canform (expr)
Funktion: canform (expr, rename)

Vereinfacht den Ausdruck expr indem alle Dummy-Indizes umbenannt und umgeordnet werden, wobei vorhandene Symmetrieeigenschaften angewendet werden. Hat die Optionsvariable allsym den Wert true, werden alle Indizes als symmetrisch angenommen. Ansonsten werden Symmetrieeigenschaften angewendet, die mit der Funktion decsym definiert sind. Die Dummy-Indizes werden auf gleiche Weise umbenannt wie von der Funktion rename. Wird canform auf einen großen Ausdruck angewendet, kann die Ausführung eine lange Zeit beanspruchen. Die Rechenzeit kann verkürzt werden, indem zuerst die Funktion rename auf den Ausdruck angewendet wird.

canform kann einen Ausdruck nicht immer in die einfachste Form bringen, jedoch ist das Ergebnis immer mathematisch korrekt.

Erhält das optionale zweite Argument rename den Wert false, wird die Umbenennung mit der Funktion rename nicht ausgeführt.

Für ein Beispiel siehe die Funktion decsym.


Nächste: , Vorige: , Nach oben: Funktionen und Variablen für ITENSOR   [Inhalt][Index]