Analytic angular momentum coupling coefficient calculators☆

Analytic angular momentum coupling coefficient calculators☆

Computer Physics Communications 147 (2002) 853–858 www.elsevier.com/locate/cpc Analytic angular momentum coupling coefficient calculators ✩ P.D. Stev...

54KB Sizes 3 Downloads 158 Views

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.