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

79 lines
2.2 KiB
Fortran

SUBROUTINE IJALIS(ITR,IFRQ0,IFRQ1)
C ==================================
C
C auxiliary routine - sets up the necessary flags for ALI treatment
C of individual transitions (in the fully hybrid CL/ALI scheme)
C
C Output:
C
C IJALI(IJ) = 0 - frequency point IJ is an explicit point
C = 1 - frequency point IJ is an ALI point
C
C LEXP(ITR) = T - at least one point within transition ITR is explicit
C LEXP(ITR) = F - no point within transition ITR is explicit
C LALI(ITR) = T - at least one point within transition ITR is ALI
C LALI(ITR) = F - no point within transition ITR is ALI
C
INCLUDE 'IMPLIC.FOR'
INCLUDE 'BASICS.FOR'
INCLUDE 'ATOMIC.FOR'
INCLUDE 'MODELQ.FOR'
C
c NFRECL=NFREQ
c if(nfrecl.ge.nfreq) return
INDXP=INDEXP(ITR)
I0=IFR0(ITR)
I1=IFR1(ITR)
NF=I1-I0+1
DO IJ=I0,I1
IF(INDXP.GT.0) THEN
IJALI(IJ)=0
ELSE IF(INDXP.LT.0) THEN
IJALI(IJ)=1
END IF
END DO
C
C primarily explicit transitions
C
IF(INDXP.GT.0) THEN
LEXP(ITR)=.TRUE.
LALI(ITR)=.FALSE.
IF(IFRQ0.GT.0.and.iadop(iatm(ilow(itr))).eq.0) THEN
LALI(ITR)=.TRUE.
IF(IFRQ1.EQ.0.OR.IFRQ1.GT.NF) IFRQ1=NF
DO I=IFRQ0,IFRQ1
IJALI(I0+I-1)=1
END DO
ELSE IF(IFRQ0.LT.0) THEN
LALI(ITR)=.TRUE.
READ(57,*) (IJALI(IJ),IJ=I0,I1)
END IF
IF(IFRQ0.EQ.1.AND.IFRQ1.EQ.NF) LEXP(ITR)=.FALSE.
ELSE IF(INDXP.LT.0) THEN
C
C primarily ALI transitions
C
LALI(ITR)=.TRUE.
LEXP(ITR)=.FALSE.
IF(IFRQ0.GT.0.and.iadop(iatm(ilow(itr))).eq.0) THEN
LEXP(ITR)=.TRUE.
IF(IFRQ1.EQ.0.OR.IFRQ1.GT.NF) IFRQ1=NF
DO I=IFRQ0,IFRQ1
IJALI(I0+I-1)=0
END DO
ELSE IF(IFRQ0.LT.0) THEN
LEXP(ITR)=.TRUE.
READ(57,*) (IJALI(IJ),IJ=I0,I1)
END IF
IF(IFRQ0.EQ.1.AND.IFRQ1.EQ.NF) LALI(ITR)=.FALSE.
END IF
IF(NFFIX.GT.0) THEN
DO IJ=I0,I1
IJALI(IJ)=1
END DO
LALI(ITR)=.TRUE.
LEXP(ITR)=.FALSE.
END IF
RETURN
END