Line data Source code
1 : MODULE m_cfnorm
2 :
3 : CONTAINS
4 :
5 36 : SUBROUTINE cfnorm(mrad,is,it,nsol,nmatch,jtop,var,gc,fc,rc,rc2,dx,gck,fck)
6 : !...........................................................cfnorm
7 : ! wavefunctions normalization
8 : !
9 :
10 : USE m_rsimp
11 :
12 : IMPLICIT NONE
13 :
14 : INTEGER, INTENT (IN) :: mrad
15 : REAL dx
16 : INTEGER is,it,jtop,nmatch,nsol
17 :
18 : REAL fc(2,2,mrad),fck(2,2,mrad),gc(2,2,mrad),gck(2,2,mrad),rc(mrad),rc2(mrad),var(4)
19 :
20 : REAL xnorm
21 : INTEGER i,j,k,n
22 :
23 36 : REAL rint(mrad)
24 :
25 :
26 24264 : DO n = 1,mrad
27 59260 : DO k = 1,nsol
28 34996 : gck(k,is,n) = 0.0
29 59224 : fck(k,is,n) = 0.0
30 : END DO
31 : END DO
32 : ! ---------------------------------
33 : !---> NORMALIZE WAVEFUNCTIONS ACCORDING
34 : ! TO MATCHING CONDITIONS
35 : ! ---------------------------------
36 : ! INWARD - SOLUTION
37 6552 : DO n = nmatch,jtop
38 15756 : DO j = 1,nsol
39 30300 : DO i = 1,nsol
40 14580 : gc(i,j,n) = gc(i,j,n)*var(2)
41 23784 : fc(i,j,n) = fc(i,j,n)*var(2)
42 : END DO
43 : END DO
44 : END DO
45 :
46 36 : IF (nsol.EQ.2) THEN
47 : ! OUTWARD - SOLUTION
48 8096 : DO n = 1, (nmatch-1)
49 24256 : DO i = 1,nsol
50 16160 : gc(i,it,n) = gc(i,it,n)*var(3)
51 24240 : fc(i,it,n) = fc(i,it,n)*var(3)
52 : END DO
53 : END DO
54 : ! INWARD - SOLUTION
55 2704 : DO n = nmatch,jtop
56 8080 : DO i = 1,nsol
57 5376 : gc(i,it,n) = gc(i,it,n)*var(4)
58 8064 : fc(i,it,n) = fc(i,it,n)*var(4)
59 : END DO
60 : END DO
61 : END IF
62 : ! SUM FOR EACH KAPPA
63 24264 : DO n = 1,jtop
64 59260 : DO k = 1,nsol
65 34996 : gck(k,is,n) = 0.00
66 59224 : fck(k,is,n) = 0.00
67 : END DO
68 : END DO
69 24264 : DO n = 1,jtop
70 59260 : DO k = 1,nsol
71 115756 : DO j = 1,nsol
72 56532 : gck(k,is,n) = gck(k,is,n) + gc(k,j,n)
73 91528 : fck(k,is,n) = fck(k,is,n) + fc(k,j,n)
74 : END DO
75 : END DO
76 : END DO
77 : ! -----------------------------------
78 : ! CALCULATE NORM AND NORMALIZE TO 1
79 : ! -----------------------------------
80 24264 : DO n = 1,jtop
81 24228 : rint(n) = 0.00
82 59260 : DO k = 1,nsol
83 59224 : rint(n) = rint(n) + rc2(n)* (gck(k,is,n)**2+fck(k,is,n)**2)
84 : END DO
85 : END DO
86 36 : xnorm = rsimp(mrad,rint,rc,jtop,dx)
87 36 : xnorm = 1.00/sqrt(xnorm)
88 24264 : DO n = 1,jtop
89 59260 : DO k = 1,nsol
90 34996 : gck(k,is,n) = gck(k,is,n)*xnorm
91 59224 : fck(k,is,n) = fck(k,is,n)*xnorm
92 : END DO
93 : END DO
94 :
95 36 : END SUBROUTINE cfnorm
96 : END MODULE m_cfnorm
|