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

65 lines
1.8 KiB
Fortran

SUBROUTINE HYLSET
C =================
C
C Initialization procedure for treating the hydrogen line opacity
C
INCLUDE 'PARAMS.FOR'
INCLUDE 'SYNTHP.FOR'
DIMENSION ALB(15)
DATA ALB /656.28,486.13,434.05,410.17,397.01,
* 388.91,383.54,379.79,377.06,375.02,
* 373.44,372.19,371.20,370.39,369.72/
C
C IHYL=-1 - hydrogen lines are excluded a priori
C
IHYL=-1
if(iath.le.0) return
IF(FREQ(2).GE.3.28805E15) RETURN
AL0=2.997925E17/FREQ(1)
AL1=2.997925E17/FREQ(2)
IF(AL0.GT.200..AND.AL1.LT.364.6) RETURN
IF(AL0.GT.560..AND.AL1.LT.580.) RETURN
IF(AL0.GT.720..AND.AL1.LT.820.3) RETURN
C
C otherwise, hydrogen lines are included
C
IHYL=0
M20=40
IF(AL1.LT.364.6) THEN
ILOWH=1
FRION=3.28805E15
M10=int(SQRT(3.28805E15/ABS(FRION-FREQ(2))))
IF(FRION.GT.FREQ(1)) M20=int(SQRT(3.28805E15/(FRION-FREQ(1))))
IHYL=1
IF(AL0.GT.123.) IHYL=0
IF(AL0.GT.104..AND.AL1.LT.120.) IHYL=0
IF(AL0.GT.98.5.AND.AL1.LT.102.) IHYL=0
IF(IMODE.EQ.2.OR.IHYDPR.NE.0.OR.GRAV.GE.6.) IHYL=1
ELSE IF(AL1.LT.820.) THEN
ILOWH=2
if(vaclim.lt.3600.) then
FRION=8.2225E14
M10=int(SQRT(3.289017E15/ABS(FRION-FREQ(2))))
else
FRION=8.22013E14
M10=int(SQRT(3.28805E15/ABS(FRION-FREQ(2))))
end if
IF(FRION.GT.FREQ(1)) M20=int(SQRT(3.289017E15/(FRION-FREQ(1))))
DO 10 I=1,15
AL=ALB(I)
IF(AL.LT.AL0-1..OR.AL.GT.AL1+1.) GO TO 10
IHYL=1
GO TO 20
10 CONTINUE
20 CONTINUE
IF(IMODE.EQ.2.OR.IHYDPR.NE.0.OR.GRAV.GE.6.) IHYL=1
ELSE
ILOWH=3
IHYL=1
END IF
c
ihyl=1
c
RETURN
END