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

📄 form6.frm

📁 基于VB语言编写的热力学性质计算的应用软件(数据库操作)
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    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 + -