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

38 lines
801 B
Fortran

SUBROUTINE RATMAT(ID,A,B)
C
C LTE RATE MATRIX (SAHA-BOLTZMANN EQS. + CHARGE CONSERVATION EQ.)
C
INCLUDE 'PARAMS.FOR'
INCLUDE 'MODELP.FOR'
parameter (un=1.)
DIMENSION A(MLEVEL,MLEVEL),B(MLEVEL)
C
ANE=ELEC(ID)
DO I=1,NLEVEL
B(I)=0.
DO J=1,NLEVEL
A(J,I)=0.
END DO
END DO
C
DO IAT=1,NATOM
N0I=N0A(IAT)
NKI=NKA(IAT)
N1I=NKI-1
NREFI=NKI
DO I=N0I,N1I
A(I,I)=1.
N=NNEXT(IEL(I))
A(I,N)=-ANE*SBF(I)*WOP(I,ID)
END DO
DO I=N0I,NKI
IL=ILK(I)
A(NREFI,I)=UN
IF(IL.NE.0) A(NREFI,I)=1.+ANE*USUM(IL)
END DO
B(NREFI)=ATTOT(IAT,ID)
END DO
C
RETURN
END