Line data Source code
1 : MODULE m_sgml
2 : CONTAINS
3 2683392 : REAL FUNCTION sgml(l1,m1,is1,l2,m2,is2)
4 : USE m_juDFT
5 : USE m_constants
6 : !
7 : ! FUNCTION SGML ******************************************************
8 : !
9 : ! THIS FUNCTION CALCULATES ANGULAR PART OF THE MATRIX ELEMENT
10 : !
11 : ! ( < L1 MP1 IS1 ! SGM*L ! L2 MP2 IS2 > ) OF SPIN-ORBIT COUPLING
12 : !
13 : ! FOR COMPLEX :: SPHERICAL HARMONICS FOR :
14 : ! L >= 0 ,-L <= M <= L , SGM = 1 OR -1 , IS = 1 OR -1
15 : !
16 : ! SATOSHI TAKIZAWA, ISSP, MAR 1990
17 : ! MODIFIED BY STEFAN BL"UGEL , ISSP, MAR 1990
18 : ! *********************************************************************
19 : !
20 : IMPLICIT NONE
21 : ! ..
22 : ! .. Scalar Arguments ..
23 : INTEGER is1,is2,l1,l2,m1,m2
24 : ! ..
25 : ! .. Local Scalars ..
26 : REAL sgm1,sgm2
27 : ! ..
28 : ! ..
29 2683392 : IF (l1.NE.l2) THEN
30 2683392 : sgml = 0.0
31 : RETURN
32 : ELSE
33 342880 : sgm1 = is1
34 342880 : sgm2 = is2
35 342880 : IF (l1.LT.0) THEN
36 0 : WRITE (oUnit,FMT=*) ' PROGRAM STOPS IN FUNCTION SGML ( L < 0 ) .'
37 0 : WRITE (oUnit,FMT=*) ' L1 =',l1,' L2 =',l2
38 0 : CALL juDFT_error("SGMLR",calledby="sgml")
39 342880 : ELSE IF ((ABS(m1).GT.l1) .OR. (ABS(m2).GT.l2)) THEN
40 0 : WRITE (oUnit,FMT=*) ' PROGRAM STOPS IN SGMLC ( jij%M < L OR L < jij%M )'
41 0 : WRITE (oUnit,FMT=*) ' L1 =',l1,' L2 =',l2
42 0 : WRITE (oUnit,FMT=*) ' M1 =',m1,' M2 =',m2
43 0 : CALL juDFT_error("SGML",calledby="sgml")
44 342880 : ELSE IF ((is1.NE.-1.AND.is1.NE.1) .OR. (is2.NE.-1.AND.is2.NE.1)) THEN
45 0 : WRITE (oUnit,FMT=*) ' PROGRAM STOPS IN FUNCTION SGMLC ( S >< +-1/2 ) .'
46 0 : WRITE (oUnit,FMT=*) ' S1 =',0.5*sgm1,' S2 =',0.5*sgm2
47 0 : CALL juDFT_error("SGML",calledby="sgml")
48 : END IF
49 : !
50 : !
51 342880 : IF (m1.EQ.m2+1 .AND. is1.EQ.is2-2) THEN
52 5560 : sgml = SQRT(REAL((l2-m2)* (l2+m2+1)))
53 337320 : ELSE IF (m1.EQ.m2-1 .AND. is1.EQ.is2+2) THEN
54 5560 : sgml = SQRT(REAL((l2+m2)* (l2-m2+1)))
55 331760 : ELSE IF (m1.EQ.m2 .AND. is1.EQ.is2) THEN
56 12192 : sgml = m2*sgm2
57 : ELSE
58 : sgml = 0.0
59 : END IF
60 342880 : RETURN
61 : END IF
62 : !
63 : RETURN
64 : END FUNCTION sgml
65 : END MODULE m_sgml
|