⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form4.frm

📁 基于VB语言编写的热力学性质计算的应用软件(数据库操作)
💻 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 + -