Hi Ondrej,
This code is taken from something you put together which was called
tensors.py in 0.6.3, at least that is where I found it on my system,
since I still have 0.6.3 on my disk. I am currently using 0.6.6.6. I
extracted the imports and the class defs from there and put it in a
file certekten.py so I could isolate the defs. It is not clear to me
all your experiment had in mind. What I need to do first is to:
1. figure out how to design classes which allow the definition of
arbitrary mixed rank tensors: TensorDefine(tensorname,rankindices)
where tensorname is just a desired symbol name and rankindices is
something like [pcovariant,qcontravariant] or
[icov1,icov2,...,icontra1,icontra2,...]. The resulting object should
be a symbol decorated with the collection of p contravariant and q
covariant indices.
2. the rendering (prettyprinting) should produce these with latex type
upper and lower indices...like g^{ij} and g_{kl} for example.
3. Rules need to be introduced so that contraction (==sum over
repeated contravariant and covariant indices) should be handled
correctly.
4. derivative operations should be handled e.g. by distribution over
sums, Leibniz product rule symbolically handled, e.g. \partial
( tensor1 * tensor2) ) = (\partial tensor1) * tensor2 + tensor1 *
(\partial tensor2), etc, etc.
plus probably many others. I have looked at scheme implementations
and while I am not very conversant with scheme, it does appear that
Sussman and coworker(s) at MIT have done the differential geometry
stuff. I don't think it focuses on indicial gymnastics but it does
seem to define generic objects which are "up" and "down" as well as
covariant derivative, Ricci tensor, Riemann tensor, the components of
the symmetric connection, etc. I was looking at the scheme way
because I am interested in what kind of data structures they end up
defining for tensor kinds of objects with an eye of maybe using those
as a guide/suggestion as to how tensor objects may be adequately
'classed' in python/sympy.
I have also spent some time recently looking over the sympy core code
trying to get better educated with a hope to see what might be good
ways to go in defining tensor objects... but due to my relative
inexperience I can not seem to see how to translate the properties I
think I want into correctly defined python/sympy.
I am fully aware of your relativity.py example code, which is fine for
what it does. However, there the indices are all integers and the
differentiation is explicit diff, not what is needed in the much more
formal expression handling of tensor algebra and calculus.
I would appreciate help from the sympy community on how to do these
things.
Comer
On May 26, 6:18 pm, Ondrej Certik <[email protected]> wrote:
> On Wed, May 26, 2010 at 12:43 PM, [email protected]
>
> <[email protected]> wrote:
> > Hi,
>
> > I am trying to understand some apparently old code written by Ondrej
> > trying to implement what I think are indicial tensor expressions. I
> > list below the class definitions and then try to give an example. The
> > example results in an error. I believe I recall that Ondrej says that
> > these definitions don't work, but I am trying to understand them and
> > want to try to create some appropriate classes which can contain
> > indicial tensors.
>
> Where is this code from? I think I wrote something like this, but it's
> quite some time ago, so I forgot which issue it is.
>
> It'd be awesome if you wanted to do some support for tensors in sympy.
> The only example, that is known to work is the
>
> python examples/advanced/relativity.py
>
> and I just tried it and it seems to work. So that shows how to get
> something working, and what we need now is some general support for
> tensors.
>
> Ondrej
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy?hl=en.