On Friday, October 31, 2014 5:53:23 PM UTC+1, Jamie Titus wrote:
>
> Hello all,
>
> I was wondering if anybody knew what the status of the Tensor module is - 
> i.e., is work being done on it, what is the known functionality, and what 
> is the intended functionality. For the past week I have been attempting to 
> use Sympy for basic General Relativity (homework problems really), and it 
> has not gone well.
>

Yes, unfortunately there's still a lot to do before it can be used, just 
consider that it is completely unable to express derivatives.
 

> My naive review of the documentation suggests that I should be able to use 
> Einstein Notation, since I am completely unfamiliar with Penrose's abstract 
> index notation (and it doesn't seem to be as useful computationally, 
> frankly, though the wikipedia article on it is very short).
>

The idea behind the abstract index notation is simple: the structure of 
contracted indices is basis-independent, A(i0, -i0) has the same value in 
all coordinate systems, so someone may want to reason about the index 
structure (and contractions) without working on a coordinate basis.

However, I keep encountering errors when I try to do basic operations such 
> as add or multiply tensors, and I am never quite sure if they are bugs or 
> features. A minimal example is that when you attempt to symmetrize a tensor 
> you just get back double the tensor components, i.e., given a TensorHead A, 
> and indices i0, i1, A(i0, i1) + A(i1, i0) should be manifestly symmetric, 
> but it just results in 2*A(i0, i1). If necessary I can provide minimal 
> working examples in code. I wasn't sure if this is the right place for that.
>

Whenever you add tensor expressions, the canonicalizer is automatically 
called. Given the set of all permissible permutations of indices (and anti 
commutations by inverting the sign of the tensor), the canonicalizer picks 
the one which would come first alphabetically, that is A(i1, i0) becomes 
A(i0, i1). Thus A(i0, i1) + A(i0, i1) gets simplified to 2*A(i0, i1).

It is not clear whether this is the desired behaviour, also considering 
that such an excessive use of the canonicalizer seriously slows down 
performance.
 

> I honestly found the Tensor module very confusing from the standpoint of 
> somebody who is interested in solving simple GR problems, so I'd like to 
> try to understand the rationale behind it and make things clearer for other 
> users.
>

Currently, it simply handles basic polynomials of tensors in expanded form. 
I added the *.data* property to do some reasoning with component data, but 
I'm not very glad with it. I think that the tensor module need an extension 
to support indices representing coordinate systems and basis elements of 
those coordinate systems. This would require to add support for repeated 
indices to the canonicalizer.

Anyways, if you would like to do some calculations, I suggest you have a 
look at *sympy.diffgeom*. Here an example of how to derive the 
Schwarzschild metric with diffgeom:

http://krastanov.files.wordpress.com/2012/07/schwarzschild.pdf

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/d7d0eaa7-e616-407e-a27b-a1c4ff2ff6c1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to