📄 form6.frm
字号:
If Form5.Option1 = 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
P = R * t / (V - bm) - am / (V * (V + bm)) 'S-R-K方程
a = am * P / R ^ 2 / t ^ 2 '为下面求逸度系数服务
b = bm * P / R / t '为下面求逸度系数服务
ElseIf Form5.Option2 = True Then
m1 = 0.48 + 1.574 * w1 - 0.176 * w1 ^ 2
m2 = 0.48 + 1.574 * w2 - 0.176 * w2 ^ 2
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
t = 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
V = Z * R * t / P
End If '以上是用S-R-K方程计算
Yidu1 = Exp(b11 / bm * (Z - 1) - Log(Z - b) - a / b * (2 * (y1 * a11 + y2 * a12) / am - b11 / bm) * Log(1 + bm / V))
Yidu2 = Exp(b22 / bm * (Z - 1) - Log(Z - b) - a / b * (2 * (y1 * a12 + y2 * a22) / am - b22 / bm) * Log(1 + bm / V))
Yidu = Exp(y1 * Log(Yidu1) + y2 * Log(Yidu2))
ElseIf Form6.Option4 = True Then '以下是P-R方程的计算
strs = "这是用" + Form6.Option4.Caption + "计算的结果" + Chr(13) + Chr(10)
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
P = 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
t = 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
V = Z * R * t / P
End If '以上是用P-R方程计算
Yidu1 = 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)))
Yidu2 = 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)))
Yidu = Exp(y1 * Log(Yidu1) + y2 * Log(Yidu2))
ElseIf Form6.Option5 = True Then '以下是维里方程的计算
strs = "这是用" + Form6.Option5.Caption + "计算的结果" + Chr(13) + Chr(10)
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
P = 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
t = 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
V = Z * R * t / P
End If '以上是用维里方程计算
Yidu1 = Exp(P / R / t * (b11 + y2 ^ 2 * (2 * b12 - b11 - b22)))
Yidu2 = Exp(P / R / t * (b22 + y1 ^ 2 * (2 * b12 - b11 - b22)))
Yidu = Exp(y1 * Log(Yidu1) + y2 * Log(Yidu2))
End If
'以下是结果输出的打印
If Form6.Option6 = True Then
MsgBox "对不起!普遍化压缩因子方法还未能使用!", vbOKOnly + vbQuestion, "程序"
Else
If Form5.Option1 = True Then
Form6.Hide
Form9.Show
Form9.Print STR1
Form9.Print STR2
Form9.Print STR3
Form9.Print STR4
Form9.Print strs
Form9.Print Form5.Combo1.Text + "组分逸度系数等于:" + Format(Yidu1, "###.####")
Form9.Print Form5.Combo2.Text + "组分逸度系数等于:" + Format(Yidu2, "###.####")
Form9.Print "混合物物逸度系数等于:" + Format(Yidu, "###.####")
Form9.Print "压强等于" + Format(P / 1000000, "###.####") + "MPa"
ElseIf Form5.Option2 = True Then
Form6.Hide
Form9.Show
Form9.Print STR1
Form9.Print STR2
Form9.Print STR3
Form9.Print STR4
Form9.Print strs
Form9.Print Form5.Combo1.Text + "组分逸度系数等于:" + Format(Yidu1, "###.####")
Form9.Print Form5.Combo2.Text + "组分逸度系数等于:" + Format(Yidu2, "###.####")
Form9.Print "混合物物逸度系数等于:" + Format(Yidu, "###.####")
Form9.Print "温度等于" + Format(t, "###.####") + "K"
ElseIf Form5.Option3 = True Then
Form6.Hide
Form9.Show
Form9.Print STR1
Form9.Print STR2
Form9.Print STR3
Form9.Print STR4
Form9.Print strs
Form9.Print Form5.Combo1.Text + "组分逸度系数等于:" + Format(Yidu1, "###.####")
Form9.Print Form5.Combo2.Text + "组分逸度系数等于:" + Format(Yidu2, "###.####")
Form9.Print "混合物物逸度系数等于:" + Format(Yidu, "###.####")
Form9.Print "体积等于" + Format(V, "###.########") + "m3/mol"
End If '以上是结果输出
End If
Exit Sub
a0:
MsgBox "对不起,你的初始数据用此方法计算不符合!" & Chr(13) + Chr(10) & "它将产生错误的结果!" & Chr(13) + Chr(10) & "请选择其他方法计算!谢谢", vbYes + vbQuestion, "程序"
Form9.Command4.Enabled = False
End Sub
Private Sub Command2_Click()
Unload Me
Form5.Show
End Sub
Private Sub Form_Load()
Form9.Command4.Enabled = True
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -