On Thu, Jun 16, 2011 at 9:27 PM, Brian Granger <[email protected]> wrote: > Sean, > > Here are some notes I sent to you earlier in the summer. The points > made here are quite important.. > > So there are some things you should know about the Wigner D matrix: > > * While I implemented it, I have 0 confidence that the current > implementation is free of bugs. Because of this, one of the first > tasks should be to test this part of the code extensively, both for > numerical and symbolic arguments. > > I would test the D and d matrix code thoroughly *before* moving on to > anything else. It would be great to see a pull request for that. > > * The current method of computing the D matrix is not optimal. This > is because we probably want to use a different form for the integer > and half integer spin values. This is to get the canonical forms > where, for 1/2 integer spins there are things like sin(theta/2) and > cos(theta/2), but for integer spins, sin(theta) and cos(theta) appear. > This should be implemented and then tested extensively. > > This will also help in testing and comparing to the tables in Varsh. > > * Let's use the convention of Varshalovich for the D-matrices. He > follows the convention of most of the other main people in the field > (see Table 4.2 for a list). > > * We should use his convention for Euler angles as well. > > * Because of the intimate relationship between CG, Wigner 3j6j, etc > and the rotation matrices, we probably want to have a symbolic DMatrix > class that we can use when we are representing various sum and > integrals symbolically. This should be separate from the rotation > matrix operator and should be in the same category object as the GC > and Wigner symbols. This will allow us to implement all of the > symmetry relationships that D satisfies as well. > > * Currently I have implemented one of the differential representations > of d(J,m,m') from section 4.3.2. I think that is probably OK for > integer spin, but for half integer spins we should use one of the > formulas from section 4.3.1 that are a sum over k.
Brian, Sean, I think that we should have a WignerD class, that will behave just like this: http://reference.wolfram.com/mathematica/ref/WignerD.html except that it will be called like WignerD(j, m, mp, alpha, beta, gamma), at least that's what I would propose, and it will be thoroughly tested and so on. Then Rotation.D() will return WignerD(j, m, mp, alpha, beta, gamma) and Rotation.d() will return WignerD(j, m, mp, 0, beta, 0). Let me know what you think. This will keep things simple and clean and be compatible with Mathematica. 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.
