Next: Reservierte Bezeichner, Previous: Exportiere als TeX, Up: Funktionen und Variablen für itensor [Contents][Index]

#### 20.2.2.9 Schnittstelle zum Paket CTENSOR

Das Paket `itensor` ermöglicht die Generierung von Maxima-Code, der im Kontext des Paketes `ctensor` ausgeführt werden kann. Die Funktion `ic_convert` erzeugt den Maxima-Code.

Funktion: ic_convert (eqn)

  Konvertiert eine `itensor`-Gleichung eqn in einen `ctensor`-Ausdruck. Implizite Summen über Dummy-Indizes werden explizit ausgeführt und indizierte Größen werden in Arrays umgewandelt. Die Indizes der Arrays sind in der Reihenfolge der kovarianten und dann der kontravarianten Indizes der indizierte Größe. Die Ableitung einer indizierten Größe wird durch die Substantivform der Ableitung `diff` nach der Variablen `ct_coords` ersetzt, die den Index der Ableitung erhält. Die Christoffel-Symbole `ichr1` und `ichr2` werden zu den Funktionen `lcs` und `mcs` transformiert. Hat `metricconvert` den Wert `true`, dann wird der Metriktensor mit zwei kovarianten Indizes durch `lg` und mit zwei kontravarianten Indizes durch `ug` ersetzt. Weiterhin werden `do`-Schleifen für die Summation über die freien Indizes eingeführt.

  Beispiele:

      (%i1) load(itensor);
      (%o1)      /share/tensor/itensor.lisp
      (%i2) eqn:ishow(t([i,j],[k])=f([],[])*g([l,m],[])*a([],[m],j)
            *b([i],[l,k]))$
                                   k        m   l k
      (%t2)                       t    = f a   b    g
                                   i j      ,j  i    l m
      (%i3) ic_convert(eqn);

      (%o3) for i thru dim do (for j thru dim do (
             for k thru dim do
              t        : f sum(sum(diff(a , ct_coords ) b
               i, j, k                   m           j   i, l, k

       g    , l, 1, dim), m, 1, dim)))
        l, m

      (%i4) imetric(g);
      (%o4)                                done
      (%i5) metricconvert:true;
      (%o5)                                true
      (%i6) ic_convert(eqn);

      (%o6) for i thru dim do (for j thru dim do (
             for k thru dim do
              t        : f sum(sum(diff(a , ct_coords ) b
               i, j, k                   m           j   i, l, k

       lg    , l, 1, dim), m, 1, dim)))
         l, m

Next: Reservierte Bezeichner, Previous: Exportiere als TeX, Up: Funktionen und Variablen für itensor [Contents][Index]