Hello,
On Saturday 08 March 2003 01:25, Rob McDonald wrote:
> > Hi Rob,
> > Just below your examples. Not everything is in simplified form.
>
> Thanks for taking the time to review these and to address my questions.
>
> I am having a lot of trouble understanding when to use a covarient index,
> and when to use a contravarient index.
> All my books on tensors talk about
> the differences having to do with transformation of bases, and whether the
> coordinate systems in question are oblique or not. This hardly seems
> relavent to what I am doing, where everything lies in a fixed, cartesian
> coordinate system.
>
> For example, I don't understand why
> ("u dot v")$
> correct : u([i],[])*v([],[i])$
> incorrect : u([],[i])*v([],[i])$
It is commonly acccepted that contraction can be done only between covaraint and contravariant dummy indices.
This is a rule of tensor algebra. It is named the Einshtein rule. It is very usefull also from the point of view of symbolic manipulation.
On writing the tensor expression you should take care that all contraction to satisfy this rule. Other things are up to you.
<snipped>
> >
> > (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
>
> Are these two ways of expressing ("grad(u dot v)") equivalent?
Well that is my mystake I wrote the same but in different order. Of course they are, find the difference.
<snipped>
> > 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.
>
> How does lorentz(expr) work?
The general syntax is lorentz(expr,tensot1,...,tensori)
It replace by zero all those tensori which have a derivative index indentical to a contravariant index
> The curl free field condition can also be
> viewed as requiring that 'cross' partial derivatives are equal u_i,j==u_j,i
> A function which sorts these indicies into alphabetical order could
> allow Maxima to perform appropriate simplifications.
Actually what you mean by curl is an exterior derivative. This kind of derivative is not implemented in
itensor. I think it is quite possible to write this function. However applying the curl-free condition on indexed object
could be very complicated. Such things is better to do without indices.
rgds,
Valerij