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

47 lines
1.4 KiB
Fortran

SUBROUTINE RAYLEIGH(MODE,IJ,ID,SCR)
C ===================================
C
INCLUDE 'IMPLIC.FOR'
INCLUDE 'BASICS.FOR'
INCLUDE 'ATOMIC.FOR'
INCLUDE 'MODELQ.FOR'
PARAMETER (FRRAY = 2.463D15,
* FRAYHe = 5.150E15,
* FRAYH2 = 2.922E15,
* C18 = 2.997925D18,
* CR0 = 5.799D-13,
* CR1 = 1.422D-6,
* CR2 = 2.784D0)
COMMON/RAYSCT/RCS(MFREQ),RCHE(MFREQ),RCH2(MFREQ)
common/eospar/anmol(600,mdepth),
* anato(100,mdepth),
* anion(100,mdepth)
C
IF(MODE.EQ.0) THEN
DO IK=1,NFREQ
FRM=MIN(FREQ(IK),FRRAY)
x=UN/(C18/FRM)**2
RCS(IK)=(CR0+(CR1+CR2*X)*X)*X*X
END DO
IF(IRSCHE.NE.0) THEN
DO IK=1,NFREQ
X=(C18/MIN(FR,FRAYHe))**2
RCHE(IK)=5.484E-14/X/X*(1.+(2.44E5+5.94E10/
* (X-2.90E5))/X)**2
END DO
END IF
IF(IRSCH2.NE.0.AND.IFMOL.GT.0) THEN
DO IK=1,NFREQ
X=(C18/MIN(FR,FRAYH2))**2
X2=1./X/X
RCH2(IK)=(8.14E-13+1.28E-6/X+1.61*X2)*X2
END DO
END IF
ELSE
SCR=RCS(IJ)*anato(1,id)
IF(IRSCHE.NE.0) SCR=SCR+RCHE(IJ)*ANATO(2,ID)
IF(IRSCH2.NE.0.AND.IFMOL.GT.0) SCR=SCR+RCH2(IJ)*ANMOL(2,ID)
END IF
RETURN
END