Computer Physics Communications 147 (2002) 853–858 www.elsevier.com/locate/cpc
Analytic angular momentum coupling coefficient calculators ✩ P.D. Stevenson Department of Physics, University of Surrey, Guildford, Surrey, GU2 7XH, UK Received 21 November 2001; accepted 1 February 2002
Abstract We describe a Java implementation of a suite of programs to calculate analytically Clebsch–Gordan coefficients, and 3j , 6j and 9j symbols used in the quantum theory of angular momentum. 2002 Elsevier Science B.V. All rights reserved. PACS: 02.70.-c; 03.65.Fd Keywords: Clebsch–Gordan coefficients; Racah coefficients; Angular momentum
PROGRAM SUMMARY
Memory required to execute with typical data: 10 MBytes (≈ size of Java virtual machine)
Title of program: Cleblet
Nature of physical problem Problems involving the quantum mechanical theory of angular momentum often involve the use of angular momentum coupling coefficients, which the presented code evaluates.
Catalogue identifier: ADQG Program Summary URL: http://cpc.cs.qub.ac.uk/summaries/ADQG Program obtainable from: CPC Program Library, Queen’s University of Belfast, N. Ireland Computer for which the program is designed: Any Java-capable platform Operating systems under which the program has been tested: Netscape 4.75 on Solaris 7, Internet Explorer 5.5 on Windows NT4 Programming language used: Java
✩
Method of solution Direct evaluation of sum formulae. Restrictions on the complexity of the problem Limited only by the Java implementation used to run the applets. No limitation inherent in the code. Typical running time: < 10 s No. of bytes in distributed program, including test data, etc.: 10 009 Distribution format: tar gzip file
This program can be downloaded from the CPC Program Library under catalogue identifier: http://cpc.cs.qub.ac.uk/summaries/ADQG E-mail address:
[email protected] (P.D. Stevenson).
0010-4655/02/$ – see front matter 2002 Elsevier Science B.V. All rights reserved. PII: S 0 0 1 0 - 4 6 5 5 ( 0 2 ) 0 0 4 6 2 - 9
854
P.D. Stevenson / Computer Physics Communications 147 (2002) 853–858
LONG WRITE UP 1. Introduction Angular momentum (AM) coupling coefficients are used in various branches of physics and chemistry in which one deals with angular momentum in a quantum mechanical context [1,2]. As such, their computation is often required when performing calculations in these fields. For these applications, one is usually interested in accurate and fast routines for floating point calculations. Such motivation has led to the development of expressions avoiding the problems of overflow associated with the calculation of large factorials [3,4], which beset straightforward calculation of some well known expressions for the coupling coefficients. On the other hand, it is sometimes useful to be able to calculate the analytic form of AM coupling coefficients— when performing algebraic calculations of systems involving the quantum theory of angular momentum, checking approximation schemes, or the evaluation of non-trivial zeros [5]. Particularly with the first of these applications in mind, we have written a suite of calculators for Clebsch–Gordan coefficients, 3j , 6j and 9j symbols which return analytic answers. The calculators are in the form of Java applets which can be operated either in a web browser with Java capability or a stand-alone applet viewer. We give the expressions used for evaluating the coefficients in Section 2 as well as describing how the Java implementation is realized. In Section 3 we show some sample results which have been tested against published tables. A summary is presented in Section 4, with details of where to find the calculators on the World Wide Web.
2. Method of calculation The calculators are evaluated by summing ratios of factorials, using well-known summation formulae [1]. As of version 1.1 of the Java programming language, an arbitrary precision integer type (java.lang.math.BigInteger) exists, which we have extended to provide an arbitrary precision rational type, hence we are able to perform the sum directly. The newly-defined class BigRational consists of two BigInteger variables. Constructor methods have been defined allowing one to specify the rational number in terms of BigIntegers or from a single int. Addition, subtraction, multiplication and division have been defined between BigRational variables. A BigRational may also be multiplied by a BigInteger, converted to a string and compared to another BigRational. The code which defines the BigRational class is contained in the file BigRational.java which compiles to a class file. The codes for the applets themselves are contained in separate source files as required by the Java language; Cleblet.java, TJ.java, SJ.java and NJ.java for the Clebsch–Gordan coefficient, the 3j , 6j , and 9j symbol calculators, respectively. The actual sums used for evaluating the coefficients are as follows: For the Clebsch–Gordan coefficient describing angular momentum j1 with projection m1 coupling with angular momentum j2 with projection m2 to total angular momentum j , projection m, we use the following expression [1]: j1 m1 j2 m2 |j m = δm,m1 +m2 (j1 j2 j ) (j1 + m1 )!(j1 − m1 )! × (j2 + m2 )!(j2 − m2 )!(j + m)!(j − m)!(2j + 1) (−1)ν × ν!(j1 + j2 − j − ν)!(j1 − m1 − ν)!(j2 + m2 − ν)! ν 1 × (j − j2 + m1 + ν)!(j − j1 − m2 + ν)!
(1)
P.D. Stevenson / Computer Physics Communications 147 (2002) 853–858
with
(j1 j2 j ) =
(j1 + j2 − j )!(j1 − j2 + j )!(−j1 + j2 + j )! (j1 + j2 + j + 1)!
855
(2)
and in which the sum over ν runs over such integers that the arguments of the factorials in the sum are not negative. The Condon and Shortley phase convention [6] is satisfied for the Clebsch–Gordan coefficients. The 3j symbol calculator performs the same summation as the Clebsch–Gordan and then uses the relation [1] 1 j1 j2 j j1 − m1 j2 − m2 |j m. (3) = (−1)j +m+2j1 √ m1 m2 m 2j + 1 The sum for the 6j symbols is [1] (j1 j2 j3 )(j2 j4 j6 ) j1 j2 j3 = (−1)j1 +j3 +j4 +j6 j4 j5 j6 (j1 j5 j6 )(j3 j4 j5 ) (j1 − j2 + j4 + j5 − ν)! × (−1)ν ν!(j1 − j2 + j3 − ν)! ν (−j2 + j3 + j5 + j6 − ν)!(j1 + j3 + j4 + j6 + 1 − ν)! × . (4) (−j2 + j4 + j6 − ν)!(j1 + j5 + j6 + 1 − ν)!(j3 + j4 + j5 + 1 − ν)! In the case of the 9j symbols, a sum over 4 indices is used [1]; j1 j2 j3 (j1 + j4 − j7 )! (j1 j2 j3 )(j4 j5 j6 )(j2 j5 j8 )(j7 j8 j9 ) j4 j5 j6 = · (j1 j4 j7 )(j3 j6 j9 ) (j1 + j4 + j7 + 1)! j j j 7
8
9
(j3 + j6 − j9 )!(j7 + j8 + j9 + 1)! (−j1 + j2 + j3 )!(j1 − j2 + j3 )!(j4 − j5 + j6 )!(−j4 + j5 + j6 )! 1 (−1)j1 −j3 +j5 −j7 +j9 +x+y+z+t × (j2 − j5 + j8 )!(−j2 + j5 + j8 )! xyzt ×
(2j1 − x)!(2j2 − y)!(2j4 − z)!(2j5 − t)!(−j1 + j2 + j3 + x)! x!y!z!t!(j1 + j2 − j3 − x)!(j2 + j5 − j8 − y)!(j4 + j5 − j6 − z)! (−j2 + j5 + j8 + y)!(−j4 + j5 + j6 + z)! × (j2 + j5 − j7 + j9 − t)!(j1 + j4 − j7 − x − z)!(j5 − j2 + j8 + y − t)! (j2 − j5 + j7 − j9 + t)!(−j1 − j5 + j6 + j7 + x + t)! × (−j4 + j5 + j6 + z − t)!(−j1 + j3 − j4 + j6 + j7 + j9 + 1 + x + z)! (j3 − j4 + j5 + j9 + z − t)! . × (−j1 + j3 − j5 + j7 − j9 + x + t)!(j2 − j5 + j7 − j9 − y + t)!
×
(5)
As for the Clebsch–Gordan coefficient expression, the sums in the 3j , 6j and 9j symbols run over such values that no factorial has a negative argument.
3. Check of the programs The Clebsch–Gordan coefficients were checked against tabulated values [1], as shown in Table 1. Larger arguments were tested using formulae for special cases. We have [1] m1 j 1 = . (6) j1 m1 j2 m2 |j1 + j2 − 1m1 + m2 = 0 if m2 j 2
856
P.D. Stevenson / Computer Physics Communications 147 (2002) 853–858
Table 1 Some Clebsch–Gordan coefficients checked against tabulated values j1
m1
j2
m2
j
m
2
1
1
−1
1
0
5 2
3 2
5 2
− 12
1
1
1
0
5
0
5
0
3
2
5 2
− 32
3 2
1 2
5 2 5 2
1 2 1 2
2
0
2
−1
5 2 5 2
1 2 1 −2
CG coefficient 1 2
6 5
2 −2 35 0
1 − 21 2 −2 35
0
Table 2 Some 3j symbols checked against published tables j1
j2
j
m1
m2
m
3j
1
1
1
1
0
−1
− √1
3
3
3
−1
−1
2
7 2 15 2
2
− 32
−2
0
7 2 3 2
− 32
0
8
5 2 15 2 11 2
9 2
2
− 72
3 2
8
7
6
3
0
−3
6
0
√
− 62 1
− 127 12
We verified the case 500 20 250 10 | 749 30 = 0. The expression [1] j2 j1 j1 − 1 j2j2 |j1 + j2 − 1j1 + j2 − 1 = − j1 + j2
4
6 46189
0
(7)
is checked by the evaluation 500 499 250 250 | 749 749 = − √1 . 3 The 3j symbols were checked against tabulated values [7] including some nontrivial zeros. The results are seen in Table 2. For larger values, beyond the range of tables, we compared our results to those obtained with the computer program Mathematica, which evaluates Clebsch–Gordan coefficients, 3j and 6j symbols. As an example, we checked the following result and found agreement: 6347289054877299473594 70 75 80 = − 20 −40 20 105 3116246 . (8) × 159184087203947858242423601091756805001795494196699 6j symbols were checked against tabulated values [7] some results of which are presented in Table 3. To check against larger values, the built in Mathematica function was used 22937084180342998024692848841405644906343471096259 80 70 60 = 60 70 80 3807942910488176294742031868978400502934196590236245 133733857259383840245 . (9) × 65742467686458947573719
P.D. Stevenson / Computer Physics Communications 147 (2002) 853–858
857
Table 3 Some 6j symbols checked against published tables j1
j2
j3
j4
j5
j6
6j
2
2
1
2
1
2
7 2
1
3 2
7 √ 10 21
3
3 2
3
0
4
4
1
4
3
1
1 − 36
11 2
1363 36036
6
0
7
2557 193154
6
6
4
9 2
13 2
6
3 2
3
7 2 7 2
8
8
8
8
7
7 3
Table 4 Some 9j symbols checked against published tables j1
j2
j3
j4
j5
j6
j7
j8
j9
1
3
2
4
2
3
4
3
7 2
7 2
3
7 2
1 2 1 2 1 2 1 2
1 2 1 2 1 2 1 2
0
1
5 2 7 2 7 2
2
3
3 2 7 2 1 2 5 2
2 3
1 1 1
9j
1 1 6 5 1 1 3 210 1 − 168 11 1 − 336 231
In the case of 9j symbols, we compare against tabulated values in [1] which all have one row of the symbol either 1 1 1 1 2 , 2 , 0 or 2 , 2 , 1. The results of some sample 9j symbols, checked against [1], is shown in Table 4. No convenient source of analytic values of 9j symbols for higher angular momentum was found. However, simple formulae exist when particular conditions hold, such as when triads feature maximal coupling [1], which are amenable for testing purposes: j1 j2 j1 + j2 (j1 + j2 + j4 + j5 + j7 + j8 + 1)! (j1 + j2 j4 + j5 j7 + j8 ) j4 j5 j4 + j5 = · (j j j )(j j j ) (j 1 4 7 2 5 8 1 + j4 + j7 + 1)!(j2 + j5 + j8 + 1)! j7 j6 j7 + j8 (2j1 )!(2j2)!(2j4 )!(2j5 )!(2j7 )!(2j8 )! (10) × (2j1 + 2j2 + 1)!(2j4 + 2j5 + 1)!(2j7 + 2j8 + 1)! which gives 20 20 40 6525173305508 4843218585190677539 20 20 40 = 1666331383246797314439 5959445981 20 20 40 in agreement with our calculator. In the case of all triads coupling maximally one has [1]: j j 2j 1 j j 2j = . (4j + 1)2 2j 2j 4j As an example, we verified 250 250 500 1 250 250 500 = . 1002001 500 500 1000
(11)
(12)
(13)
858
P.D. Stevenson / Computer Physics Communications 147 (2002) 853–858
4. Summary We have presented a suite of programs to calculate analytic values of angular momentum coupling coefficients. They are in the form of Java Applets, so it is not possible to give a sample input and output file, but one may check correct functioning by reproducing the results of Section 3. Given, too, that the programs take the form of Java Applets, their utility is as stand-alone calculators for convenient calculation of given angular momentum coupling coefficients, rather than as subroutines of a larger code. For most values of angular momentum of quantum mechanical interest, such as the order of magnitude of arguments used in the tables of Section 3, the calculators return the results very quickly (< 1 s for Netscape 4.51 running on a 450 MHz UltraSparc). Since there is no limit in principle to the arguments given to the calculator, one may effect an arbitrarily lengthy calculation by asking for a coupling of very large angular momenta. In practice, each Java implementation will have a limit in its representation of the BigInteger class, and the Java virtual machine will fail with an exception. A rewrite of the calculators using binomial coefficients [3,4] may extend the limits of large arguments to the calculators and result in speedier calculation, should such limits be reached in practice. The calculators can be found on the World Wide Web at http://www.gostick.co.uk/cleb/
References [1] [2] [3] [4] [5] [6] [7]
D.A. Varshalovich, A.N. Moskalev, V.K. Khersonskii, Quantum Theory of Angular Momentum, World Scientific, Singapore, 1988. D.M. Brink, G.R. Satchler, Angular Momentum, Clarendon Press, Oxford, 1968. R.E. Tuzun, P. Burkhardt, D. Secrest, Comput. Phys. Commun. 112 (1998) 112. I.I. Guseinov, A. Özmen, Ü. Atav, H. Yüksel, J. Comp. Phys. 122 (1995) 343. J. Raynal, J. Van der Jeugt, K. Srinivasa Rao, V. Rajeswari, J. Phys. A 26 (1993) 2607. E.U. Condon, G.H. Shortley, Theory of Atomic Spectra, Cambridge University Press, 1935. M. Rotenberg, R. Bivins, N. Metropolis, J.K. Wooten Jr., The 3j and 6j Symbols, The Technology Press, Cambridge, MA, 1959.