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

68 lines
2.0 KiB
Fortran

FUNCTION REIMAN(IB,FR)
C ======================
C
C Read table of photon energies and photo-ionization cross-sections
C from Reilman & Manson (1979, Ap. J. Suppl., 40, 815) for the species
C indicated by IB
C
C Compute linearly interpolated value of the cross-section
C at the frequency FR.
C
C (At the moment, only a few transitions are considered)
C
INCLUDE 'PARAMS.FOR'
DIMENSION HEV(30),F0(30),SIG0(30,2),SIGS(30)
C
DATA HEV /
* 130.,160.,190.,210.,240.,270.,300.,330.,360.,390.,
* 420.,450.,480.,510.,540.,570.,600.,630.,660.,690.,
* 720.,750.,780.,810.,840.,870.,900.,930.,960.,990./
DATA SIG0 /
* 3*0., 4.422E-1, 3.478E-1,
* 2.794E-1, 2.286E-1, 1.899E-1, 1.598E-1, 1.360E-1,
* 1.169E-1, 1.013E-1, 8.845E-2, 7.776E-2, 6.877E-2,
* 6.114E-2, 5.463E-2, 4.904E-2, 4.419E-2, 3.998E-2,
* 3.629E-2, 3.305E-2, 3.019E-2, 2.766E-2, 2.540E-2,
* 2.339E-2, 2.158E-2, 1.996E-2, 1.850E-2, 1.718E-2,
* 4*0., 1.981E-1, 1.584E-1,
* 1.290E-1, 1.066E-1, 8.932E-2, 7.567E-2, 6.475E-2,
* 5.589E-2, 4.862E-2, 4.259E-2, 3.754E-2, 3.329E-2,
* 2.966E-2, 2.656E-2, 2.388E-2, 2.157E-2, 1.954E-2,
* 1.777E-2, 1.621E-2, 1.484E-2, 1.362E-2, 1.253E-2,
* 1.155E-2, 1.067E-2, 9.888E-3, 9.179E-3/
C
INDEX=-IB-300
NUM=30
DO 10 I=1,NUM
F0(I)=HEV(I)*2.418573E14
SIGS(I)=SIG0(I,INDEX)
10 CONTINUE
C
IL=1
IR=NUM
DO 50 I=1,NUM-1
IF(FR.GE.F0(I).AND.FR.LE.F0(I+1)) THEN
IL=I
IR=I+1
GO TO 60
ENDIF
50 CONTINUE
C
C LINEAR INTERPOLATION:
C
60 SIGM=(SIGS(IR)-SIGS(IL))*(FR-F0(IL))/(F0(IR)-F0(IL))
* + SIGS(IL)
C
C IF OUTSIDE WAVELENGTH RANGE SET TO FIRST(LAST) VALUE:
C
IF(FR.LE.F0(1)) SIGM=SIGS(1)
IF(FR.GE.F0(NUM)) SIGM=SIGS(NUM)
C
C IF LAST NON-ZERO SIG VALUES, NO INTERPOLATION:
C
c IF(SIGS(IR).EQ.0.) SIGM=SIGS(IL)
C
REIMAN=SIGM*1.E-18
RETURN
END