SUBROUTINE LEVSOL(A,B,POPP,IICAL,NLVCAL,IALL) C ============================================= C INCLUDE 'IMPLIC.FOR' INCLUDE 'BASICS.FOR' INCLUDE 'ATOMIC.FOR' INCLUDE 'MODELQ.FOR' INCLUDE 'ITERAT.FOR' DIMENSION A(MLEVEL,MLEVEL),B(MLEVEL),POPP(MLEVEL), * AP(MLEVEL,MLEVEL),BP(MLEVEL),POPP1(MLEVEL), * IICAL(MLEVEL) C if(ioptab.lt.0) return c C new populations - solution of the rate equations C C a) either by inverting the global rate matrix (if IRSPLT=0) C IF(IRSPLT.EQ.0) THEN CALL LINEQS(A,B,POPP,NLVCAL,MLEVEL) C C b) or by inverting several partial rate matrices for the C individual chemical species C ELSE DO 20 IAT=1,NATOM IF(IIFIX(IAT).EQ.1.AND.IALL.EQ.0) GO TO 20 N1=N0A(IAT) NK=NKA(IAT) N1=IICAL(N1) NK=IICAL(NK) IF(N1.LE.0) THEN DO I=N0A(IAT),NKA(IAT) N1=IICAL(I) IF(IICAL(I).GT.0) GO TO 10 END DO 10 CONTINUE END IF IF(N1.LE.0) GO TO 20 NLP=NK-N1+1 DO I=N1,NK DO J=N1,NK AP(I-N1+1,J-N1+1)=A(I,J) END DO BP(I-N1+1)=B(I) END DO CALL LINEQS(AP,BP,POPP1,NLP,MLEVEL) DO I=N1,NK POPP(I)=POPP1(I-N1+1) END DO 20 CONTINUE END IF RETURN END