ADAS Subroutine rd2bs
FUNCTION RD2BS(N,L,N2,L2) IMPLICIT REAL*8(A-H,O-Z) C----------------------------------------------------------------------- C C PURPOSE: GENERATION OF HYDROGENIC BOUND-BOUND RADIAL INTEGRALS USING C RECURRENCE RELATIONS. C C----------------------------------------------------------------------- C VERSION : 1.1 C DATE : 18-03-1999 C MODIFIED : ??? C C VERSION : 1.2 C DATE : 05-10-2000 C MODIFIED : ??? C - Removed junk from columns > 72 C C VERSION : 1.3 C DATE : 16-05-2007 C MODIFIED : Allan Whiteford C - Updated comments as part of subroutine documentation C procedure. C C----------------------------------------------------------------------- SC=64.0 SCL=0.015625 EN=N EN2=EN*EN EK=N2 EK=1.0/EK EK2=-EK*EK V=1.0+EN2*EK2 W=1.0+EN*EK W=W*W U=8.0*EN2/(W*W) 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 P=2.0*EN*EK*P P=4.0*EK*DSQRT(P)/(V*V) NL=N+1 DO 10 I=NL,N2 P=P*V/W AP=DABS(P) IF(SCL.LE.AP)GO TO 10 JS=JS-1 P=SC*P 10 CONTINUE IF(L2.EQ.L+1)GO TO 11 IF(L2.EQ.L-1)GO TO 20 RD2BS=0.0 GO TO 7 11 T2=P 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 T2=P 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 RD2BS=EN2*EN2*T3*T3*4096.0**JS 7 RETURN END INTEGER L, L2, N, N2