Maxima Function
ic_convert (eqn)
Converts the itensor
equation eqn to a ctensor
assignment statement.
Implied sums over dummy indices are made explicit while indexed
objects are transformed into arrays (the array subscripts are in the
order of covariant followed by contravariant indices of the indexed
objects). The derivative of an indexed object will be replaced by the
noun form of diff
taken with respect to ct_coords
subscripted
by the derivative index. The Christoffel symbols ichr1
and ichr2
will be translated to lcs
and mcs
, respectively and if
metricconvert
is true
then all occurrences of the metric
with two covariant (contravariant) indices will be renamed to lg
(ug
). In addition, do
loops will be introduced summing over
all free indices so that the
transformed assignment statement can be evaluated by just doing
ev
. The following examples demonstrate the features of this
function.
(%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