Hi Rob,
Just below your examples. Not everything is in simplified form.
Sorry I did not find your original message (it's probably in my home box).
(C1) load("use.mc");
(D1) use.mc
(C2) bothcases:false;
(D2) FALSE
(C3) load("itensor");
(D3) /usr/local/share/maxima/5.9.0.1cvs/share/tensor/itensor.lisp
(C4) dummyx:U;
(D4) U
(C5) DIM:3;
(D5) 3
(C6) allsym:false;
(D6) FALSE
(C7) declare(lch,constant);
(D7) DONE
(C8) DECSYM(lch,0,3,[],[CYC(ALL),ANTI(ALL)]);
(D8) DONE
(C9) DECSYM(lch,3,0,[CYC(ALL),ANTI(ALL)],[]);
(D9) DONE
(C10) ("curl u cross v")$
(C11) expr : lch([],[i,j,k])*diff(lch([k,l,m],[])*u([],[l])*v([],[m]),j);
(D11) LCH([], [I, J, K]) (U([], [L]) V([], [M], J) LCH([K, L, M], [])
+ U([], [L], J) V([], [M]) LCH([K, L, M], []))
(C12) show(canform(contract(canform(trftkdt(expand(expr))))))$
I U1 I U1 I U1 I U1
(D12) U V - V U + U V - V U
,U1 ,U1 ,U1 ,U1
(C13) ("let use the Euqlid metric then covdiff == diff")$
(C14) ("div(u cross v) ")$
(C15) show(diff(lch([k,l,m],[])*u([],[l])*v([],[m]),k))$
L M L M
(D15) U V LCH + U V LCH
,K K/L/M ,K K/L/M
(C16) ("grad(u dot v)")$
(C17) show(diff(u([i],[])*v([],[i]),j))$
I I
(D17) V U + V U
I,J ,J I
(C18) ("grad(u dot v)")$
(C19) show(diff(u([],[i])*v([],[i]),j))$
I I I I
(D19) U V + V U
,J ,J
(C20) ("Tensor dyad vv")$
(C21) show( v([],[i])*v([],[j]))$
I J
(D21) V V
(C22) ("u dot vv")$
(C23) show(u([i],[])*v([],[i])*v([],[j]))$
I J
(D23) V V U
I
(C24) ("curl (u dot vv)")$
(C25) expr1: canform(diff(lch([l,k,j],[])*u([i],[])*v([],[i])*v([],[j]),k))$
(C26) show( expr1)$
U2 U3 U2 U3
(D26) V V LCH U + V V LCH U
L/U1/U2 U3,U1 ,U1 L/U1/U2 U3
U2 U3
+ V V LCH U
,U1 L/U1/U2 U3
(C27) ("u cross div(vv)")$
(C28) expr2:
canform(expand(lch([l,k,j],[])*u([],[k])*diff(v([],[i])*v([],[j]),i)))$
(C29) show(expr2)$
U1 U2 U3 U1 U2 U3
(D29) U V V LCH + U V V LCH
,U3 L/U1/U2 ,U3 L/U1/U2
(C30) ("curl (u dot vv) - u cross div(vv)" )$
(C31) show(canform(expr1-expr2))$
U2 U3 U2 U3
(D31) V V LCH U + V V LCH U
L/U1/U2 U3,U1 ,U1 L/U1/U2 U3
U2 U3 U1 U2 U3 U1 U2 U3
+ V V LCH U - U V V LCH - U V V LCH
,U1 L/U1/U2 U3 ,U3 L/U1/U2 ,U3
L/U1/U2
(C32)
On Thu, 6 Mar 2003 00:55:52 -0500 (EST)
Rob McDonald <gte398s@asdl.gatech.edu> wrote:
<skipped>
> Also, if you could reveal the method by which you came up with this
> sequence of simplifying commands, it would be appretiated.
>
> SHOW(CANFORM(CONTRACT(CANFORM(TRFTKDT(EXPAND(EXPR))))))
the key function here is TRFTKDT() that is defined in use.mac.
It transforms the product of the defined Levi-Chevitta symbols to
kdelta. Note, my definition of Levi-Chevitta symbol has not got a
property like lch([i,j,k],[])*v([],[j])*v([],[k])==0.
Also to ipmpose the Lorentz gauge (divergency free field) use
lorentz(expr). I cannot propose the similar for condition curl v =0.
Actually curl exist only for 3d. It make sence to formulate the problem
in covariant form and then attack it with itensor.
best regards
Valerij