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

71 lines
3.0 KiB
Fortran

FUNCTION SFFHMI(POPI,FR,T)
C ==========================
C
C Free-free cross-section for H- (negative hydrogen ion)
C Taken from Kurucz ATLAS9
C
C From Bell and Berrington J.Phys.B,vol. 20, 801-806,1987.
C
INCLUDE 'PARAMS.FOR'
PARAMETER (CONFF=5040.*1.380658E-16, CONTH=5040.)
DIMENSION FFLOG(22,11),FFCS(11,22),FFLOG2(22)
DIMENSION FFBEG(11,11),FFEND(11,11),FFTT(11),WFFLOG(22)
DIMENSION THETAFF(11),WAVEK(22)
EQUIVALENCE (FFCS(1,1),FFBEG(1,1)),(FFCS(1,12),FFEND(1,1))
C
DATA WAVEK/.50,.40,.35,.30,.25,.20,.18,.16,.14,.12,.10,.09,.08,
1 .07,.06,.05,.04,.03,.02,.01,.008,.006/
DATA THETAFF/
1 0.5, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.8, 3.6/
DATA FFBEG/
1.0178,.0222,.0308,.0402,.0498,.0596,.0695,.0795,.0896, .131, .172,
2.0228,.0280,.0388,.0499,.0614,.0732,.0851,.0972, .110, .160, .211,
3.0277,.0342,.0476,.0615,.0760,.0908, .105, .121, .136, .199, .262,
4.0364,.0447,.0616,.0789,.0966, .114, .132, .150, .169, .243, .318,
5.0520,.0633,.0859, .108, .131, .154, .178, .201, .225, .321, .418,
6.0791,.0959, .129, .161, .194, .227, .260, .293, .327, .463, .602,
7.0965, .117, .157, .195, .234, .272, .311, .351, .390, .549, .711,
8 .121, .146, .195, .241, .288, .334, .381, .428, .475, .667, .861,
9 .154, .188, .249, .309, .367, .424, .482, .539, .597, .830, 1.07,
A .208, .250, .332, .409, .484, .557, .630, .702, .774, 1.06, 1.36,
B .293, .354, .468, .576, .677, .777, .874, .969, 1.06, 1.45, 1.83/
DATA FFEND/
1 .358, .432, .572, .702, .825, .943, 1.06, 1.17, 1.28, 1.73, 2.17,
2 .448, .539, .711, .871, 1.02, 1.16, 1.29, 1.43, 1.57, 2.09, 2.60,
3 .579, .699, .924, 1.13, 1.33, 1.51, 1.69, 1.86, 2.02, 2.67, 3.31,
4 .781, .940, 1.24, 1.52, 1.78, 2.02, 2.26, 2.48, 2.69, 3.52, 4.31,
5 1.11, 1.34, 1.77, 2.17, 2.53, 2.87, 3.20, 3.51, 3.80, 4.92, 5.97,
6 1.73, 2.08, 2.74, 3.37, 3.90, 4.50, 5.01, 5.50, 5.95, 7.59, 9.06,
7 3.04, 3.65, 4.80, 5.86, 6.86, 7.79, 8.67, 9.50, 10.3, 13.2, 15.6,
8 6.79, 8.16, 10.7, 13.1, 15.3, 17.4, 19.4, 21.2, 23.0, 29.5, 35.0,
9 27.0, 32.4, 42.6, 51.9, 60.7, 68.9, 76.8, 84.2, 91.4, 117., 140.,
A 42.3, 50.6, 66.4, 80.8, 94.5, 107., 120., 131., 142., 183., 219.,
B 75.1, 90.0, 118., 144., 168., 191., 212., 234., 253., 325., 388./
DATA ISTART/0/
C
IF(ISTART.EQ.0) THEN
ISTART=1
DO 2 IWAVE=1,22
WFFLOG(IWAVE)=LOG(91.134D0/WAVEK(IWAVE))
DO 2 ITHETA=1,11
FFLOG(IWAVE,ITHETA)=LOG(FFCS(ITHETA,IWAVE)*1.E-26)
2 CONTINUE
ENDIF
C
WAVE=2.99792458E17/FR
WAVELOG=LOG(WAVE)
C
DO 21 ITHETA=1,11
DO IWAVE=1,22
FFLOG2(IWAVE)=FFLOG(IWAVE,ITHETA)
END DO
FFTLOG=YLINTP(WAVELOG,WFFLOG,FFLOG2,22,22)
FFTT(ITHETA)=EXP(FFTLOG)/THETAFF(ITHETA)*CONFF
21 CONTINUE
c
THETA=CONTH/T
FFTH=YLINTP(THETA,THETAFF,FFTT,11,11)
SFFHMI=FFTH*POPI/(1.-exp(-hk*fr/t))
RETURN
END