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

75 lines
2.8 KiB
Fortran

FUNCTION VERN16(E,IZZ)
C ======================
C
C Photoionization cross-sections for ground states
C of all Sulfur ions.
C Verner D.A. et al. 1996, ApJ 465
C Verner & Yakovlev 1995, A&AS 109, 125
C
INCLUDE 'IMPLIC.FOR'
INCLUDE 'BASICS.FOR'
PARAMETER (T18=1.D-18,MVER=16)
DIMENSION S0(MVER),E0(MVER),EMX(MVER)
DIMENSION Y0(MVER),Y1(MVER),YW(MVER),YA(MVER),PV(MVER)
DIMENSION S95(MVER),E95(MVER),Y95(MVER),YW95(MVER),P95(MVER)
C
DATA S0/4.564D4,3.136D2,6.666D0,2.606D0,5.072D-4,9.139D0,5.703D-1,
+ 3.161D1,9.646D3,5.364D1,1.275D1,3.49D-1,2.294D4,2.555D1,
+ 2.453D1,2.139D2/
DATA E0/18.08,8.787,2.027,2.173,0.1713,14.13,0.3757,14.62,0.1526,
+ 10.4,6.485,2.443,14.74,33.1,439.,110.4/
DATA EMX/170.,184.6,199.5,216.4,235.,255.7,2569.,2641.,2705.,
+ 2782.,2859.,2941.,3029.,3107.,5.D4,5.D4/
DATA Y0/0.9935,2.782,15.68,19.75,94.24,0.,222.2,18.69,1.615D-3,
+ 17.75,34.26,227.9,2.203D-2,0.,0.,0./
DATA Y1/0.2486,0.1788,9.421,3.361,0.6265,0.,4.606,0.3037,0.4049,
+ 1.663,0.137,1.172,1.073D-2,0.,0.,0./
DATA YW/0.6385,0.7354,4.109,1.863,0.788,0.,1.503,1.153D-3,1.492,
+ 2.31,1.678,0.7033,27.38,0.,0.,0./
DATA YA/1.,3.442,54.54,66.41,198.6,1656.,146.,16.11,1438.,36.41,
+ 65.83,541.1,1.529,38.21,44.05,32.88/
DATA PV/13.61,12.81,8.611,8.655,13.07,3.626,11.35,8.642,5.977,
+ 7.09,7.692,7.769,25.68,5.037,1.765,2.963/
DATA S95/1.883D2,1.896D2,1.780D2,2.037D2,2.919D2,4.712D2,1.916D1,
+ 1.931D1,1.946D1,2.041D1,2.101D1,2.087D1,2.233D1,2.293D1,
+ 2.453D1,2.139D2/
DATA E95/91.52,90.58,92.46,87.44,74.11,57.47,495.2,489.1,493.7,
+ 480.2,475.8,482.8,466.9,466.7,439.,110.4/
DATA Y95/71.93,75.38,149.8,93.1,48.64,36.1,35.55,50.,35.68,50.,
+ 50.,37.42,50.,44.59,44.05,32.88/
DATA YW95/0.2485,0.2934,0.02142,9.497D-3,0.02785,0.0248,10*0./
DATA P95/3.633,3.635,3.319,3.565,4.142,4.742,1.742,1.65,1.737,
+ 1.65,1.65,1.72,1.65,1.668,1.765,2.963/
C
VERN16=0.
IVER=IZZ
C
C 1996 Expression
C
IF(E.LT.EMX(IVER)) THEN
XX=E/E0(IVER)-Y0(IVER)
YY=SQRT(XX*XX+Y1(IVER)*Y1(IVER))
AA=(XX-UN)*(XX-UN)+YW(IVER)*YW(IVER)
BB=YY**(HALF*PV(IVER)-5.5)
CC=(UN+SQRT(YY/YA(IVER)))**PV(IVER)
FY=AA*BB/CC
VERN16=S0(IVER)*T18*FY
ELSE
C
C 1995 Expression for high energies
C (ionization of inner shell electron)
C
YY=E/E95(IVER)
XL=0.
IF(IZZ.LE.6) XL=UN
Q=HALF*P95(IVER)-5.5-XL
AA=(YY-UN)*(YY-UN)+YW95(IVER)*YW95(IVER)
BB=YY**Q
CC=(UN+SQRT(YY/Y95(IVER)))**P95(IVER)
FY=AA*BB/CC
VERN16=S95(IVER)*T18*FY
END IF
C
RETURN
END