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

60 lines
2.5 KiB
Fortran

FUNCTION ISPEC(IAT,ION,ALAM)
C ============================
C
C Auxiliary procedure for INISET
C
C Input: IAT - atomic number
C ION - ion (=1 for neutrals, =2 for once ionized, etc.)
C ALAM - wavelength in nanometers
C Output: ISPEC - parameter specifying whether the given line
C is taken with a special (pretabulated) absorption
C profile - only for hydrogen and helium
C = 0 - profile is taken as an ordinary Voigt profile
C > 0 - special profile
C
INCLUDE 'PARAMS.FOR'
C
ISPEC=0
IF(IAT.GT.2) RETURN
C
IF(IAT.EQ.1) THEN
ISPEC=1
RETURN
ELSE
IF(ION.EQ.1) THEN
IF(ABS(ALAM-447.1).LT.0.5.AND.IHE1PR.GT.0) ISPEC=2
IF(ABS(ALAM-438.8).LT.0.2.AND.IHE1PR.GT.0) ISPEC=3
IF(ABS(ALAM-402.6).LT.0.2.AND.IHE1PR.GT.0) ISPEC=4
IF(ABS(ALAM-492.2).LT.0.2.AND.IHE1PR.GT.0) ISPEC=5
ELSE
C
IF(ALAM.LT.163..OR.ALAM.GT.1012.7) RETURN
IF(ALAM.LT.321.) THEN
IF(ABS(ALAM-164.0).LT.0.2.AND.IHE2PR.GT.0) ISPEC=6
IF(ABS(ALAM-320.3).LT.0.2.AND.IHE2PR.GT.0) ISPEC=7
IF(ABS(ALAM-273.3).LT.0.2.AND.IHE2PR.GT.0) ISPEC=8
IF(ABS(ALAM-251.1).LT.0.2.AND.IHE2PR.GT.0) ISPEC=9
IF(ABS(ALAM-238.5).LT.0.2.AND.IHE2PR.GT.0) ISPEC=10
IF(ABS(ALAM-230.6).LT.0.2.AND.IHE2PR.GT.0) ISPEC=11
IF(ABS(ALAM-225.3).LT.0.2.AND.IHE2PR.GT.0) ISPEC=12
ELSE IF(ALAM.LT.541.) THEN
IF(ALAM.LT.392.3) RETURN
IF(ABS(ALAM-468.6).LT.0.2.AND.IHE2PR.GT.0) ISPEC=13
IF(ABS(ALAM-485.9).LT.0.2.AND.IHE2PR.GT.0) ISPEC=14
IF(ABS(ALAM-454.2).LT.0.2.AND.IHE2PR.GT.0) ISPEC=15
IF(ABS(ALAM-433.9).LT.0.2.AND.IHE2PR.GT.0) ISPEC=16
IF(ABS(ALAM-420.0).LT.0.2.AND.IHE2PR.GT.0) ISPEC=17
IF(ABS(ALAM-410.0).LT.0.2.AND.IHE2PR.GT.0) ISPEC=18
IF(ABS(ALAM-402.6).LT.0.2.AND.IHE2PR.GT.0) ISPEC=19
IF(ABS(ALAM-396.8).LT.0.2.AND.IHE2PR.GT.0) ISPEC=20
IF(ABS(ALAM-392.3).LT.0.2.AND.IHE2PR.GT.0) ISPEC=21
ELSE
IF(ABS(ALAM-1012.4).LT.0.2.AND.IHE2PR.GT.0) ISPEC=22
IF(ABS(ALAM-656.0).LT.0.2.AND.IHE2PR.GT.0) ISPEC=23
IF(ABS(ALAM-541.2).LT.0.2.AND.IHE2PR.GT.0) ISPEC=24
END IF
END IF
END IF
RETURN
END