ADAS Subroutine qpr78
FUNCTION QPR78(Z1,N1,N2,E1,PHI)
C
IMPLICIT REAL*8(A-H,O-Z)
C
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 FUNCTION: QPR78 ************************
C
C-----------------------------------------------------------------------
C PURPOSE: CALCULATES ELECTRON COLLISION CROSS-SECTIONS FOR
C TRANSITIONS BETWEEN PRINCIPAL QUANTUM SHELLS IN
C HYDROGEN AND HYDROGENIC IONS.
C
C PERCIVAL AND RICHARDS-MNRAS(1978)183,329.
C
C VALID FOR INCIDENT ELECTRON ENERGIES IN RANGE (Z1/N1)**2<E1<137**2
C AND FOR N1,N2>4.
C ANOMALIES DEVELOP IN ORIGINAL SPECIFICATION OF PERCIVAL RICHARDS FOR
C S=N2-N1 LARGE OR IF N1 IS <5. HENCE A MODIFIED PRESCRIPTION IS USED
C IN THESE CASES CONSISTENT WITH BANKS ET AL (1973) ASTR. LETT 14,161
C
C
C INPUT
C Z1=TARGET ION CHARGE +1
C N1=INITIAL PRINCIPAL QUANTUM NUMBER
C N2=FINAL PRINCIPAL QUANTUM NUMBER
C E1=ENERGY OF INCIDENT ELECTRON IN RYDBERGS
C
C OUTPUT
C QPR78=CROSS-SECTION IN PI*A0**2 UNITS
C
C
C *********** H.P.SUMMERS, JET 12 NOV 1984 ***********
C **** COR 28 FEB 1990 ****
C-----------------------------------------------------------------------
C NOTES: THIS ROUTINE IS NOT YET PROPERLY ANNOTATED
C
C UNIX-IDL PORT:
C
C VERSION: 1.1 DATE: 16-1-96
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - FIRST VERSION
C
C VERSION: 1.2 DATE: 16-05-07
C MODIFIED: Allan Whiteford
C - Updated comments as part of subroutine documentation
C procedure.
C
C-----------------------------------------------------------------------
C
ZZ1=Z1*Z1
E=E1
EN1=N1
EN2=N2
ABET=4.0D0*ZZ1*PHI/(EN1**4)
T1=1.0D0
IF(N1-N2)3,1,2
1 QPR78=0.0D0
RETURN
2 E2=E1-ZZ1*(1.0D0/(EN1*EN1)-1.0D0/(EN2*EN2))
T1=(EN2*EN2*E2)/(EN1*EN1*E1)
EN1=N2
EN2=N1
E=E2
3 S=EN2-EN1
EN12=EN1*EN2
IF(N1.LT.5.OR.S.GT.10.0D0)GO TO 4
A=2.666667D0/S*(EN2/(S*EN1))**3*(0.184D0-0.04/S**0.66667D0)*(1.0
&D0-0.2D0*S/EN12)**(1.0D0+2.0D0*S)
D=DEXP(-ZZ1/(EN12*E*E))
F=(1.0D0-0.3D0*S*D/EN12)**(1.0D0+2.0D0*S)
Y=1.0D0/(1.0D0-D*DLOG(18.0D0*S)/(4.0D0*S))
GO TO 5
4 A=ABET
D=DEXP(-Z1/(EN1*E))
C D=DEXP(-ZZ1/(EN12*E*E))
F=1.0D0-D
Y=1.0D0
5 XL=DLOG((1.0D0+0.53D0*E*E*EN12/ZZ1)/(1.0D0+0.4D0*E))
G=0.5D0*(E*EN1*EN1/(Z1*EN2))**3
T=DSQRT(2.0D0-(EN1/EN2)**2)
XP=2.0D0*Z1/(E*EN1*EN1*(T+1.0D0))
XM=2.0D0*Z1/(E*EN1*EN1*(T-1.0D0))
CP=(XP*XP/(2.0D0*Y+1.5D0*XP))*DLOG(1.0D0+0.66667D0*XP)
CM=(XM*XM/(2.0D0*Y+1.5D0*XM))*DLOG(1.0D0+0.66667D0*XM)
H=CM-CP
QPR78=T1*EN1**4*(A*D*XL+F*G*H)/(E*ZZ1)
RETURN
END
INTEGER N1, N2
REAL*8 E1, PHI, Z1