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

112 lines
3.3 KiB
Fortran

FUNCTION CHEAVJ(I,NJ,IGJ)
C =========================
C
C Calculates collisional excitation rates from a non-averaged (l,s)
C state of He I, with n=1, 2, 3, to some averaged state
C with n = 2, 3, 4.
C
C The rates are calculated using appropriate summations of the
C Storey-Hummer rates (calculated by procedure COLLHE, and stored
C in array COLHE1)
C
C Input:
C I - index of the lower state, using the ordering defined in
C COLLHE, ie. I=1 for 1 sing S, I=2 for 2 trip S, etc.
C NJ - principal quantum number of the (averaged) upper level
C IGJ - statistical weight of the upper level
C
INCLUDE 'IMPLIC.FOR'
INCLUDE 'BASICS.FOR'
INCLUDE 'ATOMIC.FOR'
CHEAVJ=0.
C
C -----------------------------------------------------
C ******** transitions to an averaged level with n=2
C -----------------------------------------------------
C
IF(NJ.EQ.2) THEN
IF(IGJ.EQ.4) THEN
C
C a) upper level is an averaged singlet state
C
CHEAVJ=COLHE1(1,3)+COLHE1(1,5)
ELSE IF(IGJ.EQ.12) THEN
C
C b) upper level is an averaged triplet state
C
CHEAVJ=COLHE1(1,2)+COLHE1(1,4)
ELSE IF(IGJ.EQ.16) THEN
C
C c) upper level is an average of both siglet and triplet states
C
CHEAVJ=COLHE1(1,3)+COLHE1(1,5)+COLHE1(1,2)+COLHE1(1,4)
ELSE
GO TO 10
END IF
C
C -----------------------------------------------------
C ******** transitions to an averaged level with n=3
C -----------------------------------------------------
C
ELSE IF(NJ.EQ.3) THEN
IF(IGJ.EQ.9) THEN
C
C a) upper level is an averaged singlet state
C
CHEAVJ=COLHE1(I,7)+COLHE1(I,11)+COLHE1(I,10)
ELSE IF(IGJ.EQ.27) THEN
C
C b) upper level is an averaged triplet state
C
CHEAVJ=COLHE1(I,6)+COLHE1(I,8)+COLHE1(I,9)
ELSE IF(IGJ.EQ.36) THEN
C
C c) upper level is an average of both siglet and triplet states
C
CHEAVJ=COLHE1(I,7)+COLHE1(I,11)+COLHE1(I,10)+
* COLHE1(I,6)+COLHE1(I,8)+COLHE1(I,9)
ELSE
GO TO 10
END IF
C
C -----------------------------------------------------
C ******** transitions to an averaged level with n=4
C -----------------------------------------------------
C
ELSE IF(NJ.EQ.4) THEN
IF(IGJ.EQ.16) THEN
C
C a) upper level is an averaged singlet state
C
CHEAVJ=COLHE1(I,13)+COLHE1(I,19)+COLHE1(I,16)+
* COLHE1(I,18)
ELSE IF(IGJ.EQ.48) THEN
C
C b) upper level is an averaged triplet state
C
CHEAVJ=COLHE1(I,12)+COLHE1(I,14)+COLHE1(I,15)+
* COLHE1(I,17)
ELSE IF(IGJ.EQ.64) THEN
C
C c) upper level is an average of both siglet and triplet states
C
CHEAVJ=COLHE1(I,13)+COLHE1(I,19)+COLHE1(I,16)+
* COLHE1(I,18)+COLHE1(I,12)+COLHE1(I,14)+
* COLHE1(I,15)+COLHE1(I,17)
ELSE
GO TO 10
END IF
ELSE
GO TO 10
END IF
RETURN
10 WRITE(6,601) NJ,IGJ
WRITE(10,601) NJ,IGJ
601 FORMAT(1H0/' INCONSISTENT INPUT TO PROCEDURE CHEAVJ'/
* ' QUANTUM NUMBER =',I3,' STATISTICAL WEIGHT',2I4)
call quit(' ',nj,igj)
END