ADAS Subroutine rd2fs
FUNCTION RD2FS(N,L,L2,E2) C----------------------------------------------------------------------- C PURPOSE: GENERATION OF HYDROGENIC BOUND-FREE RADIAL INTEGRALS USING C RECURRENCE RELATIONS. C----------------------------------------------------------------------- C UNIX-IDL PORT: C C AUTHOR: WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC) C C DATE: 4TH JULY 1996 C C VERSION: 1.1 DATE: 04-07-96 C MODIFIED: WILLIAM OSBORN C - FIRST VERSION. C C VERSION: 1.2 DATE: 19-12-01 C MODIFIED: Martin O'Mullane C - Removed junk from > column 72. C C VERSION: 1.3 DATE: 16-05-07 C MODIFIED: Allan Whiteford C - Modified comments as part of subroutine documentation C procedure. C C----------------------------------------------------------------------- IMPLICIT REAL*8(A-H,O-Z) SC=64.0 SCL=0.015625 EN=N EN2=EN*EN EK2=-E2 V=1.0+EN2*EK2 EK=DSQRT(EK2) V=V*V U=8.0*EN2/V P=1.0 JS=0 SC2=SC*SC SCL2=SCL*SCL DO 5 I=1,N EI=I P=P*U*(1.0+EI*EI*EK2)/(EI*(2.0*EI-1.0)) AP=DABS(P) IF(SCL2.LE.AP)GO TO 5 JS=JS-1 P=SC2*P 5 CONTINUE IF(EK.GT.0.04D0)GO TO 6 P=EN*P GO TO 7 6 P=EN*P/(1.0-DEXP(-6.283185/EK)) 7 IF(EK.GT.1.0D-5)GO TO 8 U=-2.0*EN GO TO 9 8 U=-2.0*DATAN(EN*EK)/EK 9 T2=7.089815*DSQRT(P)*DEXP(U)/V V=1.0+EN2*EK2 IF(L2.EQ.L+1)GO TO 11 IF(L2.EQ.L-1)GO TO 20 RD2FS=0.0 GO TO 50 11 U=(2.0*EN-1.0)*V U=DSQRT(U) T3=0.5*U*T2 NU=N-2 IF(L-NU)14,13,12 12 T3=T2 13 GO TO 40 14 DO 16 I=L2,NU LI=NU-I+L EL1=LI+1 EL2=LI+2 ES=EL2*EL2 T1=T2 T2=T3 T3=(4.0*(EN2-ES)+EL2*(2.0*EL2-1.0)*V)*T2-2.0*EN*U*T1 U=(EN2-EL1*EL1)*(1.0+ES*EK2) U=DSQRT(U) T3=T3/(2.0*EN*U) AT3=DABS(T3) IF(AT3.LE.SC)GO TO 16 JS=JS+1 T3=SCL*T3 T2=SCL*T2 16 CONTINUE GO TO 40 20 EN1=N-1 U=V/(1.0+EN1*EN1*EK2) T2=DSQRT(U)*T2/(2.0*EN) U=(2.0*EN-1.0)*(1.0+(EN-2.0)*(EN-2.0)*EK2) U=DSQRT(U) T3=(4.0+EN1*V)*(2.0*EN-1.0)*T2/(2.0*EN*U) NU=N-3 IF(L-NU-1)24,23,22 22 T3=T2 23 GO TO 40 24 DO 26 I=L,NU LI=NU-I+L EL=LI EL1=LI+1 ES=EL1*EL1 T1=T2 T2=T3 T3=(4.0*(EN2-ES)+EL1*(2.0*EL1+1.0)*V)*T2-2.0*EN*U*T1 U=(EN2-ES)*(1.0+EL*EL*EK2) U=DSQRT(U) T3=T3/(2.0*EN*U) AT3=DABS(T3) IF(AT3.LE.SC)GO TO 26 JS=JS+1 T3=SCL*T3 T2=SCL*T2 26 CONTINUE 40 RJS=JS RD2FS=EN2*EN2*T3*T3*4096.0**RJS 50 RETURN END INTEGER L, L2, N REAL*8 E2