38 lines
1.0 KiB
Fortran
38 lines
1.0 KiB
Fortran
SUBROUTINE LEVSOL(A,B,POPP,NLVCAL)
|
|
C ==================================
|
|
C
|
|
INCLUDE 'PARAMS.FOR'
|
|
INCLUDE 'MODELP.FOR'
|
|
DIMENSION A(MLEVEL,MLEVEL),B(MLEVEL),POPP(MLEVEL),
|
|
* AP(MLEVEL,MLEVEL),BP(MLEVEL),POPP1(MLEVEL)
|
|
C
|
|
C new populations by inverting several partial rate matrices for the
|
|
C individual chemical species
|
|
C
|
|
if(nlvcal.le.0) return
|
|
DO 50 IAT=1,NATOM
|
|
N1=N0A(IAT)
|
|
NK=NKA(IAT)
|
|
IF(N1.LE.0) THEN
|
|
DO 1 I=N0A(IAT),NKA(IAT)
|
|
N1=I
|
|
IF(I.GT.0) GO TO 2
|
|
1 CONTINUE
|
|
2 CONTINUE
|
|
END IF
|
|
IF(N1.LE.0) GO TO 50
|
|
NLP=NK-N1+1
|
|
DO 20 I=N1,NK
|
|
DO 10 J=N1,NK
|
|
AP(I-N1+1,J-N1+1)=A(I,J)
|
|
10 CONTINUE
|
|
BP(I-N1+1)=B(I)
|
|
20 CONTINUE
|
|
CALL LINEQS(AP,BP,POPP1,NLP,MLEVEL)
|
|
DO 30 I=N1,NK
|
|
POPP(I)=POPP1(I-N1+1)
|
|
30 CONTINUE
|
|
50 CONTINUE
|
|
RETURN
|
|
END
|