Vector |
f(l1) = ( l1 l2 l3 )
( -m2-m3 m2 m3 )
for all allowed values of l1, with the other parameters held fixed.
public static void ThreeJSymbolJ( double l2, double l3, double m2, double m3, out double l1min, out double l1max, double[] thrcof, int ndim, out int errflag )
errflag=0 No errors.
errflag=1 Either l2 < abs(m2) or l3 < abs(m3).
errflag=2 Either l2+abs(m2) or l3+abs(m3) is non-integer.
errflag=3l1max-l1min is not an integer.
errflag=4l1max is less than l1min.
errflag=5ndim is less than l1max-l1min+1.
Description:
------------
Although conventionally the parameters of the vector addition
coefficients satisfy certain restrictions, such as being integers
or integers plus 1/2, the restrictions imposed on input to this
subroutine are somewhat weaker. See, for example, Section 27.9 of
Abramowitz and Stegun or Appendix C of Volume II of A. Messiah.
The restrictions imposed by this subroutine are
1. l2 >= abs(m2) and l3 >= abs(m3)
2. l2+abs(m2) and l3+abs(m3) must be integers
3. l1max-l1min must be a non-negative integer, where
l1max=l2+l3 and l1min=max(abs(l2-l3),abs(m2+m3))
If the conventional restrictions are satisfied, then these
restrictions are also met.
The user should be cautious in using input parameters that do
not satisfy the conventional restrictions. For example, the
subroutine produces values of
f(L1) = ( l1 2.5 5.8)
(-0.3 1.5 -1.2)
for l1=3.3,4.3,...,8.3 but none of the symmetry properties of the 3j
symbol, set forth on page 1056 of Messiah, is satisfied.
The subroutine generates f(l1min), f(l1min+1), ..., f(l1max)
where l1min and l1max are defined above. The sequence f(l1) is
generated by a three-term recurrence algorithm with scaling to
control overflow. Both backward and forward recurrence are used to
maintain numerical stability. The two recurrence sequences are
matched at an interior point and are normalized from the unitary
property of 3j coefficients and Wigner's phase convention.
The algorithm is suited to applications in which large quantum
numbers arise, such as in molecular dynamics.
References:
-----------
1. Abramowitz, M., and Stegun, I. A., Eds., Handbook
of Mathematical Functions with Formulas, Graphs
and Mathematical Tables, NBS Applied Mathematics
Series 55, June 1964 and subsequent printings.
2. Messiah, Albert., Quantum Mechanics, Volume II,
North-Holland Publishing Company, 1963.
3. Schulten, Klaus and Gordon, Roy G., Exact recursive
evaluation of 3j and 6j coefficients for quantum-
mechanical coupling of angular momenta, J Math
Phys, v 16, no. 10, October 1975, pp. 1961-1970.
4. Schulten, Klaus and Gordon, Roy G., Semiclassical
approximations to 3j and 6j coefficients for
quantum-mechanical coupling of angular momenta,
J Math Phys, v 16, no. 10, October 1975, pp. 1971-1988.
5. Schulten, Klaus and Gordon, Roy G., Recursive
evaluation of 3j and 6j coefficients, Computer
Phys Comm, v 11, 1976, pp. 269-278.
6. SLATEC library, category C19,
double precision algorithm DRC3JJ.F
Keywords: 3j coefficients, 3j symbols, Clebsch-Gordan coefficients,
Racah coefficients, vector addition coefficients,
Wigner coefficients
Author: Gordon, R. G., Harvard University
Schulten, K., Max Planck Institute
Revision history (YYMMDD)
750101 DATE WRITTEN
880515 SLATEC prologue added by G. C. Nielson, NBS; parameters
HUGE and TINY revised to depend on D1MACH.
891229 Prologue description rewritten; other prologue sections
revised; LMATCH (location of match point for recurrences)
removed from argument list; argument errflag changed to serve
only as an error flag (previously, in cases without error,
it returned the number of scalings); number of error codes
increased to provide more precise error information;
program comments revised; SLATEC error handler calls
introduced to enable printing of error messages to meet
SLATEC standards. These changes were done by D. W. Lozier,
M. A. McClain and J. M. Smith of the National Institute
of Standards and Technology, formerly NBS.
910415 Mixed type expressions eliminated; variable C1 initialized;
description of THRCOF expanded. These changes were done by
D. W. Lozier.
7. Rewriting of the SLATEC algorithm in C++ and adaption to the
Matpack C++ Numerics and Graphics Library by Berndt M. Gammel
in June 1997.