Beruflich Dokumente
Kultur Dokumente
IF ( IPRT.EQ.0 ) IPRT=2
IF (ITMX.EQ.0) ITMX=15
IF (ILIQ.EQ.0) ILIQ=1
IF (IVAP.EQ.0) IVAP=1
IF (LMV.EQ.0) LMV=1
IF (LMP.EQ.0) LMP=1
IF (LL.GT.0) GO TO 26
LL=2
IF (LL.GT.6) LL=3
IF (LL.GT.10) LL=4
IF (LL.GT.12) LL=5
26 CONTINUE
54 CONTINUE
WRITE (*,*)
WRITE (*,*) KK, LL, ILIQ, IVAP, IST, IPRT, ITMX, LMV, LMP
WRITE (*,*) ALST, BETA, PRCG, RP, SSTL
WRITE (*,*) (K, DX(K),K=1,KK)
WRITE (*,*) (L, DP(L),L=1,LL)
63 CONTINUE
IRR = 0
IST = ITO
!LOAD VLE DATA, ESTIMATED STANDARD DEVIATIONS, AND INITIAL PARAMETER ESTIMATES
!START REGRESSION
!PRINT RESULTS
REAL MW, EL,R,Q,QP, CC, FO, NAM, NCD, FOR, TC, PC, VC, VSR, ZRA, RD, DM, ETA
DIMENSION EL(2)
COMMON /SIZE/ R(2), Q(2), QP(2), CC
COMMON /FUG/ FO(2,6)
COMMON /SYSTM/ NAM(2,5), NCD(2,2), FOR(2,2)
COMMON /PRM/ MW(2), TC(2), PC(2), VC(2), VSR(2), ZRA(2), RD(2), DM(2), ETA(3)
COMMON /THRM/ ILIQ, IVAP
NCMP=2
DO 2 I=1, NCMP
READ (*,*) (NAM(I,J),J=1,5), (FOR(I,J),J=1,2), MW(I), TC(I), PC(I), VC(I),
(NCD(I,J),J=1,2)
IF (TC(I).GT.1*E-5) GOTO 1
ISTP = 1
GOTO 6
1 CONTINUE
READ (*,*) VSR(I), ZRA(I), RD(I), DM(I), R(I), Q(I), QP(I)
IF (QP(I).LT.1*E-6) QP(I)=Q(I)
READ (*,*) (FO(I,J), J=1,3)
READ (*,*) (FO(I,J),J=4,5)
2 CONTINUE
II = NCMP*(NCMP+1)/2
READ(*,*) (ETA(I),I=1,II), CC
IF (ABS(CC).LT.1*E-9) CC=1.0
WRITE (*,*) NCMP, (I, (NCD(I,J), J=1,2), (FOR(I,J),J=1,2), (NAM(I,J), J=1,5), I=1,
NCMP)
WRITE (*,*)
Z=10.0
DO 3 I=1,NCMP
EL(I) = (Z/2.0)*(R(I)-Q(I))-(R(I)-1.0)
3 WRITE (*,*)
I,MW(I),TC(I),PC(I),VC(I),VSR(I),ZRA(I),RD(I),DM(I),EL(I),R(I),Q(I),QP(I)
IF (VAP.EQ.1) WRITE (*,*)
IF(VAP.GT.1) WRITE (*,*)
WRITE (*,*) (I, (FO(I,J), J=1,5), I=1,NCMP)
WRITE (*,*)
DO 4 I=1, NCMP
II = (I+1)*I/2
4 WRITE (*,*) (NCD(I,J), J=1,2), ETA(II)
WRITE (*,*)
IF (NCMP.LE.1) GOTO 8
DO 7 I=2, NCMP
II = I-1
DO 7 J=1, II
IJ = (I-1) * I/2 + J
7 WRITE (*,*) (NCD (I,K),K=1,2), (NCD(J,K), K=1,2), ETA(IJ)
8 CONTINUE
WRITE (*,*) CC
6 RETURN
END
!CHECK FOR MISTATCH BETWEEN PURE COMPONENT DATA AND VLE DATA
IF (NMD(1,1).EQ.NCD(1,1).AND.NMD(2,1).EQ.NCD(2,1)) GOTO 20
WRITE (*,*) ((NMD(I,J), J=1,2), (NCD(I,J),J=1,2), I=1,2)
IRR=2
20 CONTINUE
IRF = IRF+1
READ (*,*) ((REF(I,J), I=1,15), J=1,IRF)
PA=0.0
DO 30 I=1,NN
READ (*,*) YM(I), XM(I,1), XM(I,2), ZM(I)
PA=PA+YM(I)
IF(ZM(I).GT.1*E-6) GOTO 25
ZM(I) = XM(I,2)
IF (IST.EQ.0.OR.IST.EQ.2) IST=1
25 CONTINUE
30 CONTINUE
PA = PA/FLOAT(NN)
M1 = 1
M2 = 0
40 READ (*,*) SDY(M1), SDX(M1,1), SDX(M1,2), SDZ(M1), ND
IF (ND.EQ.0) ND = NN
M2 = M2 + ND
DO 50 I = M1,M2
SDX(I,1) = SDX(M1,1)
SDX(I,2) = SDX(M1,2)
SDY(I) = SDY(M1)
SDZ(I) = SDZ(M1)
50 CONTINUE
M1 = M1 + ND
IF (M2.LT.NN) GO TO 40
DO 220 I=1,NN
EVX(I,1) = SDX(I,1)**2
EVX(I,2) = SDX(I,2)**2
EVY(I) = SDY(I)**2
EVZ(I) = SDZ(I)**2
220 CONTINUE
SUBROUTINE OUTDAT(IRR)
REAL PD, PM, PC
COMMON /ALL/ NN, LL, KK, IPRT, IST
COMMON /STAT/ COV(5,5), RHD(5,5), SIGMA(5), SSQN, ESTSIG, IT
COMMON /DATA/
X(50,5),XM(50,5),EVX(50,5),DFZ(50,5),DGX(50,5),P(5),DFP(50,5),DGP(50,5),Y(50),
YM(50),EVY(50),ZM(50),Z(50),EVZ(50)
COMMON /INOT/ PA
IF(IRR.GT.0) GOTO 40
WRITE(*,*)
WRITE(*,*) IT
WRITE(*,*) SSQN, ESTSIG
WRITE(*,*) (L,P(L), SIGMA(L), L=1, LL)
WRITE(*,*)
DO 20 I=1,LL
20 WRITE (*,*) (COV(I,J),J=1,LL)
WRITE (*,*)
DO 30 I=1,LL
30 WRITE (*,*) (RHD(I,J),J=1,LL)
40 CONTINUE
WRITE (*,*)
PS=0.0
TS=0.0
X1S=0.0
Y1S=0.0
DO 50 I=1,NN
PM=YM(I)
PC=Y(I)
IF(PA.GT.5) GOTO 45
PM = PM*750.06
PC = PC*750.06
45 CONTINUE
PD = PM-PC
PS = PS + PD**2
TM = XM(I,1)-273.15
TC = X(I,1)-273.15
TD=TM-TC
TS=TS+TD**2
X1M = XM(I,2)
X1C = X(I,2)
X1D = X1M - X1C
X1S = X1S + X1D**2
Y1M = ZM(I)
Y1C = Z(I)
Y1D = Y1M - Y1C
Y1S = Y1S + Y1D**2
WRITE (*,*) I, PM, PC, PD, TM, TC, TD, X1M, X1C, X1D, Y1M, Y1C, Y1D
50 CONTINUE
Tpt=float(NN)
PS = SQRT(PS/TPT)
TS = SQRT(TS/TPT)
X1S = SQRT(X1S/TPT)
Y1S = SQRT(Y1S/TPT)
WRITE (*,*)
WRITE (*,*) PS, TS, X1S, Y1S
RETURN
END
DIMENSION DXO(50,5),DZO(50),DYO(50),DELX(50,5),DELP(5),C(5),U(5),CC(5,5),
D(50,5,5),S(50,5,5),DUM(50,5,5),Q(50,5),T(5,5),FP(50)
DIMENSION FX(50),GP(50),GX(50)
COMMON /STAT/ COV(5,5), RHO(5,5), SIGMA(5), SSQN, ESTSIG, IT
COMMON /ALL/ NN , LL , KK , IPRT , IST
COMMON /DATA/
X(50,5),XM(50,5),EVX(50,5),DFX(50,5),DGX(50,5),P(5),DFP(50,5),DGP(50,5),Y(50),
YM(50),EVY(50),ZM(50),Z(50),EVZ(50)
COMMON /RGRS/ SSTL , BETA , ITMX , RP , LMV , LMP , ALST , PRCG
!INITIALIZE INTERNAL PARAMETERS.
IT=0
ILP=0
!INITIAL ESTIMATES OF TRUE VALUES OF THE VARIABLES ARE SET EQUAL TO THE MEASURED
VALUES.
DO 5 I=1,NN
Y(I)=YM(I)
Z(I)=ZM(I)
DO 3 J=1,KK
DELX(I,J)=0.0
DFX(I,J)=0.0
DGX(I,J)=0.0
X(I,J)=XM(I,J)
3 CONTINUE
DO 4 L=1,LL
DFP(I,L)=0.0
DGP(I,L)=0.0
4 CONTINUE
5 CONTINUE
10 CONTINUE
AL=ALST
CALL FUNC(IRR)
IF(IRR.GT.0) GO TO 570
CALL FUNDR(IRR)
IF (IRR.GT.0) GO TO 570
CALL SUMSQ(SSQ)
IF(IPRT.LT.1) GO TO 15
WRITE (*,*) IT,SSQ, (P(I),I=1,LL)
!2001 FORMAT(12H0ITERATION=,12,5X,22HSUM OF THE SQUARES IS,G15.6//5X,
16HPARAMETERSARE -/(1X,G15.5))
IF(IPRT.LT.4) GOTO 15
WRITE (*,*)
!2008 FORMAT(35H0ESTIMATED TRUE VALUES OF VARIABLES//)
DO 11 I=1,NN
11 WRITE (*,*) I, (X(I,J),J=1,KK), Y(I), Z(I)
!2009 FORMAT (1X,I2,2X,7G11.4)
IF(IPRT.LT.7) GOTO 15
WRITE (*,*)
!2010 FORMAT (42H1DERIVATES WITH RESPECT TO THE VARIABLE/)
DO 12 I=1,NN
WRITE (*,*) I, (DFX(I,K),K=1,KK)
12 WRITE (*,*) (DGX(I,K),K=1,KK)
!2011 FORMAT (/1X,I2,5X,5G15.5)
!2012 FORMAT (8X,8G15.5)
WRITE (*,*)
!2013 FORMAT (43H1DERIVATIVES WITH RESPECT TO THE PARAMETERS/)
DO 13 I=1,NN
WRITE (*,*) I, (DFP(I,L),L=1,LL)
13 WRITE(*,*) (DGP(I,L),L=1,LL)
15 CONTINUE
IT = IT + 1
DO 17 I=1,NN
DYO(I) = Y(I)-YM(I)
DZO(I)=Z(I)-ZM(I)
IF(IST.GE.2)GO TO 17
DO 16 J=1,KK
16 DXO(I,J)=X(I,J)- XM(I,J)
17 CONTINUE
IF (IST.GE.2) GO TO 31
DO 25 I=1,NN
DO 18 J=1,KK
DO 18 K=1,KK
T(J,K) = DFX(I,K)*DFX(I,J)/EVY(I) + DGX(I,K)*DGX(I,J)/EVZ(I)
IF (J.EQ.K) T(J,K)=T(J,K)+1/EVX(I,J)
18 CONTINUE
CALL SYMINV(T,KK,IRR)
IF(IRR.GT.0) GO TO 520
DO 22 J=1,KK
DO 22 K=1,KK
22 D(I,J,K)=T(J,K)
25 continue
!calc vestor Q.
Do 30 i=1,nn
DO 28 K=1,KK
Q(I,K)=DXO(I,K)/EVX(I,K)+DFX(I,K)*DYO(I)/EVY(I)+DGX(I,K)*DZO(I)/EVZ(I)
!CALC VECTOR S.
DO 28 L=1,LL
S(I,K,L)=DFX(I,K)*DFP(I,L)/EVY(I)+DGX(I,K)*DGP(I,L)/EVZ(I)
28 CONTINUE
30 CONTINUE
31 CONTINUE
!CALC VECTOR U.
DO 35 L=1,LL
U(L)=0.0
DO 35 I=1,NN
35 U(L)=U(L)+DFP(I,L)*DYO(I)/EVY(I)+DGP(I,L)*DZO(I)/EVZ(I)
!CALC T MATRIX.
DO 40 II=1,LL
DO 40 JJ=1,LL
T(II,JJ) = 0.0
DO 38 I=1,NN
38 T(II,JJ)=T(II,JJ)+DFP(I,II)*DFP(I,JJ)/ EVY(I)
+DGP(I,II)*DGP(I,JJ)/EVZ(I)
40 CONTINUE
IF(IST.GE.2) GO TO 52
DO 50 I=1,NN
DO 48 II=1,LL
DO 48 JJ=1,KK
DUM(I,II,JJ)=0.0
DO 46 K=1,KK
46 DUM(I,II,JJ)= DUM(I,II,JJ)+S(I,K,II)*D(I,K,JJ)
48 CONTINUE
50 CONTINUE
52 CONTINUE
!CALC CC MATRIX.
DO 55 II=1,LL
DO 55 JJ=1,LL
IF (IST.LE.1) GOTO 53
CC(II,JJ)=T(II,JJ)
GOTO 55
53 CC(II,JJ)=0.0
DO 54 I=1,NN
DO 54 K=1,KK
54 CC(II,JJ)= CC(II,JJ)+ DUM(I,II,JJ)*S(I,K,JJ)
CC(II,JJ)= T(II,JJ)- CC(II,JJ)
55 CONTINUE
!CALC C VETOR
DO 60 L=1,LL
IF(IST.LE.1) GOTO 57
C(L)=-U(L)
GOTO 60
57 C(L)=0.0
DO 58 I=1,NN
DO 58 K=1,KK
58 C(L)= C(L)+DUM(I,L,K)*Q(i,k)
C(L)= C(L)-U(L)
60 CONTINUE
! CALC CC INVERSE
CALL SYMINV(CC,LL,IRR)
IF (IRR.GT.0) GOTO 510
!CALC DELP.
DO 65 II=1,LL
DELP(II)=0.0
DO 65 JJ=1,LL
65 DELP(II)=DELP(II)+CC(II,JJ)*C(JJ)
!CALC FP AND GP
DO 70 I=1,NN
FP(I)=0.0
GP(I)=0.0
DO 68 L=1,LL
FP(I)=FP(I)+DFP(I,L)*DELP(L)
68 GP(I)=GP(I)+DGP(I,L)*DELP(L)
70 CONTINUE
IF(IST.GE.2) GO TO 86
DO 75 I=1,NN
DO 73 K=1,KK
DO 73 L=1,LL
73 Q(I,K)= Q(I,K)+S(I,K,L)*DELP(L)
75 CONTINUE
!CALC DELX
DO 80 I=1,NN
DO 78 K=1,KK
DELX(I,K)=0.0
DO 78 J=1,KK
78 DELX(I,K)= DELX(I,K)-D(I,K,J)*Q(I,J)
80 CONTINUE
!CALC FX AND GX
DO 85 I=1,NN
FX(I)=0.0
GX(I)=0.0
DO 83 K=1,KK
FX(I)=FX(I)+DFX(I,K)*DELX(I,K)
83 GX(I)=GX(I)+DGX(I,K)*DELX(I,K)
85 CONTINUE
86 CONTINUE
DSL=0.0
DO 95 I=1,NN
IF(IST.LE.1) GO TO 89
DSL=DSL+DYO(I)*FP(I)/EVY(I)+DZO(I)*GP(I)/EVZ(I)
GOTO 95
89 DO 90 J=1,KK
90 DSL=DSL+DXO(I,J)*DELX(I,J)/EVX(I,J)
DSL=DSL+DYO(I)*(FX(I))+FP(I)/EVY(I)+ DZO(I)*(GX(I))+GP(I)/EVZ(I)
95 CONTINUE
WRITE (*,*) DSL
!2003 FORMAT (34H0DELTA LINEARIZED SUM OF SQUARES =,G15.5)
WRITE(*,*) (DELP(L), L=1,LL)
!2004 FORMAT (22H0CHANGES IN PARAMETERS/(5X,G15.5))
IF (IPRT.LT.3) GOTO 97
WRITE (*,*)
!2005 FORMAT (33H0CHANGES IN INDEPENDENT VARIABLES//)
DO 96 I=1,NN
96 WRITE (*,*) (DELX(I,J),J=1,KK)
!2006 FORMAT (5X,5G15.5)
97 CONTINUE
!IF PAREMETERS OR VARIABLES ARE LIMITED, CHECK TO MAKE SURE LIMITS ARE NOT EXCEEDED
115 CONTINUE
DO 116 I=1,NN
DO 116 J=1,KK
116 X(I,L)=X(I,J)+DELX(I,J)*AL
DO 120 L=1,LL
120 P(L)=P(L)+DELP(L)*AL
ILP=0
130 CONTINUE
ILP=ILP+1
IF (AL.LT.1*E-5) GOTO 530
CALL FUNC(IRR)
IF (IRR.GT.0) GOTO 133
CALL SUMSQ(SSQN)
GOTO 134
133 SSQN=1*E+20
IRR=0
134 CONTINUE
IF(IPRT.LT.2) GOTO 135
IF (ILP.EQ.1) WRITE (*,*)
!2007 FORMAT(1H0,5X,2HAL,15X,4HSSQN//)
WRITE(*,*) AL,SSQN
!2002 FORMAT(1X,2G15.5)
135 CONTINUE
DS=SSQN-SSQ
IF(ILP.GT.1) GOTO 138
IF (ABS(DS)/SSQN.LT.SSTL) GOTO 200
138 CONTINUE
IF (DS.GT.0.0) GO TO 140
IF ((DS-BETA*(2.*AL-AL*AL)*DSL).LT.0.0) GO TO 180
140 AL=AL/RP
IF (IST.GE.2) GO TO 148
DO 145 I=1,NN
DO 145 J=1,KK
145 X(I,J) = X(I,J)-DELX(I,J)*(RP-1)*AL
148 DO 150 L=1,LL
150 P(L)=P(L)-DELP(L)*(RP-1)*AL
GO TO 130
180 DIFF=(SSQ-SSQN)/SSQN
IF(ABS(DIFF).LT.SSTL) GO TO 200
IF (IT.LT.ITMX) GO TO 10
GO TO 500
200 CONTINUE
ESTSIG=SSQN/FLOAT(NN-LL)
DO 210 I=1,LL
DO 210 J=1,LL
210 COV(I,J)=ESTSIG*CC(I,J)
DO 215 L=1,LL
215 SIGMA(L)=SQRT(COV(L,L))
DO 220 I=1,LL
DO 220 J=1,LL
220 RHO(I,J)=COV(I,J)/(SIGMA(I)*SIGMA(J))
RETURN
500 IRR=1
WRITE (*,*)
!WRITE (*,*) IT
!1001 FORMAT (24H0MAX ITER EXCEEDED IT=,I2)
RETURN
510 WRITE (*,*)
!1002 FORMAT (29H0ILL-DEFINED PARAMETER MATRIX)
RETURN
520 WRITE (*,*)
!1003 FORMAT (23H0ILL- DEFINED VARIABLE MATRIX)
RETURN
530 IRR=4
WRITE (*,*)IT,AL
!1004 FORMAT (68H0LINEARIZED FUNCTION DOES NOT SUFFICIENTLY APPROXIMATE TRUE
FUNCTION, 5X, 3HIT=,I2,5X,3HAL=,G15.5)
RETURN
540 IRR=5
WRITE (*,*) IT,AL
!1005 FORMAT (12H0DELX TO BIG,5X,3HIT=,I2,5X,3HAL=,G15.5)
RETURN
560 IRR=6
WRITE (*,*) IT, AL
!1006 FORMAT (13H0HELP TO BIG,5X,3HIT=,I2,5X,3HAL=,G15.5)
RETURN
570 WRITE(*,*) IRR
!1007 FORMAT (39H0ERROR IN FUNCTION EVALUATION IRR=,I2)
END
SSQ=0
DO 10 I=1,NN
IF (IST.GT.1) GOTO 8
DO 5 J=1,KK
5 SSQ=SSQ+(X(I,J)- XM(I,J))**2/EVX(I,J)
8 SSQ=SSQ+(Y(I)- YM(I))**2/EVY(I)
IF (IST.EQ.1.OR.IST.EQ.3) GOTO 10
SSQ=SSQ+(Z(I)- ZM(I))**2/EVZ(I)
10 CONTINUE
RETURN
END
DO 20 I=1,NN
DO 15 J=1,KK
15 XV(J)=X(I,J)
YI=Y(I)
ZI=Z(I)
CALL EVAL (P,XV,YI,ZI,YO,ZO,IRR)
Y(I)=YO
Z(I)=ZO
IF (IRR.GT.0) RETURN
20 CONTINUE
RETURN
END
SUBROUTINE FUNDR(IRR)
DO 10 L=1,LL
10 PR(L)=P(L)
DO 50 I=1,NN
DO 20 J=1,KK
20 XV(J)=X(I,J)
DO 30 L=1,LL
PR(L)=P(L)+DP(L)
CAll EVAL (PR,XV,Y(I),Z(I),YYP,ZZP,IRR)
PR(L)=P(L)-DP(L)
CAll EVAL (PR,XV,Y(I),Z(I),YYM,ZZM,IRR)
PR(L)=P(L)
DFP(I,L)=(YYP-YYM)/(2.*DP(L))
IF (IST.EQ.1.OR.IST.EQ.3) GOTO 30
DGP(I,L)=(ZZP-ZZM)/(2.*DP(L))
30 CONTINUE
IF (IST.GT.1) GOTO 50
DO 40 J=1,KK
XV(J)=X(I,J)+DX(J)
CAll EVAL (PR,XV,Y(I),Z(I),YYP,ZZP,IRR)
XV(J)=X(I,J)-DX(J)
CAll EVAL (PR,XV,Y(I),Z(I),YYM,ZZM,IRR)
XV(J)=X(I,J)
DFX(I,J)=(YYP-YYM)/(2.*DX(J))
IF (IST.GT.1) GOTO 40
DGX(I,J)=(ZZP-ZZM)/(2.*DX(J))
40 CONTINUE
50 CONTINUE
RETURN
END
SUBROUTINE EVAL
REAL K(2)
DIMENSION X(2), Y(2)
DIMENSION PR(5), XV(5)
COMMON /ALL/ NN, LL, KK,IPRT, IST
COMMON /LQPRM/ PAR(5)
DO 10 L=1,LL
10 PAR(L)=PR(L)
P=A1
T=XV(1)
X(1)=XV(2)
X(2)=1.0-X(1)
Y(1)=A2
Y(2)=1.0-Y(1)
!INITIALIZE VARIABLES
KEY=1
IT=0
EPS=1.E-8
25 CONTINUE
IT=IT+1
CALL VPLQK (KEY, P, T, X, Y, K, IRR)
IF (IRR.GT.0) GOTO 50
KEY=3
S=0.0
DO 30 I=1,2
Y(I)=X(I)*K(I)
30 S=S+Y(I)
!NORMALIZE NEW X OR Y
DO 35 I=1,2
35 Y(I)=Y(I)/5
IF(S.LT.5.0.AND.S.GT.0.2) GOTO 45
IF(S.LT.1) GOTO 40
S=5.0
GOTO 45
40 S=0.2
45 CONTINUE
P=P*S
SUBROUTINE REFUG(T)
DIMENSION Y(2), PHS(2)
DO 10 I-1,2
FR(I)=EXP(FO(I,1)+FO(I,2/(T+FO()I,6))+FO(I,3)*T+FO(I,4)*ALOG(T)+FO(I,5)*T**2)
IF (IVAP.EQ.1.OR.IVAP.EQ.3) GOTO 10
PS=FR(I)
Y(1)=1.0
Y(2)=0.0
IF(I.EQ.1) GOTO 5
Y(1)=0.0
Y(2)=1.0
5 CALL PHIS2 (I,Y,PS,T,PHS,IRP)
FR(I)=PHS(I)*PS*EXP(-PS*VLIQ(I)/RT)
10 CONTINUE
RETURN
END
SUBROUTINE MVOLM(T)
COMMON /MVLM/ VLIQ(2)
COMMON /PRM/ MW(2), TC(2), PC(2), VC(2), VSR(2), ZRA(2), RD(2), DM(2), ETA(3)
DATA R,E/83.1473,0.28571429/
DO 5 I=1,2
TR=T/TC(I)
IF(TR.GT.0.75) GO TO 3
TAU=1.0+(1.0-TR)**E
GO TO 4
3 TAU=1.6+6.93026E/(TR-0.555)
4 VLIQ(I)=R*TC(I)*ZRA(I)**TAU/PC(I)
5 CONTINUE
RETURN
END
SUBROUTINE ACTIV2(T,X,IRR)
REAL LG1, LG2
COMMON /MVLM/ VLIQ(2)
COMMON /THRM/ ILIQ, IVAP
COMMON /LQPRM/ PAR (5)
COMMON /SIZE/ R(2), Q(2), QP(2), CC
COMMON /ATCF/ GAM(2)
DIMENSION X(2)
RT=1.987*T
IF(ILIQ.EQ.1.OR.ILIQ.EQ.6) GOTO 20
IF(ILIQ.EQ.2.OR.ILIQ.EQ.7) GOTO 40
IF(ILIQ.EQ.3.OR.ILIQ.EQ.8) GOTO 60
IF(ILIQ.EQ.4) GOTO 80
IF(ILIQ.EQ.5) GOTO 5
IF(ILIQ.LE.13) GOTO 100
WRITE(6,3001) ILIQ
3001 FORMAT(1H0,50HLIQUID PHASE MODEL NOT AVAILABLE FOR ILIQ EQUAL TO, 13)
IRR=1
RETURN
20 CONTINUE
T12=EXP(-PAR(1)/T)
T21=EXP(-PAR(2)/T)
IF (ILIQ.EQ.7) CC=PAR(3)
EL1=5.*(R(1)-Q(1))-(R(1)-1.)
EL1=5.*(R(2)-Q(2))-(R(2)-1.)
PHS=X(1)*R(1)+X(2)*R(2)
PH1=X(1)*R(1)/PHS
PH2=1.-PH1
THS=X(1)*Q(1)+X(2)*Q(2)
THP1=X(1)*QP(1)/(X(1)*QP(1))+X(2)*QP(2)
THP2=1.-THP1
S1=THP2+THP1*T12
S2=THP1+THP2*T21
LG1=ALOQ(R(1)/PHS)+5.*Q(1)*ALOG(Q(1)*PHS/R(1)/THS)+PH2*(EL1-EL2*R(1)/R(2))
LG2=ALOQ(R(2)/PHS)+5.*Q(2)*ALOG(Q(2)*PHS/R(2)/THS)+PH1*(EL2-EL1*R(2)/R(1))
Lg1=lg1+CC*QP(1)*(-ALOG(S2)+THP2*(T21/S2-T12/S1))
Lg2=lg2+CC*QP(2)*(-ALOG(S1)+THP1*(T12/S1-T21/S2))
GO TO 200
40 CONTINUE
T12=PAR(1)/RT
T21=PAR(2)/RT
IF (ILIQ.EQ.8) CC=PAR(3)
G12=EXP(-CC*T12)
G21=EXP(-CC*T21)
GS12=(X(2)+X(1)*G12)**2
GS21=(X(1)+X(2)*G21)**2
LG1=X(2)**2*(T21*G21**2/GS21+T12*G12/GS12)
LG2=X(1)**2*(T12*G12**2/GS12+T21*G21/GS21)
GOTO 200
60 CONTINUE
T12=VLIQ(2)/VLIQ(1)*EXP(-PAR(1)/RT)
T21=VLIQ(1)/VLIQ(2)*EXP(-PAR(2)/RT)
IF(ILIQ.EQ.9) CC=PAR(3)
TS12=X(1)+X(2)*T12
TS21=X(2)+X(1)*T21
LG1=CC*(-ALOG(TS12)+X(2)*(T12/TS12-T21/TS21))
LG2=CC*(-ALOG(TS21)+X(1)*(T21/TS21-T12/TS12))
GOTO 200
80 CONTINUE
A12=PAR(1)
A21=PAR(2)
SUM=A12*X(1)+A21*X(2)
LG1=A12*(A21*X(2)/SUM)**2
LG2=A21*(A12*X(1)/SUM)**2
GOTO 200
Subroutine BIJS2(KEY,T)
REAL MW
DIMENSION SGM(3)
COMMON /VIRIAL/ ICHM, B(3), BD(3)
COMMON /PRM/ MW(2), TC(2), PC(2), VC(2), VSR(2), ZRA(2), RD(2), DM(2), ETA(3)
COMMON /BSTR/ W(3), EOK(3), RDP(3), A(3),DH(3),E(3),BO(3)
DO 15 I=1,2
J=(I+1)*I/2
W(J)=RD(I)*(RD(I)*(-0.001366*RD(I)+0.02096)+0.006026)
EOK(J)=TC(I)*(0.748+0.91*W(J))
IF (ETA(J).GT.1*E-19) EOK(J)=EOK(J)-TC(I)*0.4*ETA(J)/(2.+20.*W(J))
SGM(J)=(2.4507-W(J))**3*TC(I)/PC(I)
IF(DM(I).GT.1*E-19)GO TO 5
RDP(J)=0
GOTO 15
5 IF(DM(I).LT.1.45) GOTO 10
!ANGLE AVERAGING IS USED TO ACCOUNT FOR THE EFFECT OF POLARITY DUE TO A LARGE
DIPOLE ON THE ENERGY AND SIZE PARAMETERS
PN=16.+400.*W(J)
P1=PN/(PN-6)
P2=3/(PN-6)
CONT=2.882-1.882*W(J)/0.03+W(J))
XI=1.7491E07*DM(I)**4/(CONT*EOK(J)*SGM(J)**2*TC(I))
EOK(J)=EOK(J)*(1-XI*P1+P1*(1.+P1)*XI*XI/2)
SGM(J)=SGM(J)*(1+XI*P2)
10 RDP(J)=7243.8*DM(I)**2/(EOK(J)*SGM(J))
15 CONTINUE
IJ=2
I=1
J=3
W(IJ)=0.5*(W(I)+W(J))
EOK(IJ)=0.7*SQRT(EOK(I)*EOK(J))+0.6/(1/EOK(I)+1/EOK(J))
SGM(IJ)=SQRT(SGM(I)*SGM(J))
IF (DM(1).GT.1*E-19) GO TO 17
RDP(IJ=0)
IF (DM(2).LE.2.0) GO TO 25
XI=DM(2)**2*(EOK(I)**2*SGM(I))**(1/3)/(EOK(IJ)*SGM(J))
GO TO 20
17 IF(DM(2).GT.1*E-19) GOTO 23
RDP(IJ)=0
IF(DM(1).LE.2) GOTO25
XI=DM(1)**2*(EOK(J)**2*SGM(J))**(1/3)/(EOK(IJ)*SGM(I))
20 PN=16+400*W(IJ)
P1=PN/(PN-6)
P2=3/(PN-6)
SGM(IJ)=SGM(IJ)*(1-XI*P2)
EOK(IJ)=EOK(IJ)*(1+XI*P1)
GO TO 25
23 RDP(IJ)=7243.8*DM(1)*DM(2)/(EOK(IJ)*SGM(IJ))
25 CONTINUE
DO 40 I=1,3
BO(I)=1.2618*SGM(I)
A(I)=-0.3-0.05*RDP(I)
DM(I)=1.99+0.2*RDP(I)**2
If (RDP(I).LT.0.25) GOTO 26
RDP(I)=RDP(I)-0.25
GOTO 30
26 IF (RDP(I).LT.0.04) GOTO 30
RDP(I)=0.
30 CONTINUE
E(I)=0.0
IF(ETA(I).LT.1*E-19) GOTO 40
IF(ETA(I).GE.4.4999) GOTO 35
E(I)=ETA(I)*(650./(EOK(I)+300.)-4.27)
GOTO 40
35 E(I)=ETA(I)*(42800./(EOK(I)+22400.)-4.27)
ICHM=1
40 CONTINUE
IF(KEY.LT.0) RETURN
45 DO 60 I=1,3
TS=T/EOK(I)
TSP=1./TS-1.6*W(I)
B(I)=0.94-1.47*TSP-0.85*TSP**2+1.015*TSP**3
IF(RDP(I).LT.1*E-19) GOTO 50
B(I)=B(I)-RDP(I)*(0.75-3.0*TSP+2.1*TSP**2+2.1*TSP**3)
50 B(I)=BO(I)*B(I)
BD(I)=A(I)*EXP(DH(I)/TS)
IF (ETA(I).LT.1*E-19) GOTO 55
BD(I)=BD(I)+EXP(E(I))-EXP(1500*ETA(I)/T+E(I))
55 BD(I)=BD(I)*BO(I)
IF(ICHM.GT.0) GOTO 60
B(I)=B(I)+BD(I)
60 CONTINUE
RETURN
END
IF (KEY.GT.1) GOTO 5
CALL BIJS2 (KEY,T)
5 CONTINUE
!IF THE CHEMICAL THEORY IS TO BE USED, PROCEED TO STATEMENT 30, OTHERWISE USE THE
VOLUME EXPLICIT EQUATION OD STATE
IF(ICHM.GT.0) GOTO 30
30 CONTINUE
C1=-BD(1)*PORT*EXP(PORT*B(1))
C2=-2.*BD(2)*PORT*EXP(PORT*(B(1)+B(3)-B(2)))
C3=-BD(3)*PORT*EXP(PORT*B(3))
IF (Y1.GT.1*E-8) GOTO 35
Z2=(SQRT(1+4*C3)-1)/(2*C3)
ZOY=(1+C3*Z2**2)/(1+C2*Z2)
PHI(1)=EXP(B(1)*PORT)*ZOY
PHI(2)=Z2*EXP(PORT*B(3))
RETURN
35 IF(Y2.GT.1*E-8) GOTO 40
Z1=(SQRT(1+4*C1)-1)/(2*C1)
ZOY=(1+C1*Z1**2)/(1+C2*Z1)
PHI(1)=Z1*EXP(PORT*B(1))
PHI(2)=EXP(B(3)*PORT)*ZOY
RETURN
40 CONTINUE
IF(C1.LT.0.0.OR.C2.LT.0.0.OR.C3.LT.0.0) GOTO 70
!USE MULLERS,S METHOD TO SOLVE NONLINEAR EQUATIONS FOR THE TRUE VAPOR-PHASE
COMPOSITION.
PHI(1)=Z1/Y1*EXP(PORT*B(1))
PHI(2)=Z2/Y2*EXP(PORT*B(3))
RETURN
70 WRITE(6,2001) C1,C2,C3
PHI(1)=1.0
PHI(2)=1.0
IRR=7
RETURN
75 WRITE(6,2002) IR
PHI(1)=1.0
PHI(2)=1.0
IRR=5
RETURN
2001 FORMAT (/1X,*EQUILIBRIUM CONSTANT ARE NEGATIVE*/1X,3G15.5)
2002 FORMAT (/1X*MULLER DID NOT CONVERGE – IT=*,I3)
END