📄 form4.frm
字号:
VERSION 5.00
Begin VB.Form Form4
AutoRedraw = -1 'True
BackColor = &H00C0C0C0&
Caption = "计算结果输出"
ClientHeight = 3285
ClientLeft = 165
ClientTop = 450
ClientWidth = 3780
LinkTopic = "Form4"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3285
ScaleWidth = 3780
StartUpPosition = 2 '屏幕中心
Begin VB.CommandButton Command4
BackColor = &H00FFC0C0&
Caption = "优化设计"
Height = 375
Left = 360
Style = 1 'Graphical
TabIndex = 3
Top = 2880
Width = 1100
End
Begin VB.CommandButton Command3
BackColor = &H00FFC0C0&
Caption = "返回首页"
Height = 375
Left = 2400
Style = 1 'Graphical
TabIndex = 2
Top = 2400
Width = 1100
End
Begin VB.CommandButton Command2
BackColor = &H00FFC0C0&
Caption = "退出"
Height = 375
Left = 2400
Style = 1 'Graphical
TabIndex = 1
Top = 2880
Width = 1100
End
Begin VB.CommandButton Command1
BackColor = &H00FFC0C0&
Caption = "返回上一级"
Default = -1 'True
Height = 375
Left = 360
Style = 1 'Graphical
TabIndex = 0
Top = 2400
Width = 1100
End
End
Attribute VB_Name = "Form4"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Form4.Cls
Unload Me
If oo = 0 Then
Form3.Show
ElseIf oo = 1 Then
Form6.Show
End If
End Sub
Private Sub Command2_Click()
Dim s%
s = MsgBox("您真的要退出吗?", vbOKCancel + vbQuestion, "程序")
If s = 1 Then
Unload Form1
Unload Form2
Unload Form4
Unload Form3
Unload Form5
Unload Form6
Unload FORM7
Unload Form8
Unload Form9
End
End If
End Sub
Private Sub Command3_Click()
Form4.Cls
Unload Form2
Unload Form4
Unload Form3
Unload Form5
Unload Form6
Unload FORM7
Unload Form8
Unload Form9
Form1.Show
End Sub
Private Sub Command4_Click()
Dim STR1, STR2, STR5 As String
Dim a, b As Double '常数
Dim intt As Integer, V0, V1 As Double, st(5) As String
Dim T0, T1 As Double, P1, P0 As Double, a1, a2 As Double
Dim B0, m, B1, B2 As Double
Dim Ha(5), Yid(5), Yid1(5), Yid2(5), Sa(5) As Double '焓\熵\逸度系数
If Form2.Option1 = True Then
P00 = Val(InputBox("请输入实验压强初值" + Chr(13) + Chr(10) + "单位(Pa)", "数据输入"))
sss = "实验压力值为" + Str(P00 / 1000000) + "MPa"
ElseIf Form2.Option2 = True Then
T00 = Val(InputBox("请输入实验温度初值" + Chr(13) + Chr(10) + "单位(K)", "数据输入"))
sss = "实验温度值为" + Str(T00) + "K"
ElseIf Form2.Option3 = True Then
V00 = Val(InputBox("请输入实验体积初值" + Chr(13) + Chr(10) + "单位(m3/mol)", "数据输入"))
sss = "实验体积值为" + Str(V00) + "m3/mol"
End If
Form8.Label2.Caption = sss
Const R = 8.314
'以下是判断计算的类型(纯的还是混合流体)
If Form1.Option1 = True Then
STR1 = Chr(13) + Chr(10) + "这是" + Form1.Option1.Caption
Else
STR1 = Chr(13) + Chr(10) + "这是" + Form1.Option2.Caption
End If
STR2 = "你选择的物质是" + Form2.Combo1.Text '输出所计算的物质
intt = Form2.Combo1.ListIndex '判断所选的物质的索引号的返回值
'以下是输出流体的临界常数
STR5 = "流体常数:" + Chr(13) + Chr(10) + "Tc=" + Str(Tc1) + "K " + "Pc=" + Str(Pc1) + "MPa " + "Vc=" + Str(Vc1) + "cm3/mol " + Chr(13) + Chr(10) + "Zc=" + Str(Zc1) + " " + "偏心因子w=" + Str(w1) + Chr(13) + Chr(10)
If 1 Then '以下是范德乏方程的计算
a = 27 * R ^ 2 * Tc1 ^ 2 / (64 * Pc1 * 1000000)
b = R * Tc1 / (8 * (Pc1 * 1000000)) '常数
st(1) = "用" + Form3.Option1.Caption + "计算的结果:"
If Form2.Option1 = True Then
P = R * t / (V - b) - a / V ^ 2 'vdW方程
HH(1) = P
ElseIf Form2.Option2 = True Then
t = (P + a / V ^ 2) * (V - b) / R
HH(1) = t
ElseIf Form2.Option3 = True Then
V0 = R * t / P
Do While 1
V1 = b + R * t / P - a * (V0 - b) / (P * V0 ^ 2)
If Abs(V1 - V0) < 0.0000000001 Then Exit Do
V0 = V1
If V0 < 0 Then Exit Do
Loop
V = V1
HH(1) = V
End If '以上是范德乏方程的计算到此结束
Z = P * V / R / t
Yid(1) = Exp(Z - Log(Z - b / R / t) - a / t / R / V)
Ha(1) = (Z - 1) * R * t - a / V
Sa(1) = R * Log(P) + R * Log(V - b)
Yid(1) = -R * P / (1000000 * Pc1) * (0.675 * Tc1 ^ 2.6 / t ^ 2.6 + w1 * 0.722 * Tc1 ^ 5.2 / t ^ 5.2) '利用维里方程的暂做计算
End If
If 1 Then '以下是R-K方程的计算
a = 0.42748 * R ^ 2 * Tc1 ^ 2.5 / (Pc1 * 1000000)
b = 0.08664 * R * Tc1 / (Pc1 * 1000000)
st(2) = "这是用" + Form3.Option2.Caption + "计算的结果"
If Form2.Option1 = True Then
P = R * t / (V - b) - a / (Sqr(t) * V * (V + b)) 'R-K方程
HH(2) = P
ElseIf Form2.Option2 = True Then
T0 = P * V / R
Do While 1
T1 = P * (V - b) / R + a * (V - b) / (Sqr(T0) * V * (V + b) * R) '迭代方程式
If Abs(T0 - T1) < 0.00001 Then Exit Do
T0 = T1
If T0 < 0 Then Exit Do
Loop
t = T1
HH(2) = t
ElseIf Form2.Option3 = True Then
V0 = R * t / P
Do While 1
V1 = (b + R * t / P) - a * (V0 - b) / (Sqr(t) * V0 * (V0 + b) * P) '迭代方程式
If Abs(V0 - V1) < 0.0000000001 Then Exit Do
V0 = V1
If V0 < 0 Then Exit Do
Loop
V = V1
HH(2) = V
End If '以上是用R-K方程计算
Z = P * V / R / t
Ha(2) = (Z - 1) * R * t - 1.5 * a / b / t ^ 0.5 * Log(1 + b / V)
Sa(2) = R * Log(P * (V - b) / R / t) - 0.5 * a / b / t ^ 1.5 * Log(1 + b / V)
Yid(2) = Exp(Z - 1 - Log(Z - b * P / R / t) - a / R / t ^ 1.5 / b * Log(1 + b / V))
End If
If 1 Then '以下是S-R-K方程的计算
a1 = 0.42748 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000)
b = 0.08664 * R * Tc1 / (Pc1 * 1000000)
st(3) = "这是用" + Form3.Option3.Caption + "计算的结果"
If Form2.Option1 = True Then
a2 = (1 + (0.48 + 1.574 * w1 - 0.176 * w1 ^ 2) * (1 - (t / Tc1) ^ 0.5)) ^ 2
a = a1 * a2
P = R * t / (V - b) - a / (V * (V + b)) 'S-R-K方程
HH(3) = P
ElseIf Form2.Option2 = True Then
T0 = P * V / R
Do While 1
a2 = (1 + (0.48 + 1.574 * w1 - 0.176 * w1 ^ 2) * (1 - (T0 / Tc1) ^ 0.5)) ^ 2
a = a1 * a2
T1 = ((V - b) / R) * (P + a / (V * (V + b))) '迭代方程式
If Abs(T0 - T1) < 0.0000000001 Then Exit Do
T0 = T1
If T0 < 0 Then Exit Do
Loop
t = T1
HH(3) = t
ElseIf Form2.Option3 = True Then
a2 = (1 + (0.48 + 1.574 * w1 - 0.176 * w1 ^ 2) * (1 - (t / Tc1) ^ 0.5)) ^ 2
a = a1 * a2
V0 = R * t / P
Do While 1
V1 = (b + R * t / P) - a * (V0 - b) / (V0 * (V0 + b) * P) '迭代方程式
If Abs(V0 - V1) < 0.0000000001 Then Exit Do
V0 = V1
If V0 < 0 Then Exit Do
Loop
V = V1
HH(3) = V
End If '以上是用S-R-K方程计算
Z = P * V / R / t '压缩因子
m = 0.5 * Tc1 ^ 0.75 / t ^ 0.75
Ha(3) = (Z - 1) * R * t - (a + t * m * a1 / (t * Tc1) ^ 0.5 / b * (1 + m * (1 - t ^ 0.5 / Tc1 ^ 0.5)) * Log(1 + b / V))
Sa(3) = R * Log(Z - b * P / R / t) + m * a1 / b / (t * Tc1) ^ 0.5 * (1 + m * (1 - t ^ 0.5 / Tc1 ^ 0.5) * Log(1 + b / V))
Yid(3) = Exp(Z - 1 - Log(Z - b * P / R / t) - a / b / R / t * Log(1 + b / V))
End If
If 1 Then '以下是P-R方程的计算
a1 = 0.457235 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000)
b = 0.077796 * R * Tc1 / (Pc1 * 1000000)
m = 0.37646 + 1.54226 * w1 - 0.26992 * w1 ^ 2
st(4) = "这是用" + Form3.Option4.Caption + "计算的结果"
If Form2.Option1 = True Then
a2 = (1 + m * (1 - (t / Tc1) ^ 0.5)) ^ 2
a = a1 * a2
P = R * t / (V - b) - a / (V * (V + b) + b * (V - b)) 'P-R方程
HH(4) = P
ElseIf Form2.Option2 = True Then
T0 = P * V / R
Do While 1
a2 = (1 + m * (1 - (T0 / Tc1) ^ 0.5)) ^ 2
a = a1 * a2
T1 = ((V - b) / R) * (P + a / (V * (V + b) + b * (V - b))) '迭代方程式
If Abs(T0 - T1) < 0.0000000001 Then Exit Do
T0 = T1
If T0 < 0 Then Exit Do
Loop
t = T1
HH(4) = t
ElseIf Form2.Option3 = True Then
a2 = (1 + m * (1 - (t / Tc1) ^ 0.5)) ^ 2
a = a1 * a2
V0 = R * t / P
Do While 1
V1 = (b + R * t / P) - a * (V0 - b) / P / (V0 * (V0 + b) + b * (V0 - b)) '迭代方程式
If Abs(V0 - V1) < 0.0000000001 Then Exit Do
V0 = V1
If V0 < 0 Then Exit Do
Loop
V = V1
HH(4) = V
End If '以上是用P-R方程计算
Z = P * V / R / t
Yid(4) = Exp(Z - 1 - Log(Z - b * P / R / t) - a / Sqr(8) / R / t / b * Log((V + (1 + Sqr(2)) * b) / (V + (1 - Sqr(2)) * b)))
Ha(4) = (Z - 1) * R * t - R * t / b / Sqr(8) / P * (m * a1 * t ^ 0.5 / Tc1 ^ 0.5 * (1 + m * (1 - t ^ 0.5 / Tc1 ^ 0.5)) + a) * Log((V + (1 + Sqr(2)) * b) / (V + (1 - Sqr(2)) * b))
Sa(4) = R * Log(Z - b * P / R / t) + R * t ^ 0.5 / Sqr(8) / b / P * m * a1 / Tc1 ^ 0.5 * (1 + m * (1 - t ^ 0.5 / Tc1 ^ 0.5)) * Log((V + (1 + Sqr(2)) * b) / (V + (1 - Sqr(2)) * b))
End If
If 1 Then '以下是维里方程的计算
st(5) = "这是用" + Form3.Option5.Caption + "计算的结果"
If Form2.Option1 = True Then
B1 = 0.083 - 0.422 * Tc1 ^ 1.6 / t ^ 1.6
B2 = 0.139 - 0.172 * Tc1 ^ 4.2 / t ^ 4.2
B0 = R * Tc1 / (1000000 * Pc1) * (B1 + w1 * B2)
P = R * t / V * (1 + B0 / V)
HH(5) = P
ElseIf Form2.Option2 = True Then
Z0 = 1
Do While 1
T0 = P * V / (R * Z0)
B1 = 0.083 - 0.422 * Tc1 ^ 1.6 / (Abs(T0)) ^ 1.6
B2 = 0.139 - 0.172 * Tc1 ^ 4.2 / (Abs(T0)) ^ 4.2
B0 = R * Tc1 * (B1 + w1 * B2) / (1000000 * Pc1)
Z1 = 1 + B0 * P / (R * T0)
If Abs(Z0 - Z1) < 0.00001 Then Exit Do
Z0 = Z1
If T0 < 0 Then Exit Do
Loop
Z = Z1
t = P * V / R / Z
HH(5) = t
ElseIf Form2.Option3 = True Then
B1 = 0.083 - 0.422 * Tc1 ^ 1.6 / t ^ 1.6
B2 = 0.139 - 0.172 * Tc1 ^ 4.2 / t ^ 4.2
B0 = R * Tc1 / (1000000 * Pc1) * (B1 + w1 * B2)
V = (R * t / P) * (1 + B0 * P / (R * t))
HH(5) = V
End If '以上是用维里方程计算
Z = P * V / R / t
Yid(5) = Exp(Z - 1)
Ha(5) = R * Tc1 * P / (1000000 * Pc1) * (0.083 - 1.097 * Tc1 ^ 1.6 / t ^ 1.6 + w1 * (0.139 - 0.894 * Tc1 ^ 4.2 / t ^ 4.2))
Sa(5) = -R * P / (1000000 * Pc1) * (0.675 * Tc1 ^ 2.6 / t ^ 2.6 + w1 * 0.722 * Tc1 ^ 5.2 / t ^ 5.2)
End If
Dim i%, ss(5) As String
Dim n%, tt!, fuzhi!(10), j%
ss(1) = Form3.Option1.Caption
ss(2) = Form3.Option2.Caption
ss(3) = Form3.Option3.Caption
ss(4) = Form3.Option4.Caption
ss(5) = Form3.Option5.Caption
For i = 1 To 5
If Form2.Option1 = True Then
cha(i) = (Abs(HH(i) - P00)) / P00
ElseIf Form2.Option2 = True Then
cha(i) = (Abs(HH(i) - T00)) / T00
ElseIf Form2.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
Form8.Label7.Caption = "由于利用" + ss(j) + "计算的误差最小,因此此方程" + Chr(13) + Chr(10) + "最适用于计算此物质的热力学性质,其结果如下:"
'以下是结果输出的打印
For i = 1 To 5
Form8.Text1(i - 1).Text = Format(fuzhi(i), "###.#####%")
Next i
If Form2.Option1 = True Then
Form4.Hide
Form8.Show
Form8.Picture1.Print STR2
Form8.Picture1.Print STR3
Form8.Picture1.Print STR6
Form8.Picture1.Print " 压强等于:" + Format(HH(j), "###.########") + "Pa"
Form8.Picture1.Print " 剩余熵等于:" + Format(Sa(j), "###.####") + "J/mol "
Form8.Picture1.Print " 剩余焓等于:" + Format(Ha(j), "###.####") + "J/mol"
Form8.Picture1.Print " 逸度系数等于:" + Format(Yid(j), "###.####")
ElseIf Form2.Option2 = True Then
Form4.Hide
Form8.Show
Form8.Picture1.Print STR2
Form8.Picture1.Print STR3
Form8.Picture1.Print STR6
Form8.Picture1.Print " 温度等于:" + Format(HH(j), "###.########") + "K"
Form8.Picture1.Print " 剩余熵等于:" + Format(Sa(j), "###.####") + "J/mol "
Form8.Picture1.Print " 剩余焓等于:" + Format(Ha(j), "###.####") + "J/mol"
Form8.Picture1.Print " 逸度系数等于:" + Format(Yid(j), "###.####")
ElseIf Form2.Option3 = True Then
Form4.Hide
Form8.Show
Form8.Picture1.Print STR2
Form8.Picture1.Print STR3
Form8.Picture1.Print STR6
Form8.Picture1.Print " 体积等于:" + Format(HH(j), "###.########") + "m3/mol"
Form8.Picture1.Print " 剩余熵等于:" + Format(Sa(j), "###.####") + "J/mol "
Form8.Picture1.Print " 剩余焓等于:" + Format(Ha(j), "###.####") + "J/mol"
Form8.Picture1.Print " 逸度系数等于:" + Format(Yid(j), "###.####")
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -