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

📄 form3.frm

📁 基于VB语言编写的热力学性质计算的应用软件(数据库操作)
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form3 
   AutoRedraw      =   -1  'True
   BackColor       =   &H00C0C0C0&
   Caption         =   "程序计算"
   ClientHeight    =   2835
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4380
   LinkTopic       =   "Form3"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   2835
   ScaleWidth      =   4380
   StartUpPosition =   2  '屏幕中心
   Begin VB.CommandButton Command2 
      BackColor       =   &H00FFC0C0&
      Caption         =   "返回上一级"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   400
      Left            =   2400
      Style           =   1  'Graphical
      TabIndex        =   8
      Top             =   2280
      Width           =   1815
   End
   Begin VB.CommandButton Command1 
      BackColor       =   &H00FFC0C0&
      Caption         =   "确定并显示结果"
      Default         =   -1  'True
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   400
      Left            =   120
      Style           =   1  'Graphical
      TabIndex        =   6
      Top             =   2280
      Width           =   1935
   End
   Begin VB.Frame Frame1 
      BackColor       =   &H00C0C0C0&
      Caption         =   "请选择计算方程"
      BeginProperty Font 
         Name            =   "楷体_GB2312"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   1815
      Left            =   240
      TabIndex        =   0
      Top             =   240
      Width           =   3855
      Begin VB.OptionButton Option6 
         BackColor       =   &H00C0C0C0&
         Caption         =   "普遍化压缩因子"
         Height          =   375
         Left            =   1920
         TabIndex        =   7
         Top             =   1320
         Width           =   1575
      End
      Begin VB.OptionButton Option5 
         BackColor       =   &H00C0C0C0&
         Caption         =   "维里方程"
         Height          =   375
         Left            =   360
         TabIndex        =   5
         Top             =   1320
         Width           =   1575
      End
      Begin VB.OptionButton Option4 
         BackColor       =   &H00C0C0C0&
         Caption         =   "P-R方程"
         Height          =   375
         Left            =   1920
         TabIndex        =   4
         Top             =   840
         Width           =   1215
      End
      Begin VB.OptionButton Option3 
         BackColor       =   &H00C0C0C0&
         Caption         =   "S-R-K方程"
         Height          =   375
         Left            =   360
         TabIndex        =   3
         Top             =   840
         Width           =   1335
      End
      Begin VB.OptionButton Option2 
         BackColor       =   &H00C0C0C0&
         Caption         =   "R-K方程"
         Height          =   375
         Left            =   1920
         TabIndex        =   2
         Top             =   360
         Width           =   1215
      End
      Begin VB.OptionButton Option1 
         BackColor       =   &H00C0C0C0&
         Caption         =   "范德法方程"
         Height          =   375
         Left            =   360
         TabIndex        =   1
         Top             =   360
         Width           =   1335
      End
   End
End
Attribute VB_Name = "Form3"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Private Sub Command1_Click()
  Dim STR1, STR2, STR5 As String
  Dim a, b  As Double '常数
  Dim V0, V1 As Double, strs As String
  Dim T0, T1 As Double, P1, P0  As Double, a1, a2  As Double
  Dim B0, m, B1, B2  As Double
  Const R = 8.314
 '以下是判断计算的类型(纯的还是混合流体)
  If Form1.Option1 = True Then
     STR1 = "这是" + Form1.Option1.Caption
  Else
     STR1 = "这是" + 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)
STR6 = "流体常数:" + 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)

On Error GoTo a0

If Form3.Option1 = True Then       '以下是范德乏方程的计算
  a = 27 * R ^ 2 * Tc1 ^ 2 / (64 * Pc1 * 1000000)
  b = R * Tc1 / (8 * (Pc1 * 1000000))  '常数
  strs = "用" + 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
       Loop
      V = V1
      HH(1) = V
    End If                           '以上是范德乏方程的计算到此结束
Z = P * V / R / T
Yidu = Exp(Z - Log(Z - b / R / T) - a / T / R / V)
Han = (Z - 1) * R * T - a / V
San = R * Log(P) + R * Log(V - b)
ElseIf Form3.Option2 = True Then     '以下是R-K方程的计算
    a = 0.42748 * R ^ 2 * Tc1 ^ 2.5 / (Pc1 * 1000000)
    b = 0.08664 * R * Tc1 / (Pc1 * 1000000)
    strs = "这是用" + 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
       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
       Loop
      V = V1
      HH(2) = V
    End If       '以上是用R-K方程计算
    Z = P * V / R / T
    Han = (Z - 1) * R * T - 1.5 * a / b / T ^ 0.5 * Log(1 + b / V)
    San = R * Log(P * (V - b) / R / T) - 0.5 * a / b / T ^ 1.5 * Log(1 + b / V)
    Yidu = Exp(Z - 1 - Log(Z - b * P / R / T) - a / R / T ^ 1.5 / b * Log(1 + b / V))

ElseIf Form3.Option3 = True Then     '以下是S-R-K方程的计算
    a1 = 0.42748 * R ^ 2 * Tc1 ^ 2 / (Pc1 * 1000000)
    b = 0.08664 * R * Tc1 / (Pc1 * 1000000)
    strs = "这是用" + 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
       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
       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
 Han = (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))
 San = 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))
 Yidu = Exp(Z - 1 - Log(Z - b * P / R / T) - a / b / R / T * Log(1 + b / V))

ElseIf Form3.Option4 = True 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
    strs = "这是用" + 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
       Loop
       T = T1
       HH(4) = T
    ElseIf Form2.Option3 = True Then
       a2 = (1 + m * (1 - (T / Tc1) ^ 0.5)) ^ 2
       a = a1 * a2
   '##################add 06-11-12
       am = a: bm = b
       
       k = bm - R * T / P
m = am / P - 2 * bm * R * T / P - 3 * bm ^ 2
n = bm * (bm * R * T / P + bm ^ 2 - am / P)
L1 = m / 3 - (k / 3) ^ 3
L2 = (k / 3) * (L1 + m / 6) - n / 2
h = (L1) ^ 3 + (L2) ^ 2
V0 = 1 'R * T / P
Do While 1
f = V0 ^ 3 + k * V0 ^ 2 + m * V0 + n
ff = 2 * V0 ^ 2 + 2 * k * V0 + m
V = V0 - f / ff
If Abs(V0 - V) < 0.0000001 Then Exit Do
V0 = V
Loop
  Form4.Print "V="; V
f1 = V ^ 3 + k * V ^ 2 + m * V + n
  Form4.Print "f1="; f1
'#############################################
       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
       Loop
       V = V1
       HH(4) = V
    End If                       '以上是用P-R方程计算
 Z = P * V / R / T
 Yidu = 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)))
 Han = (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))
 San = 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))
 
ElseIf Form3.Option5 = True Then     '以下是维里方程的计算
    strs = "这是用" + 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
       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
Yidu = Exp(Z - 1)
Han = 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))
San = -R * P / (1000000 * Pc1) * (0.675 * Tc1 ^ 2.6 / T ^ 2.6 + w1 * 0.722 * Tc1 ^ 5.2 / T ^ 5.2)
End If


   '以下是结果输出的打印
If Form3.Option6 = True Then
   MsgBox "对不起!普遍化压缩因子方法还未能使用!", vbOKOnly + vbQuestion, "程序"
Else
  If Form2.Option1 = True Then
       Form3.Hide
       Form4.Show
       Form4.Print STR1
       Form4.Print STR2
       Form4.Print STR3
       Form4.Print STR5
       Form4.Print strs
       Form4.Print "  压强等于:" + Format(P / 1000000, "###.##########") + "MPa"
       Form4.Print "  剩余熵等于:" + Format(San, "###.####") + "J/mol  "
       Form4.Print "  剩余焓等于:" + Format(Han, "###.####") + "J/mol"
       Form4.Print "  逸度系数等于:" + Format(Yidu, "###.####")
  ElseIf Form2.Option2 = True Then
       Form3.Hide
       Form4.Show
       Form4.Print STR1
       Form4.Print STR2
       Form4.Print STR3
       Form4.Print STR5
       Form4.Print strs
       Form4.Print "  温度等于:" + Format(T, "###.####") + "K"
       Form4.Print "  剩余熵等于:" + Format(San, "###.####") + "J/mol  "
       Form4.Print "  剩余焓等于:" + Format(Han, "###.####") + "J/mol"
       Form4.Print "  逸度系数等于:" + Format(Yidu, "###.####")
 ElseIf Form2.Option3 = True Then
       Form3.Hide
       Form4.Show
       Form4.Print STR1
       Form4.Print STR2
       Form4.Print STR3
       Form4.Print STR5
       Form4.Print strs
       Form4.Print "  体积等于:" + Format(V, "###.########") + "m3/mol"
       Form4.Print "  剩余熵等于:" + Format(San, "###.####") + "J/mol  "
       Form4.Print "  剩余焓等于:" + Format(Han, "###.####") + "J/mol"
       Form4.Print "  逸度系数等于:" + Format(Yidu, "###.####")
End If                           '以上是结果输出
End If
Exit Sub

a0:
 MsgBox "对不起,你的初始数据用此方法计算不符合!" & Chr(13) + Chr(10) & "它将产生错误的结果!" & Chr(13) + Chr(10) & "请选择其他方法计算!谢谢", vbYes + vbQuestion, "程序"
Form4.Command4.Enabled = False
End Sub

Private Sub Command2_Click()
Unload Me
Form2.Show
End Sub

Private Sub Form_Load()
Form4.Command4.Enabled = True
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -