10000 REM (Mg,Ca)Cl2 10050 DEFDBL A-H, M-Z 10100 DIM HGKG(40), II(40), JJ(40), BP(10), BQ(10) 10150 DIM ATZ(4), ADZ(4), AAT(4), AAD(4) 10200 DIM BV(10), AHGK(8), HGKC(18) 10250 DIM QR(11), QT(10), QZR(9), QZT(9) 10300 DIM FFD(2), FFP(2), NNT$(2), NND$(2), NNP$(2) 10350 DIM DU(10), B0(20), B1(20), CMX(20) 10400 DIM QCA(28), QMG(28), RRCA(10), RRMG(10), RR(10) 10450 GOSUB *BLOCKDATA 10500 GOSUB *UNIT 10850 GOSUB *PARAMETERS 10900 INPUT "Which salt do you consider? MgCl2(1) or CaCl2(2)? Input the parenthesized number";ISALT 10950 IF ISALT<1 OR ISALT>2 THEN GOTO 10900 11000 INPUT"Pressure? If end, input 0";X 11050 IF X=0 THEN GOTO 14100 11100 INPUT"Temperature";TT 11150 T=TT 11200 GOSUB *TTTT 11250 T=TTT 11300 RT=GASCON*T 11350 GOSUB *BBT 11400 INPUT "Molality";MOL 11410 IF MOL=<0 THEN GOTO 11400 11450 PRES=X 11500 PINPUT=PRES/FP 11550 DGSS=PINPUT/(T*.4#) 11560 IF T>=647.126# THEN GOTO 11900 11600 DLL=0 : DVV=0 11650 DL=DLL : DV=DVV 11700 GOSUB *PCORRTPDLDV 11750 IF ABS((PINPUT-P)/P)=<5D-005 THEN PPP=PINPUT : GOTO 12900 11800 IF PINPUT>P THEN DGSS=DL:GOTO 11900 11850 IF PINPUT

1.9# THEN DD=1.9# 14550 D=DD 14600 GOSUB *QQTD 14650 Q0=Q 14700 GOSUB *BASEDT 14750 PP=RT*DD*BASEZ+Q0 14800 DPD=RT*(BASEZ+Y*DZB)+Q5 : DQ=DPD 14850 IF DPD>0 THEN GOTO 15050 14900 IF D>=.2967# THEN DD=DD*1.02 14950 IF D<.2967# THEN DD=DD*.98# 15000 IF LL=<10 GOTO 14400 15050 DPDX=DPD*1.1# 15100 IF DPDX<.1# THEN DPDX=.1# 15150 DP=ABS(1#-PP/PPP) 15200 IF DP<1D-009 THEN GOTO 15600 15250 IF D>.3# AND DP<1D-008 THEN GOTO 15600 15300 IF D>.7# AND DP<1D-007 THEN GOTO 15600 15350 XP=(PPP-PP)/DPDX 15400 IF ABS(XP)>.1# THEN XP=XP*.1#/ABS(XP) 15450 DD=DD+XP 15500 IF DD=<0 THEN DD=1D-008 15550 IF LL=<30 THEN GOTO 14400 15600 DOUT=DD 15650 RETURN 15700 *CORRTPDLDVDELG 15750 IF T>646.3# THEN GOTO 16650 15800 DLIQ=DLL 15850 IF DLL=<0 THEN DLIQ=1.11#-.0004*T 15900 DLL=DLIQ:D=DLIQ 15950 GOSUB *DFINDDOUTPDTDPD 16000 D=DOUT:DL=DOUT 16050 GOSUB *THERMDT 16100 GL=GD 16150 DVAP=DVV 16200 IF DVV=<0 THEN DVAP=PPP/RT 16250 D=DVAP:DVV=DVAP 16300 GOSUB *DFINDDOUTPDTDPD 16350 IF DOUT<5D-007 THEN DOUT=5D-007 16400 D=DOUT:DV=DOUT 16450 GOSUB *THERMDT 16500 GV=GD 16550 DELG=GL-GV 16600 RETURN 16650 PPP=0 16700 IF T>647.126# THEN RETURN 16750 DELG=0 16800 TAUC=.657128#*(1#-T/647.126#)^.325# 16850 DL=.322#+TAUC 16900 DV=.322#-TAUC 16950 D=DV 17000 GOSUB *BASEDT 17050 GOSUB *QQTD 17100 PPP=RT*DV*BASEZ+Q 17150 RETURN 17200 *BBT 17250 BV(1)=1# 17300 FOR I=2 TO 10 17350 BV(I)=BV(I-1)*TZ/T 17400 NEXT I 17450 B1=BP(1)+BP(2)*LOG(1#/BV(2)) 17500 B2=BQ(1) 17550 B1T=BP(2)*BV(2)/TZ 17600 B2T=0 17650 B1TT=0 17700 B2TT=0 17750 FOR I=3 TO 10 17800 B1=B1+BP(I)*BV(I-1) 17850 B2=B2+BQ(I)*BV(I-1) 17900 B1T=B1T-CDBL((I-2))*BP(I)*BV(I-1)/T 17950 B2T=B2T-CDBL((I-2))*BQ(I)*BV(I-1)/T 18000 B1TT=B1TT+BP(I)*CDBL((I-2))*CDBL((I-2))*BV(I-1)/(T*T) 18050 B2TT=B2TT+BQ(I)*CDBL((I-2))*CDBL((I-2))*BV(I-1)/(T*T) 18100 NEXT I 18150 B1TT=B1TT-B1T/T 18200 B2TT=B2TT-B2T/T 18250 RETURN 18300 *BASEDT 18350 Y=.25#*B1*D 18400 XX=1#-Y 18450 Z0=(1#+ALPHA*Y+BETA*Y*Y)/(XX*XX*XX) 18500 BASEZ=Z0+4#*Y*(B2/B1-GAMMA) 18550 DZ0=(ALPHA+2#*BETA*Y)/(XX*XX*XX)+3#*(1#+ALPHA*Y+BETA*Y*Y)/(XX*XX*XX*XX) 18600 DZB=DZ0+4#*(B2/B1-GAMMA) 18650 AB=(-1#)*LOG(XX)-(BETA-1#)/XX+28.16666667#/(XX*XX)+4#*Y*(B2/B1-GAMMA)+15.166666667#+LOG(D*RT/.101325) 18750 BB2TT=T*T*B2TT 18800 UB=(-1#)*T*B1T*(BASEZ-1#-D*B2)/B1-D*T*B2T 18900 CVB=2#*UB+(Z0-1#)*((T*B1T/B1)*(T*B1T/B1)-T*T*B1TT/B1)-D*(BB2TT-GAMMA*B1TT*T*T)-(T*B1T/B1)*(T*B1T/B1)*Y*DZ0 18950 DPDTB=BASEZ/T+D*(DZB*B1T/4#+B2T-B2/B1*B1T) 19000 SB=UB-AB 19050 RETURN 19100 *QQTD 19150 QR(1)=0 19200 Q5=0 19250 Q=0 19300 AR=0 19350 DADT=0 19400 CVR=0 19450 DPDTR=0 19500 E=EXP((-1#)*D) 19550 Q10=D*D*E 19600 Q20=1#-E 19650 QR(2)=Q10 19700 QV=TZ/T 19750 QT(1)=T/TZ 19800 FOR I=2 TO 10 19850 QR(I+1)=QR(I)*Q20 19900 QT(I)=QT(I-1)*QV 19950 NEXT I 20000 FOR I=1 TO 36 20050 K=II(I)+1 20100 L=JJ(I) 20150 QK=CDBL(K) : QL=CDBL(L) 20250 QZR(K-1)=QR(K+1):QZT(L)=QT(L+1):QZR(K)=QR(K+2):QZT(L+1)=QT(L+2) 20300 QP=HGKG(I)*QZR(K-1)*QZT(L) 20350 Q=Q+QP 20400 Q5=Q5+(2#/D-(1#-E*(QK-1#)/Q20))*QP 20450 AR=AR+HGKG(I)*QZR(K)*QZT(L)/(Q10*QK*RT) 20500 DFDT=Q20^QK*(1#-QL)*QZT(L+1)/(TZ*QK) 20550 D2F=QL*DFDT 20600 DPT=DFDT*Q10*QK/Q20 20650 DADT=DADT+HGKG(I)*DFDT 20700 DPDTR=DPDTR+HGKG(I)*DPT 20750 CVR=CVR+HGKG(I)*D2F/GASCON 20800 NEXT I 20850 QPX=0 20900 Q2A=0 20950 FOR J=37 TO 40 21000 IF HGKG(J)=0 THEN GOTO 22250 21050 K=II(J) 21100 KM=JJ(J) 21150 QK=CDBL(K) : QKM=CDBL(KM) 21200 DDZ=ADZ(J-36) 21250 DEL=D/DDZ-1# 21300 IF ABS(DEL)<1D-010 THEN DEL=1D-010 21400 EX1=(-1#)*AAD(J-36)*DEL^QK 21450 DEX=EXP(EX1)*DEL^QKM 21500 ATT=AAT(J-36) 21550 TX=ATZ(J-36) 21600 TAU=T/TX-1# 21650 EX2=(-1#)*ATT*TAU*TAU 21700 TEX=EXP(EX2) 21750 Q10X=DEX*TEX 21800 QM=QKM/DEL-QK*AAD(J-36)*DEL^(QK-1#) 21850 FCT=QM*D*D*Q10X/DDZ 21900 Q5T=FCT*(2#/D+QM/DDZ)-(D/DDZ)*(D/DDZ)*Q10X*(QKM/(DEL*DEL)+QK*(QK-1#)*AAD(J-36)*DEL^(QK-2#)) 21950 Q5=Q5+Q5T*HGKG(J) 22000 QPX=QPX+HGKG(J)*FCT 22050 DADT=DADT-2#*HGKG(J)*ATT*TAU*Q10X/TX 22100 DPDTR=DPDTR-2#*HGKG(J)*ATT*TAU*FCT/TX 22150 Q2A=Q2A+T*HGKG(J)*(4#*ATT*EX2+2#*ATT)*Q10X/(TX*TX) 22200 AR=AR+Q10X*HGKG(J)/RT 22250 NEXT J 22300 SR=(-1#)*DADT/GASCON 22350 UR=AR+SR 22400 CVR=CVR+Q2A/GASCON 22450 Q=Q+QPX 22500 RETURN 22550 *THERMDT 22600 GOSUB *IDEALT 22650 GOSUB *BASEDT 22700 GOSUB *QQTD 22750 QPQ=Q:QDPQ=Q5 22800 Z=BASEZ+QPQ/(RT*D) 22850 DPDD=RT*(BASEZ+Y*DZB)+QDPQ 22900 AD=AB+AR+AI-UREF/T+SREF 22950 GD=AD+Z 23000 UD=UB+UR+UI-UREF/T 23050 DPDT=RT*D*DPDTB+DPDTR 23100 CVDX=CVB+CVR+CVIX 23150 CPD=CVDX+T*DPDT*DPDT/(D*D*DPDD*GASCON) 23200 HD=UD+Z 23250 SD=SB+SR+SI-SREF 23300 RETURN 23350 *SECDERIVP 23500 D2PDD2=0 : D2PDTDD=0 : D2PDT2=0 : ZX=0 23525 D2DDT2A=0 : D2DDT2=0 : DDDT=0 23550 D2PRESIDDD2A=0 : D2PRESIDDDDT=0 : D2PRESIDDT2=0 : D2PRESIDDD2=0 23650 D2PDD2=3#+ALPHA+3#*Y+4#*ALPHA*Y+3#*BETA*Y+ALPHA*Y*Y+3#*BETA*Y*Y 23700 D2PDD2=D2PDD2*B1/(2#*XX*XX*XX*XX*XX)+2#*B1*(B2/B1-GAMMA) 23750 D2PDD2=D2PDD2*RT 23800 D2PDTDD=Z0+8#*Y*(B2/B1-GAMMA)+(Y+B1T*D*T/2#)*((ALPHA+2#*BETA*Y)/(XX*XX*XX)+3#*Z0/XX) 23850 ZX=6#+3#*ALPHA+BETA+3#*ALPHA*Y+4#*BETA*Y+BETA*Y*Y 23900 D2PDTDD=D2PDTDD+B1T*D*T*Y*ZX/(2#*XX*XX*XX*XX*XX) 23950 D2PDTDD=D2PDTDD+2#*B2T*D*T-2#*B1T*D*T*GAMMA 24000 D2PDTDD=D2PDTDD*GASCON 24050 D2PDT2=(ALPHA+2#*BETA*Y)/(XX*XX*XX)+3#*Z0/XX 24100 D2PDT2=D2PDT2*(2#*B1T*D+B1TT*D*T)/4# 24150 D2PDT2=D2PDT2+B1T*B1T*D*D*T*ZX/(8#*XX*XX*XX*XX*XX)+2#*B2T*D-2#*B1T*D*GAMMA+B2TT*D*T-B1TT*D*T*GAMMA 24200 D2PDT2=D2PDT2*GASCON*D 24250 FOR I=1 TO 36 24300 K=II(I)+1 24350 L=JJ(I) 24400 QK=CDBL(K) : QL=CDBL(L) 24450 D2PRESIDDD2A=2#/(D*D)-4#/D+4#*(QK-1#)*E/(D*Q20)+1#-3#*(QK-1#)*E/Q20+(QK-1#)*(QK-2#)*E*E/(Q20*Q20) 24500 D2PRESIDDD2=D2PRESIDDD2+D2PRESIDDD2A*HGKG(I)*QT(L+1)*QR(K+1) 24550 D2PRESIDDDDT=D2PRESIDDDDT-(QL-1#)*HGKG(I)*QT(L+1)*QR(K+1)*(2#/D-1#+(QK-1#)*E/Q20)/T 24600 D2PRESIDDT2=D2PRESIDDT2+(QL-1#)*QL*HGKG(I)*QR(K+1)*QT(L+1)/(T*T) 24650 NEXT I 24700 D2PRESIDDD2A=0 : D2PRESIDDDDTC=0 24750 FOR J=37 TO 40 24800 K=II(J) 24850 KM=JJ(J) 24900 QK=CDBL(K) : QKM=CDBL(KM) 24950 DDZ=ADZ(J-36) 25000 DEL=D/DDZ-1# 25050 IF ABS(DEL)<1D-010 THEN DEL=1D-010 25100 EX1=(-1#)*AAD(J-36)*DEL^QK 25150 DEX=EXP(EX1)*DEL^QKM 25200 ATT=AAT(J-36) 25250 TX=ATZ(J-36) 25300 TAU=T/TX-1# 25350 EX2=(-1#)*ATT*TAU*TAU 25400 TEX=EXP(EX2) 25450 Q10X=DEX*TEX 25500 QM=QKM/DEL-QK*AAD(J-36)*DEL^(QK-1#) 25550 D2PRESIDDD2A=QM*(2#/(D*D)+4#*QKM/(D*DDZ*DEL)+4#*QK*EX1/(D*DDZ*DEL)) 25600 D2PRESIDDD2A=D2PRESIDDD2A/DDZ+QM*(QKM*(QKM-1#)+2#*QK*QKM*EX1+QK*(QK-1#)*EX1+QK*QK*EX1*EX1)/(DDZ*DDZ*DDZ*DEL*DEL) 25650 D2PRESIDDD2A=D2PRESIDDD2A-(QKM-QK*(QK-1#)*EX1)*(4#/D+2*QKM/(DDZ*DEL)+2#*QK*EX1/(DDZ*DEL))/(DDZ*DDZ*DEL*DEL) 25700 D2PRESIDDD2A=D2PRESIDDD2A+(2#*QKM+QK*(QK-1#)*(QK-2#)*EX1)/(DDZ*DDZ*DDZ*DEL*DEL*DEL) 25750 D2PRESIDDD2=D2PRESIDDD2+HGKG(J)*Q10X*D2PRESIDDD2A*D*D 25800 D2PRESIDDDDTC=2#*QM+D*QKM*QM/(DDZ*DEL)+D*QK*EX1*QM/(DDZ*DEL)+D*(QK*(QK-1#)*EX1/(DEL*DEL)-QKM/(DEL*DEL))/DDZ 25850 D2PRESIDDDDT=D2PRESIDDDDT-2#*D*HGKG(J)*ATT*TAU*Q10X*D2PRESIDDDDTC/(TX*DDZ) 25900 D2PRESIDDT2=D2PRESIDDT2-2#*D*D*HGKG(J)*ATT*(1#+2#*EX2)*Q10X*QM/(DDZ*TX*TX) 25950 NEXT J 26000 D2PDD2=D2PDD2+D2PRESIDDD2 26050 D2PDTDD=D2PDTDD+D2PRESIDDDDT 26100 D2PDT2=D2PDT2+D2PRESIDDT2 26150 D2DDT2A=DPDD*DPDD*D2PDT2-2#*DPDT*DPDD*D2PDTDD+DPDT*DPDT*D2PDD2 26200 D2DDT2=(-1#)*D2DDT2A/(DPDD*DPDD*DPDD) 26250 DDDT=(-1#)*DPDT/DPDD 26300 RETURN 26350 *PST 26400 IF T>314# THEN GOTO 26600 26450 PL=6.3573118#-8858.843#/T+607.56335*T^(-.6#) 26500 PS=.1#*EXP(PL) 26550 RETURN 26600 TR=T/647.25# 26650 W=ABS(1#-TR) 26700 BPST=0 26750 FOR I=1 TO 8 26800 ZPST=CDBL(I) 26850 BPST=BPST+AHGK(I)*W^((ZPST+1#)/2#) 26900 NEXT I 26950 QPST=BPST/TR 27000 PS=22.093*EXP(QPST) 27050 RETURN 27100 *IDEALT 27150 TIDEAL=T/100 27200 TL=LOG(TIDEAL) 27250 GI=(-1#)*(HGKC(1)/TIDEAL+HGKC(2))*TL 27300 HI=(HGKC(2)+HGKC(1)*(1#-TL)/TIDEAL) 27350 CPI=HGKC(2)-HGKC(1)/TIDEAL 27400 FOR I=3 TO 18 27450 GI=GI-HGKC(I)*TIDEAL^CDBL(I-6) 27500 HI=HI+HGKC(I)*CDBL((I-6))*TIDEAL^CDBL(I-6) 27550 CPI=CPI+HGKC(I)*CDBL((I-6))*CDBL((I-5))*TIDEAL^CDBL(I-6) 27600 NEXT I 27650 AI=GI-1# 27700 UI=HI-1# 27750 CVIX=CPI-1# 27800 SI=UI-AI 27850 RETURN 27900 *PCORRTPDLDV 27950 GOSUB *PST 28000 PPP=PS 28050 GOSUB *CORRTPDLDVDELG 28100 DPRES=0 28150 DPRES=DELG*RT/(1#/DV-1#/DL) 28200 PPP=PPP+DPRES 28250 IF ABS(DELG)<1D-005 THEN GOTO 28350 28300 DLL=DL:DVV=DV:GOTO 28050 28350 P=PPP 28400 RETURN 28450 *UNIT 28500 PRINT"*******************" 28550 PRINT"* Enter units *" 28600 PRINT"*******************" 28650 PRINT A1$ 28700 PRINT"Choose from 1=deg K, 2=deg C" 28750 INPUT IT 28800 IF IT<1 OR IT>2 THEN GOTO 28700 28850 NT$=NNT$(IT) 28900 PRINT A2$ 28950 PRINT"Choose from 1=kg/m3, 2=g/cm3" 29000 INPUT ID 29050 IF ID>2 OR ID<1 THEN GOTO 28950 29100 ND$=NND$(ID) 29150 FD=FFD(ID) 29200 PRINT A3$ 29250 PRINT"Choose from 1=MPa, 2=bar" 29300 INPUT IP 29350 IF IP>2 OR IP<1 THEN GOTO 29250 29400 NP$=NNP$(IP) 29450 FP=FFP(IP) 29800 RETURN 29850 *TTTT 29900 ON IT GOTO 29950, 30100 29950 TTT=T 30050 GOTO 30200 30100 TTT=T+273.15# 30200 RETURN 30250 *BLOCKDATA 30300 FOR I=1 TO 4:READ ATZ(I):NEXT I 30350 DATA 640#,640#,641.6#,270# 30400 FOR I=1 TO 4:READ ADZ(I):NEXT I 30450 DATA 0.319#,0.319#,0.319#,1.55# 30500 FOR I=1 TO 4:READ AAT(I):NEXT I 30550 DATA 2.0D+004,2.0D+004,4.0D+004,25.0# 30600 FOR I=1 TO 4:READ AAD(I):NEXT I 30650 DATA 34.0#,40.0#,30.0#,1.05D+003 30700 GASCON=.461522# : TZ=647.073 30750 UREF=-4328.454977# : SREF=7.618072# 30800 ALPHA=11#:BETA=44.333333333333#:GAMMA=3.5# 30850 FOR I=1 TO 10:READ BP(I):NEXT I 30900 DATA 0.7478629#,-0.3540782#,0.0#,0.0#,0.007159876#,0.0#,-0.003528426#,0.0#,0.0#,0.0# 30950 FOR I=1 TO 10:READ BQ(I):NEXT I 31000 DATA 1.1278334#,0.0#,-0.5944001#,-5.010996#,0.0#,0.63684256#,0.0#,0.0#,0.0#,0.0# 31050 FOR I=1 TO 40:READ HGKG(I):NEXT I 31100 DATA -5.3062968529023D+002,2.2744901424408D+003,7.8779333020687D+002 31150 DATA -6.9830527374994D+001,1.7863832875422D+004,-3.9514731563338D+004 31200 DATA 3.3803884280753D+004,-1.3855050202703D+004,-2.5637436613260D+005 31250 DATA 4.8212575981415D+005,-3.4183016969660D+005,1.2223156417448D+005 31300 DATA 1.1797433655832D+006,-2.1734810110373D+006,1.0829952168620D+006 31350 DATA -2.5441998064049D+005,-3.1377774947767D+006,5.2911910757704D+006 31400 DATA -1.3802577177877D+006,-2.5109914369001D+005,4.6561826115608D+006 31450 DATA -7.2752773275387D+006,4.1774246148294D+005,1.4016358244614D+006 31500 DATA -3.1555231392127D+006,4.7929666384584D+006,4.0912664781209D+005 31550 DATA -1.3626369388386D+006,6.9625220862664D+005,-1.0834900096447D+006 31600 DATA -2.2722827401688D+005,3.8365486000660D+005,6.8833257944332D+003 31650 DATA 2.1757245522644D+004,-2.6627944829770D+003,-7.0730418082074D+004 31700 DATA -0.225#,-1.68#,0.055#,-93.0# 31750 FOR I=1 TO 40:READ II(I):NEXT I 31800 DATA 0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,8,8,8,8,2,2,0,4,2,2,2,4 31850 FOR I=1 TO 40:READ JJ(I):NEXT I 31900 DATA 2,3,5,7,2,3,5,7,2,3,5,7,2,3,5,7,2,3,5,7,2,3,5,7,2,3,5,7,2,3,5,7,1,4,4,4,0,2,0,0 31950 FOR I=1 TO 8:READ AHGK(I):NEXT I 32000 DATA -7.8889166#,2.5514255#,-6.716169#,33.239495# 32050 DATA -105.38479#,174.35319#,-148.39348#,48.631602# 32100 FOR I=1 TO 18:READ HGKC(I):NEXT I 32150 DATA 1.9730271018D+001,2.09662681977D+001,-4.83429455355D-001,6.05743189245D+000 32200 DATA 2.256023885D+001,-9.87532442D+000,-4.3135538513D+000,4.58155781D-001 32250 DATA -4.7754901883D-002,4.1238460633D-003,-2.7929052852D-004 32300 DATA 1.4481695261D-005,-5.6473658748D-007,1.6200446D-008,-3.303822796D-010 32350 DATA 4.51916067368D-012,-3.70734122708D-014,1.37546068238D-016 32400 FOR I=1 TO 2:READ FFD(I):NEXT I 32450 DATA 1.0D-003,1.0# 32500 FOR I=1 TO 2:READ FFP(I):NEXT I 32550 DATA 1.0#,10.0# 32700 FOR I=1 TO 2:READ NNT$(I):NEXT I 32750 DATA "K","deg C" 32800 FOR I=1 TO 2:READ NND$(I):NEXT I 32850 DATA "kg/m3", "g/cm3" 32900 FOR I=1 TO 2:READ NNP$(I):NEXT I 32950 DATA "MPa","bar" 33100 A1$="TEMPERATURE":A2$="DENSITY":A3$="PRESSURE" 33150 RETURN 33200 *PARAMETERS 33300 FOR I=1 TO 28:READ QMG(I):NEXT I 33350 DATA 3.0876D-001, 0.0000#, -1.8910#, 9.1384#, -4.1692D-004, 1.9303D-006, 1.1256D-002, -1.0570D-001 33400 DATA -3.1595D-007, 0.0000#, 1.3359D-005, 4.9662D-005 33450 DATA 1.4083#, 6.0671D-004, 0.0000#, 2.1465D+002 33500 DATA 2.3248D-002, -6.6477D-005, 1.1473D-001, 0.0000#, 4.8132D-005, -2.1864D-007, -1.1510D-003, 1.1545D-002 33550 DATA 4.6992D-008, 0.0000#, -2.1389D-006, -6.7225D-006 33650 FOR I=1 TO 28:READ QCA(I):NEXT I 33700 DATA 4.6643D-001, -4.6864D-004, -3.5825#, 9.4022#, -4.1405D-004, 1.5603D-006, 1.1313D-002, -6.8704D-002 33750 DATA 2.0718D-008, -3.9725D-010, 0.0000#, 3.2563D-005 33800 DATA 0.0000#, 3.0967D-003, 7.2573#, 2.4295D+002 33850 DATA 6.5306D-03, -2.8770D-005, 2.1034D-001, 0.0000 33900 DATA 3.8611D-005, -1.3608D-007, -9.9943D-004, 5.5185D-003, 0.0000#, 2.4805D-011, 0.0000#, -2.2898D-006 33950 FOR I=1 TO 9 : READ RRMG(I): NEXT I 34000 DATA -27774#, 5731.5#, -17.321#, 57.485#, -4194.2# 34050 DATA -296.30#, -0.022235#, 1.7297#, 0.11811# 34100 FOR I=1 TO 9 : READ RRCA(I): NEXT I 34150 DATA -26715#, 5481.3#, -16.105#, 67.402#, -5317.6# 34200 DATA -337.12#, -0.023983#, 2.0355#, 0.12356# 34250 MGCL2=95.211# : CACL2=110.984 34300 TTR=298.15# : PR=1.01325 34350 RVGAS=83.14472# : RGAS=8.314472# : MW=18.01528 34400 REM Entropies of ions (Pitzer, 1995) are summed stoichiometrically. 34450 S0MGCL2=-3.084*RGAS : S0CACL2=7.156#*RGAS 34500 FOR I=1 TO 9: READ DU(I) : NEXT I 34550 DATA 3.4279D+002,-5.0866D-003,9.4690D-007,-2.0525#,3.1159D+003 34600 DATA -1.8289D+002,-8.0325D+003,4.2142D+006,2.1417# 34650 EE=4.80320427D-010 : BC=1.3806504D-016 : AVOG=6.02214179D+023 34700 RETURN 34750 *DEBYEHUCKEL 34800 PRES=(PRES/FP)*(FFP(2)/FFP(1)) 34900 DPDD=DPDD*(FFP(2)/FFP(1)) 34950 DPDT=DPDT*(FFP(2)/FFP(1)) 35100 EPS=DU(1)*EXP(DU(2)*T+DU(3)*T*T) 35150 EEPS=1#+(PRES-1000)/(DU(7)+DU(8)/T+DU(9)*T+1000) 35200 EEPS=LOG(EEPS) 35250 EPS=EPS+(DU(4)+(DU(5)/(DU(6)+T)))*EEPS 35300 APHI=SQR(2#*3.14159265#*AVOG*D/1000)/3# 35350 APHI=APHI*EE*EE*EE/(BC*SQR(BC)*T*SQR(T)*EPS*SQR(EPS)) 35400 DET=DU(7)+DU(8)/T+DU(9)*T+PRES 35450 DEPSDP=DU(4)+DU(5)/(DU(6)+T) 35500 DEPSDP=DEPSDP/DET 35550 DRHODPDD=1#/(D*DPDD) 35600 AV=2#*RVGAS*T*APHI*(3#*DEPSDP/EPS-DRHODPDD) 35650 ALPH=DPDT/(D*DPDD) 35700 DE=DU(7)+DU(8)/T+DU(9)*T 35750 DEPS=DU(1)*(DU(2)+2#*DU(3)*T)*EXP(DU(2)*T+DU(3)*T*T) 35800 DEPS=DEPS-DU(5)*LOG(1#+(PRES-1000)/(DE+1000))/((DU(6)+T)*(DU(6)+T)) 35850 DEPS=DEPS+(DU(4)+DU(5)/(DU(6)+T))*(1000-PRES)*(DU(9)-DU(8)/(T*T))/((DE+PRES)*(DE+1000)) 35900 DEPS=DEPS/EPS 35950 AH=1#+T*DEPS+T*ALPH/3# 36000 AH=AH*(-6#)*APHI*RGAS*T 36050 D2EPS=DU(1)*(DU(2)+2#*DU(3)*T)*(DU(2)+2#*DU(3)*T)*EXP(DU(2)*T+DU(3)*T*T) 36100 D2EPS=D2EPS+2#*DU(1)*DU(3)*EXP(DU(2)*T+DU(3)*T*T) 36150 D2EPS=D2EPS+(2#*DU(5)/((DU(6)+T)*(DU(6)+T)*(DU(6)+T)))*LOG(1#+(PRES-1000)/(DE+1000)) 36200 D2EPS=D2EPS-(2#*DU(5)/((DU(6)+T)*(DU(6)+T)))*(DU(9)-DU(8)/(T*T))*(1#/(DE+PRES)-1#/(DE+1000)) 36250 D2EPS=D2EPS+(DU(4)+DU(5)/(DU(6)+T))*(2#*DU(8)/(T*T*T))*(1#/(DE+PRES)-1#/(DE+1000)) 36300 D2EPS=D2EPS-(DU(4)+DU(5)/(DU(6)+T))*(DU(9)-DU(8)/(T*T))*(DU(9)-DU(8)/(T*T))*(1#/((DE+PRES)*(DE+PRES))-1#/((DE+1000)*(DE+1000))) 36350 D2EPS=D2EPS/EPS 36400 DWDDDT=DDDT/D 36450 DWD2DDT2=D2DDT2/D 36500 AJ=2#*DWD2DDT2-DWDDDT*DWDDDT-2#*DWDDDT/T-6#*D2EPS+15#*DEPS*DEPS+6#*DEPS/T-6#*DWDDDT*DEPS+3#/(T*T) 36550 AJ=AJ*APHI*RGAS*T*T 36600 RETURN 36650 *MGCA 36661 S=S*MW : H=H*MW : G=G*MW 36662 S=S+SREF*RGAS : H=H+UREF*RGAS : G=G+UREF*RGAS-T*SREF*RGAS 36670 CPW=CPD*RGAS 37000 IF ISALT=1 THEN SALT=MGCL2 : SSALTPRTR=S0MGCL2 : GOTO 37100 37050 IF ISALT=2 THEN SALT=CACL2 : SSALTPRTR=S0CACL2 : GOTO 37300 37100 FOR I=1 TO 12 : B0(I)=QMG(I) : NEXT I 37150 FOR I=1 TO 4 : B1(I)=QMG(I+12) : NEXT I 37200 FOR I=1 TO 12 : CMX(I)=QMG(I+16) : NEXT I 37250 FOR I=1 TO 9 : RR(I)=RRMG(I) : NEXT I : GOTO 37500 37300 FOR I=1 TO 12 : B0(I)=QCA(I) : NEXT I 37350 FOR I=1 TO 4 : B1(I)=QCA(I+12) : NEXT I 37400 FOR I=1 TO 12 : CMX(I)=QCA(I+16) : NEXT I 37450 FOR I=1 TO 9 : RR(I)=RRCA(I) : NEXT I 37500 MI=SQR(3#*MOL) 37550 TLO=T-227# 37600 THI=647#-T 37650 HSALTPRTR=0 : HSALTTR=0 : HSALT=0 37700 SSALTTR=0 : SSALT=0 37750 HSALTTR=HSALTPRTR+10*(PRES-PR)*(RR(4)+2#*RR(5)/TTR+RR(6)*(647#-4#*TTR/3#)*EXP((-4#)*LOG(647#-TTR)/3#)) 37800 HSALTTR=HSALTTR+10*(PRES*PRES-PR*PR)*(RR(7)+2#*RR(8)/TTR+RR(9)*(647#-4#*TTR/3#)*EXP((-4#)*LOG(647#-TTR)/3#)) 37850 HSALT=HSALTTR+RR(1)*(T-TTR)+RR(2)*((T*LOG(T)-T)-(TTR*LOG(TTR)-TTR))+RR(3)*(T*T-TTR*TTR)/2# 37900 HSALT=HSALT+2#*RR(5)*(1#/T-1#/TTR) 37950 HSALT=HSALT-RR(6)*PRES*(EXP((-4#)*LOG(THI)/3#)*(4#*T-3#*647#)-EXP((-4#)*LOG(647#-TTR)/3#)*(4#*TTR-3#*647)) 38000 HSALT=HSALT+2#*RR(8)*PRES*PRES*(1#/T-1#/TTR) 38050 HSALT=HSALT-RR(9)*PRES*PRES*(EXP((-4#)*LOG(THI)/3#)*(4#*T-3#*647#)-EXP((-4#)*LOG(647#-TTR)/3#)*(4#*TTR-3#*647)) 38100 SSALTTR=SSALTPRTR+10*(RR(5)/(TTR*TTR)-RR(6)*EXP((-4#)*LOG(647#-TTR)/3#)/3#)*(PRES-PR) 38150 SSALTTR=SSALTTR+10*(RR(8)/(TTR*TTR)-RR(9)*EXP((-4#)*LOG(647-TTR)/3#)/3#)*(PRES*PRES-PR*PR) 38200 SSALT=SSALTTR+RR(1)*(LOG(T)-LOG(TTR))+RR(2)*((LOG(T))*(LOG(T))-(LOG(TTR))*(LOG(TTR)))/2# 38250 SSALT=SSALT+RR(3)*(T-TTR)+RR(5)*PRES*(1#/(T*T)-1#/(TTR*TTR)) 38300 SSALT=SSALT+(RR(6)*PRES/3#)*(EXP((-4#)*LOG(THI)/3#)-EXP((-4#)*LOG(647#-TTR)/3#)) 38350 SSALT=SSALT+RR(8)*PRES*PRES*(1#/(T*T)-1#/(TTR*TTR)) 38400 SSALT=SSALT+(RR(9)*PRES*PRES/3#)*(EXP((-4#)*LOG(THI)/3#)-EXP((-4#)*LOG(647#-TTR)/3#)) 38450 GSALT=0 38500 GSALT=HSALT-T*SSALT 38550 BETA0=B0(1)+B0(2)*T+B0(3)/TLO+B0(4)/THI+(PRES-PR)*(B0(5)+B0(6)*T+B0(7)/TLO+B0(8)/THI)+(PRES-PR)*(PRES-PR)*(B0(9)+B0(10)*T+B0(11)/TLO+B0(12)/THI) 38600 BETA1=B1(1)+B1(2)*T+B1(3)/TLO+B1(4)/THI 38650 CG=CMX(1)+CMX(2)*T+CMX(3)/TLO+CMX(4)/THI+(PRES-PR)*(CMX(5)+CMX(6)*T+CMX(7)/TLO+CMX(8)/THI)+(PRES-PR)*(PRES-PR)*(CMX(9)+CMX(10)*T+CMX(11)/TLO+CMX(12)/THI) 38700 BPHI=BETA0+BETA1*EXP((-2#)*MI) 38750 OSC=1#-2*APHI*MI/(1#+1.2#*MI)+(4#/3#)*MOL*BPHI+16#*MOL*MOL*CG/3# 38800 BG=BETA0+2#*BETA1*(1#-(1#+2#*MI)*EXP((-2#)*MI))/(4#*MI*MI) 38850 GEX=(-4#)*APHI*MI*MI*LOG(1#+1.2#*MI)/1.2#+4#*MOL*MOL*BG+8#*MOL*MOL*MOL*CG 38900 GEX=GEX*RGAS*T 38950 BGM=BG+BPHI 39000 GM1=(-2#)*APHI*(MI/(1#+1.2#*MI)+2#*LOG(1#+1.2#*MI)/1.2#) 39050 GM2=(4#/3#)*MOL*BGM+8#*MOL*MOL*CG 39100 GM=GM1+GM2 39150 GM=EXP(GM) 39200 B0L=B0(2)-B0(3)/(TLO*TLO)+B0(4)/(THI*THI)+(PRES-PR)*(B0(6)-B0(7)/(TLO*TLO)+B0(8)/(THI*THI))+(PRES-PR)*(PRES-PR)*(B0(10)-B0(11)/(TLO*TLO)+B0(12)/(THI*THI)) 39250 B1L=B1(2)-B1(3)/(TLO*TLO)+B1(4)/(THI*THI) 39300 CGL=CMX(2)-CMX(3)/(TLO*TLO)+CMX(4)/(THI*THI)+(PRES-PR)*(CMX(6)-CMX(7)/(TLO*TLO)+CMX(8)/(THI*THI))+(PRES-PR)*(PRES-PR)*(CMX(10)-CMX(11)/(TLO*TLO)+CMX(12)/(THI*THI)) 39350 BL=B0L+B1L*(1#-(1#+2#*MI)*EXP((-2#)*MI))/(2#*MI*MI) 39400 PHIL=3#*AH*LOG(1#+1.2#*MI)/1.2#-4#*MOL*RGAS*T*T*BL-8#*MOL*MOL*RGAS*T*T*CGL 39450 B0J=0 : B1J=0 : CGJ=0 : BJ=0 39500 B0J=2#*B0(2)/T+454#*B0(3)/(T*TLO*TLO*TLO)+1294#*B0(4)/(T*THI*THI*THI) 39550 B0J=B0J+(PRES-PR)*(2#*B0(6)/T+454#*B0(7)/(T*TLO*TLO*TLO)+1294#*B0(8)/(T*THI*THI*THI)) 39600 B0J=B0J+(PRES-PR)*(PRES-PR)*(2#*B0(10)/T+454#*B0(11)/(T*TLO*TLO*TLO)+1294#*B0(12)/(T*THI*THI*THI)) 39650 B1J=2#*B1(2)/T+454#*B1(3)/(T*TLO*TLO*TLO)+1294#*B1(4)/(T*THI*THI*THI) 39700 CGJ=2#*CMX(2)/T+454#*CMX(3)/(T*TLO*TLO*TLO)+1294#*CMX(4)/(T*THI*THI*THI) 39750 CGJ=CGJ+(PRES-PR)*(2#*CMX(6)/T+454#*CMX(7)/(T*TLO*TLO*TLO)+1294#*CMX(8)/(T*THI*THI*THI)) 39800 CGJ=CGJ+(PRES-PR)*(PRES-PR)*(2#*CMX(10)/T+454#*CMX(11)/(T*TLO*TLO*TLO)+1294#*CMX(12)/(T*THI*THI*THI)) 39850 BJ=B0J+B1J*(1#-(1#+2#*MI)*EXP((-2#)*MI))/(2#*MI*MI) 39900 CP0=0 39950 CP0=RR(1)+RR(2)*LOG(T)+RR(3)*T-2#*PRES*(RR(5)/(T*T)+(2#/9#)*RR(6)*T*EXP((-7#)*LOG(THI)/3#)) 40000 CP0=CP0-2#*PRES*PRES*(RR(8)/(T*T)+(2#/9#)*RR(9)*T*EXP((-7#)*LOG(THI)/3#)) 40050 PHICP=CP0+3#*AJ*LOG(1#+1.2#*MI)/1.2#-4#*MOL*RGAS*T*T*BJ-8#*MOL*MOL*RGAS*T*T*CGJ 40100 CPX=3#*AJ*LOG(1#+1.2#*MI)/1.2#-4#*MOL*RGAS*T*T*BJ-8#*MOL*MOL*RGAS*T*T*CGJ 40150 V0=10*(RR(4)+RR(5)/T+RR(6)*EXP((-1#)*LOG(THI)/3#))+20*PRES*(RR(7)+RR(8)/T+RR(9)*EXP((-1#)*LOG(THI)/3#)) 40200 B0V=B0(5)+B0(6)*T+B0(7)/TLO+B0(8)/THI+2#*(PRES-PR)*(B0(9)+B0(10)*T+B0(11)/TLO+B0(12)/THI) 40300 CGV=CMX(5)+CMX(6)*T+CMX(7)/TLO+CMX(8)/THI+2#*(PRES-PR)*(CMX(9)+CMX(10)*T+CMX(11)/TLO+CMX(12)/THI) 40350 VPHI=V0+3#*AV*LOG(1#+1.2#*MI)/1.2#+4#*MOL*RVGAS*T*B0V+8#*MOL*MOL*RVGAS*T*CGV 40400 VTOTAL=1000/D+MOL*VPHI 40450 DSOLN=(1000+SALT*MOL)/VTOTAL 40500 SX=(PHIL-GEX/MOL)/T 40550 SSPEC=S*(1000/MW)+MOL*(SSALT+SX)+RGAS*MOL*(3#-3#*LOG(MOL)-2#*LOG(2#)) 40600 SSPEC=SSPEC/(1000+MOL*SALT) 40650 HSPEC=H*(1000/MW)+MOL*(HSALT+PHIL) 40700 HSPEC=HSPEC/(1000+MOL*SALT) 40750 CPSPEC=CPW*(1000/MW)+MOL*PHICP 40800 CPSPEC=CPSPEC/(1000+MOL*SALT) 40850 LPRINT 40900 LPRINT USING"V(water)=+##.###(cm3/mol) V(salt)=+###.##(cm3/mol)";MW/D,V0 40925 LPRINT 40950 LPRINT USING"G/RT= +##.#### Gsalt/RT= +##.###";G/(RGAS*T),GSALT/(RGAS*T) 41000 LPRINT USING"H/RT= +##.#### Hsalt/RT= +##.###";H/(RGAS*T),HSALT/(RGAS*T) 41050 LPRINT USING"S/R= +##.#### Ssalt/R= +##.###";S/RGAS,SSALT/RGAS 41100 LPRINT USING"Cp/R= +##.### Cpsalt/R= +###.##";CPW/RGAS,CP0/RGAS 41150 LPRINT 41200 LPRINT USING"m=#.##### Density(g/cm3)= +#.#####";MOL,DSOLN 41250 LPRINT USING" Osmotic coeff= +#.###";OSC 41300 LPRINT USING" Activity coeff= +#.###";GM 41350 LPRINT USING" phiL/RT= +##.###";PHIL/(RGAS*T) 41400 LPRINT USING" Ex entr/R= +##.###";SX/RGAS 41450 LPRINT USING" phiCp/R= +###.##";PHICP/RGAS 41500 LPRINT USING" Hspecific(J/g)= +#.####^^^^^";HSPEC 41550 LPRINT USING" Sspecific(J/g K)= +#.###";SSPEC 41600 LPRINT USING" Cpspecific(J/g K)= +#.###";CPSPEC 41650 LPRINT 41700 RETURN