root/trunk/special-functions/coupling.lisp

Revision 26, 2.5 kB (checked in by lhealy, 9 months ago)

Subversion version stamp.

  • Property svn:keywords set to Id
Line 
1;; Coupling coefficients
2;; Liam Healy, Sun Mar 19 2006 - 13:30
3;; Time-stamp: <2008-02-16 20:02:09EST coupling.lisp>
4;; $Id$
5
6(in-package :gsl)
7
8#|
9;;; FDL
10The Wigner 3-j, 6-j and 9-j symbols give the coupling coefficients for
11combined angular momentum vectors.  Since the arguments of the standard
12coupling coefficient functions are integer or half-integer, the
13arguments of the following functions are, by convention, integers equal
14to twice the actual spin value.  For information on the 3-j coefficients
15see Abramowitz & Stegun, Section 27.9.  The functions described in this
16section are declared in the header file gsl_sf_coupling.h.
17|#
18
19(defmfun coupling-3j (two-ja two-jb two-jc two-ma two-mb two-mc)
20  "gsl_sf_coupling_3j_e"
21  ((two-ja :int) (two-jb :int) (two-jc :int)
22   (two-ma :int) (two-mb :int) (two-mc :int)
23   (ret sf-result))
24  :documentation                        ; FDL
25  "The Wigner 3-j coefficient,
26  \pmatrix{ja & jb & jc\cr
27         ma & mb & mc\cr}
28  where the arguments are given in half-integer units,
29  ja = two_ja/2, ma = two_ma/2, etc.")
30
31(defmfun coupling-6j (two-ja two-jb two-jc two-jd two-je two-jf)
32  "gsl_sf_coupling_6j_e"
33  ((two-ja :int) (two-jb :int) (two-jc :int)
34   (two-jd :int) (two-je :int) (two-jf :int)
35   (ret sf-result))
36  :documentation                        ; FDL
37  "The Wigner 6-j coefficient,
38   ja & jb & jc
39   jd & je & jf
40  where the arguments are given in half-integer units, ja =
41  two_ja/2, ma = two_ma/2, etc.")
42
43(defmfun coupling-9j
44    (two-ja two-jb two-jc two-jd two-je two-jf two-jg two-jh two-ji)
45  "gsl_sf_coupling_9j_e"
46  ((two-ja :int) (two-jb :int) (two-jc :int)
47   (two-jd :int) (two-je :int) (two-jf :int)
48   (two-jg :int) (two-jh :int) (two-ji :int)
49   (ret sf-result))
50  :documentation                        ; FDL
51  "The Wigner 9-j coefficient,
52  ja & jb & jc
53  jd & je & jf
54  jg & jh & ji
55  where the arguments are given in half-integer units,
56  ja = two_ja/2, ma = two_ma/2, etc.")
57
58;; Check with online calculator http://www-stone.ch.cam.ac.uk/wigner.html
59#|
60(make-tests coupling
61  (coupling-3j 0 1 1 0 1 -1)
62  (coupling-6j 1 1 2 0 2 1)
63  (coupling-9j 1 1 2 1 2 1 2 1 1))
64|#
65
66(LISP-UNIT:DEFINE-TEST COUPLING
67  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
68   (LIST 0.7071067811865475d0 3.14018491736755d-16)
69   (MULTIPLE-VALUE-LIST (COUPLING-3J 0 1 1 0 1 -1)))
70  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
71   (LIST 0.408248290463863d0 5.438959822042073d-16)
72   (MULTIPLE-VALUE-LIST (COUPLING-6J 1 1 2 0 2 1)))
73  (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
74   (LIST 0.1388888888888889d0 6.638400825147663d-16)
75   (MULTIPLE-VALUE-LIST (COUPLING-9J 1 1 2 1 2 1 2 1 1))))
Note: See TracBrowser for help on using the browser.