SpectraRust/tlusty/extracted/irc.f
2026-03-19 14:05:33 +08:00

49 lines
1.5 KiB
Fortran

SUBROUTINE IRC(N,T,IC,RNO,SE)
c =============================
c
C IRC CALCULATES THE EXCITATION RATE, SE [cm**3/s], FOR IONIZATION
C OF HYDROGEN ATOMS FROM STATE N DUE TO ELECTRON COLLISIONS, ASSUMING
C THE CONTINUUM STARTS AT LEVEL RNO.
C REF. JOHNSON (1972)
C
c a modification of Tim Kallman's XSTAR routine
c
INCLUDE 'IMPLIC.FOR'
IF(IC.NE.1) THEN ! MAB
CALL SZIRC(N,T,IC,rno,SE)
RETURN
END IF
c
XO=1.-N*N/RNO/RNO
YN=XO*157803./(T*N*N)
IF(N.LE.1) THEN
AN=1.9603*N*(1.133/3./XO**3-0.4059/4./XO**4+0.07014/5./XO**5)
BN=2./3.*N*N/XO*(3.+2./XO-0.603/XO/XO)
RN=0.45
ELSE IF(N.EQ.2) THEN
AN=1.9603*N*(1.0785/3./XO**3-0.2319/4./XO**4+0.02947/5./XO**5)
BN=(4.-18.63/N+36.24/(N*N)-28.09/(N*N*N))/N
BN=2./3.*N*N/XO*(3.+2./XO+BN/XO/XO)
RN=0.653
ELSE
G0=(0.9935+0.2328/N-0.1296/(N*N))/3./XO**3
G1=-(0.6282-0.5598/N+0.5299/(N*N))/(N*4.)/XO**4
G2=(0.3887-1.181/N+1.470/(N*N))/(N*N*5.)/XO**5
AN=1.9603*N*(G0+G1+G2)
BN=(4.-18.63/N+36.24/(N*N)-28.09/(N*N*N))/N
BN=(3.+2./XO+BN/XO/XO)*2.*N*N/3./XO
RN=1.94*N**(-1.57)
END IF
C
RN=RN*XO
ZN=RN+YN
CALL EXPINX(YN,EY)
CALL EXPINX(ZN,EZ)
SE=AN*(EY/YN/YN-EXP(-RN)*EZ/ZN/ZN)
EY=1.+1./YN-EY*(2./YN+1.)
EZ=EXP(-RN)*(1.+1./ZN-EZ*(2./ZN+1.))
SE=SE+(BN-AN*LOG(2.*N*N/XO))*(EY-EZ)
SE=SE*SQRT(T)*YN*YN*N*N*1.095E-10/XO
RETURN
END