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