📄 form9.frm
字号:
b11 = 0.08664 * R * Tc1 / (Pc1 * 1000000)
b22 = 0.08664 * R * Tc2 / (Pc2 * 1000000)
bm = y1 * b11 + y2 * b22
Z0 = 1
Do While 1
T0 = P * V / R / Z0
a11 = 0.42748 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000) * (1 + m1 * (1 - T0 ^ 0.5 / Tc1 ^ 0.5)) ^ 2
a22 = 0.42748 * R ^ 2 * Tc2 ^ 2 / (Pc2 * 1000000) * (1 + m2 * (1 - T0 ^ 0.5 / Tc2 ^ 0.5)) ^ 2
a12 = (a11 * a22) ^ 0.5 * (1 - k)
am = y1 ^ 2 * a11 + 2 * y1 * y2 * a12 + y2 ^ 2 * a22
a = am * Z0 ^ 2 / V ^ 2 / P
b = bm * Z0 / V
h = b / Z0
Z1 = 1 / (1 - h) - a / b * h / (1 + h)
If Abs(Z0 - Z1) < 0.000000001 Then Exit Do
Z0 = Z1
Loop
Z = Z1
HH(3) = P * V / R / Z
ElseIf Form5.Option3 = True Then
m1 = 0.48 + 1.574 * w1 - 0.176 * w1 ^ 2
m2 = 0.48 + 1.574 * w2 - 0.176 * w2 ^ 2
a11 = 0.42748 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000) * (1 + m1 * (1 - t ^ 0.5 / Tc1 ^ 0.5)) ^ 2
a22 = 0.42748 * R ^ 2 * Tc2 ^ 2 / (Pc2 * 1000000) * (1 + m2 * (1 - t ^ 0.5 / Tc2 ^ 0.5)) ^ 2
b11 = 0.08664 * R * Tc1 / (Pc1 * 1000000)
b22 = 0.08664 * R * Tc2 / (Pc2 * 1000000)
a12 = (Abs(a11) * Abs(a22)) ^ 0.5 * (1 - k)
am = y1 ^ 2 * a11 + 2 * y1 * y2 * a12 + y2 ^ 2 * a22
bm = y1 * b11 + y2 * b22
a = am * P / R ^ 2 / t ^ 2
b = bm * P / R / t
Z0 = 1
Do While 1
h = b / Z0
Z1 = 1 / (1 - h) - a / b * h / (1 + h)
If Abs(Z1 - Z0) < 0.0000000001 Then Exit Do
Z0 = Z1
Loop
Z = Z1
HH(3) = Z * R * t / P
End If '以上是用S-R-K方程计算
YI1(3) = Exp(b11 / bm * (Z - 1) - Log(Z - b) - a / b * (2 * (y1 * a11 + y2 * a12) / am - b11 / bm) * Log(1 + bm / V))
YI2(3) = Exp(b22 / bm * (Z - 1) - Log(Z - b) - a / b * (2 * (y1 * a12 + y2 * a22) / am - b22 / bm) * Log(1 + bm / V))
YI(3) = Exp(y1 * Log(YI1(3)) + y2 * Log(YI2(3)))
'以下是P-R方程的计算
If Form5.Option1 = True Then
m1 = 0.37646 + 1.54226 * w1 - 0.26992 * w1 ^ 2
m2 = 0.37646 + 1.54226 * w2 - 0.26992 * w2 ^ 2
a11 = 0.45724 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000) * (1 + m1 * (1 - t ^ 0.5 / Tc1 ^ 0.5)) ^ 2
a22 = 0.45724 * R ^ 2 * Tc2 ^ 2 / (Pc2 * 1000000) * (1 + m2 * (1 - t ^ 0.5 / Tc2 ^ 0.5)) ^ 2
b11 = 0.077796 * R * Tc1 / (Pc1 * 1000000)
b22 = 0.077796 * R * Tc2 / (Pc2 * 1000000)
a12 = (Abs(a11) * Abs(a22)) ^ 0.5 * (1 - k)
am = y1 ^ 2 * a11 + 2 * y1 * y2 * a12 + y2 ^ 2 * a22
bm = y1 * b11 + y2 * b22
HH(4) = R * t / (V - bm) - am / (V * (V + bm) + bm * (V - bm)) 'P-R方程
a = am * P / R ^ 2 / t ^ 2 '为下面求逸度系数服务
b = bm * P / R / t '为下面求逸度系数服务
ElseIf Form5.Option2 = True Then
m1 = 0.37646 + 1.54226 * w1 - 0.26992 * w1 ^ 2
m2 = 0.37646 + 1.54226 * w2 - 0.26992 * w2 ^ 2
b11 = 0.077796 * R * Tc1 / (Pc1 * 1000000)
b22 = 0.077796 * R * Tc2 / (Pc2 * 1000000)
bm = y1 * b11 + y2 * b22
Z0 = 1
Do While 1
T0 = P * V / R / Z0
a11 = 0.45724 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000) * (1 + m1 * (1 - T0 ^ 0.5 / Tc1 ^ 0.5)) ^ 2
a22 = 0.45724 * R ^ 2 * Tc2 ^ 2 / (Pc2 * 1000000) * (1 + m2 * (1 - T0 ^ 0.5 / Tc2 ^ 0.5)) ^ 2
a12 = (Abs(a11) * Abs(a22)) ^ 0.5 * (1 - k)
am = y1 ^ 2 * a11 + 2 * y1 * y2 * a12 + y2 ^ 2 * a22
a = am * Z0 ^ 2 / V ^ 2 / P
b = bm * Z0 / V
h = b / Z0
Z1 = 1 / (1 - h) - a / b * h / (1 + 2 * h - h ^ 2)
If Abs(Z0 - Z1) < 0.00001 Then Exit Do
Z0 = Z1
Loop
Z = Z1
HH(4) = P * V / R / Z
ElseIf Form5.Option3 = True Then
m1 = 0.37646 + 1.54226 * w1 - 0.26992 * w1 ^ 2
m2 = 0.37646 + 1.54226 * w2 - 0.26992 * w2 ^ 2
a11 = 0.457235 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000) * (1 + m1 * (1 - t ^ 0.5 / Tc1 ^ 0.5)) ^ 2
a22 = 0.457235 * R ^ 2 * Tc2 ^ 2 / (Pc2 * 1000000) * (1 + m2 * (1 - t ^ 0.5 / Tc2 ^ 0.5)) ^ 2
b11 = 0.077796 * R * Tc1 / (Pc1 * 1000000)
b22 = 0.077796 * R * Tc2 / (Pc2 * 1000000)
a12 = (Abs(a11) * Abs(a22)) ^ 0.5 * (1 - k)
am = y1 ^ 2 * a11 + 2 * y1 * y2 * a12 + y2 ^ 2 * a22
bm = y1 * b11 + y2 * b22
a = am * P / R ^ 2 / t ^ 2
b = bm * P / R / t
Z0 = 1
Do While 1
h = b / Z0
Z1 = 1 / (1 - h) - a / b * h / (1 + 2 * h - h ^ 2)
If Abs(Z0 - Z1) < 0.0000000001 Then Exit Do
Z0 = Z1
Loop
Z = Z1
HH(4) = Z * R * t / P
End If '以上是用P-R方程计算
YI1(4) = Exp(b11 / bm * (Z - 1) - Log(Z - b) - a / Sqr(8) / b * (2 * (y1 * a11 + y2 * a12) / am - b11 / bm) * Log((V + (1 + Sqr(2)) * bm) / (V + (1 - Sqr(2)) * bm)))
YI2(4) = Exp(b22 / bm * (Z - 1) - Log(Z - b) - a / Sqr(8) / b * (2 * (y1 * a12 + y2 * a22) / am - b22 / bm) * Log((V + (1 + Sqr(2)) * bm) / (V + (1 - Sqr(2)) * bm)))
YI(4) = Exp(y1 * Log(YI1(4)) + y2 * Log(YI2(4)))
'以下是维里方程的计算
Tc12 = (Tc1 * Tc2) ^ 0.5 * (1 - k)
Vc12 = (0.5 * ((Vc1 / 1000000) ^ (1 / 3) + (Vc2 / 1000000) ^ (1 / 3))) ^ 3
Zc12 = (Zc1 + Zc2) / 2
Pc12 = Zc12 * R * Tc12 / Vc12
w12 = (w1 + w2) / 2
If Form5.Option1 = True Then
b12 = R * Tc12 / Pc12 * (0.083 - 0.422 * Tc12 ^ 1.6 / t ^ 1.6 + w12 * (0.139 - 0.172 * Tc12 ^ 4.2 / t ^ 4.2))
b11 = R * Tc1 / (1000000 * Pc1) * (0.083 - 0.422 * Tc1 ^ 1.6 / t ^ 1.6 + w1 * (0.139 - 0.172 * Tc1 ^ 4.2 / t ^ 4.2))
b22 = R * Tc2 / (1000000 * Pc2) * (0.083 - 0.422 * Tc2 ^ 1.6 / t ^ 1.6 + w2 * (0.139 - 0.172 * Tc2 ^ 4.2 / t ^ 4.2))
b = y1 ^ 2 * b11 + 2 * y1 * y2 * b12 + y2 ^ 2 * b22
Z = 1 + b * P / R / t
HH(5) = Z * R * t / V
ElseIf Form5.Option2 = True Then
T0 = P * V / R
Do While 1
Z0 = P * V / R / T0
b12 = R * Tc12 / Pc12 * (0.083 - 0.422 * Tc12 ^ 1.6 / T0 ^ 1.6 + w12 * (0.139 - 0.172 * Tc12 ^ 4.2 / T0 ^ 4.2))
b11 = R * Tc1 / (1000000 * Pc1) * (0.083 - 0.422 * Tc1 ^ 1.6 / T0 ^ 1.6 + w1 * (0.139 - 0.172 * Tc1 ^ 4.2 / T0 ^ 4.2))
b22 = R * Tc2 / (1000000 * Pc2) * (0.083 - 0.422 * Tc2 ^ 1.6 / T0 ^ 1.6 + w2 * (0.139 - 0.172 * Tc2 ^ 4.2 / T0 ^ 4.2))
b = y1 ^ 2 * b11 + 2 * y1 * y2 * b12 + y2 ^ 2 * b22
Z1 = 1 + b * P / R / T0
If Abs(Z0 - Z1) < 0.00001 Then Exit Do
T0 = P * V / R / Z1
Loop
Z = Z1
HH(5) = P * V / R / Z
ElseIf Form5.Option3 = True Then
b12 = R * Tc12 / Pc12 * (0.083 - 0.422 * Tc12 ^ 1.6 / t ^ 1.6 + w12 * (0.139 - 0.172 * Tc12 ^ 4.2 / t ^ 4.2))
b11 = R * Tc1 / (1000000 * Pc1) * (0.083 - 0.422 * Tc1 ^ 1.6 / t ^ 1.6 + w1 * (0.139 - 0.172 * Tc1 ^ 4.2 / t ^ 4.2))
b22 = R * Tc2 / (1000000 * Pc2) * (0.083 - 0.422 * Tc2 ^ 1.6 / t ^ 1.6 + w2 * (0.139 - 0.172 * Tc2 ^ 4.2 / t ^ 4.2))
b = y1 ^ 2 * b11 + 2 * y1 * y2 * b12 + y2 ^ 2 * b22
Z = 1 + b * P / R / t
HH(5) = Z * R * t / P
End If '以上是用维里方程计算
YI1(5) = Exp(P / R / t * (b11 + y2 ^ 2 * (2 * b12 - b11 - b22)))
YI2(5) = Exp(P / R / t * (b22 + y1 ^ 2 * (2 * b12 - b11 - b22)))
YI(5) = Exp(y1 * Log(YI1(5)) + y2 * Log(YI2(5)))
Dim i%, ss(5) As String
Dim n%, tt!, fuzhi!(10), j%
ss(1) = Form6.Option1.Caption
ss(2) = Form6.Option2.Caption
ss(3) = Form6.Option3.Caption
ss(4) = Form6.Option4.Caption
ss(5) = Form6.Option5.Caption
For i = 1 To 5
If Form5.Option1 = True Then
cha(i) = (Abs(HH(i) - P00)) / P00
ElseIf Form5.Option2 = True Then
cha(i) = (Abs(HH(i) - T00)) / T00
ElseIf Form5.Option3 = True Then
cha(i) = (Abs(HH(i) - V00)) / V00
End If
Next i
For n = 1 To 5
fuzhi(n) = cha(n)
Next n
For n = 2 To 5
If cha(n - 1) < cha(n) Then
tt = cha(n - 1): cha(n - 1) = cha(n): cha(n) = tt
End If
Next n
If cha(4) < cha(5) Then tt = cha(4): cha(4) = cha(5): cha(5) = tt
For n = 1 To 5
If fuzhi(n) = cha(5) Then j = n
Next n
Form10.Label7.Caption = "由于利用" + ss(j) + "计算的误差最小,因此此方程" + Chr(13) + Chr(10) + "最适用于计算此物质的热力学性质,其结果如下:"
'以下是结果输出的打印
For i = 1 To 5
Form10.Text1(i - 1).Text = Format(fuzhi(i), "###.#####%")
Next i
'以下是结果输出的打印
If Form5.Option1 = True Then
Form9.Hide
Form10.Show
Form10.Picture1.Print STR1
Form10.Picture1.Print STR2
Form10.Picture1.Print STR3
Form10.Picture1.Print STR4
Form10.Picture1.Print Form5.Combo1.Text + "组分逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print Form5.Combo2.Text + "组分逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print "混合物物逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print "压强等于" + Format(HH(j) / 1000000, "###.####") + "MPa"
ElseIf Form5.Option2 = True Then
Form9.Hide
Form10.Show
Form10.Picture1.Print STR1
Form10.Picture1.Print STR2
Form10.Picture1.Print STR3
Form10.Picture1.Print STR4
Form10.Picture1.Print Form5.Combo1.Text + "组分逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print Form5.Combo2.Text + "组分逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print "混合物物逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print "温度等于" + Format(HH(j), "###.####") + "K"
ElseIf Form5.Option3 = True Then
Form9.Hide
Form10.Show
Form10.Picture1.Print STR1
Form10.Picture1.Print STR2
Form10.Picture1.Print STR3
Form10.Picture1.Print STR4
Form10.Picture1.Print Form5.Combo1.Text + "组分逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print Form5.Combo2.Text + "组分逸度系数等于:" + Format(YI(j), "###.####")
Form10.Picture1.Print "混合物物逸度系数等于:" + Format(YI(j), "###.####")
Form10.Print "体积等于" + Format(HH(j), "###.########") + "m3/mol"
End If '以上是结果输出
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -