module1.bas

来自「VB版本_SIMPLE算法和11各个算例」· BAS 代码 · 共 118 行

BAS
118
字号
Attribute VB_Name = "Exm_4"

'*****************************************************************
'*
'*----------------- EXAMPLE FOUR  ----------------------------
'*
'*                 -=中国石油大学=-
'******************************************************************
Option Explicit
Public AMU As Double
Public DEN As Double, WBAR As Double, COND As Double, CP As Double, RHOCP As Double
Public DPDZ As Double, DTBDZ As Double
Public ASUM#, TSUM#, WSUM#, TW#, AR#, WR#, TB#, DH#, RE#, FRE#, QW#, ANU#
Dim j As Long, i As Long
Dim THEAT#, DTDZ#, PI#, WP#, TBULK#, HTP#, HTC#
 Sub GRID()
      LSolve(4) = True
      LPrint(4) = True
      LPrint(5) = True
      Title(4) = ".W/WBAR."
      Title(5) = ".THETA."
      NTIMES(4) = 4
      NTIMES(5) = 4
      LAST = 6
      MODE = 3
      PI = 3.14159
      XL = 15# * PI / 180#
      YL = 1#
      R(1) = 1#
      L1 = 7
      M1 = 7
      Call UGRID
End Sub

Sub START()
      TW = 1#
      For j = 1 To M1
          For i = 1 To L1
               F(i, j, 4) = 0#
               F(i, j, 5) = TW
          Next i
      Next j
      AMU = 1#
      DPDZ = -2000#
      RHOCP = 1#
      COND = 1#
      DTDZ = 100#
End Sub

      Sub DENSE()
      End Sub
      Sub BOUND()
      ASUM = 0#
      WSUM = 0#
      TSUM = 0#
      For j = 2 To M2
          For i = 2 To L2
               If Not (i = 2# And j <= 4) Then
                  AR = YCVR(j) * XCV(i)
                  WSUM = WSUM + F(i, j, 4) * AR
                  TSUM = TSUM + AR * F(i, j, 4) * F(i, j, 5)
                  ASUM = ASUM + AR
               End If
          Next i
      Next j
      WBAR = WSUM / ASUM
      WP = (R(1) + R(M1)) * XL + (1# + XCV(2)) * (RMN(5) - R(1))
      DH = 4# * ASUM / WP
      RE = RHOCON * WBAR * DH / AMU
      FRE = -2# * DPDZ * DH / (RHOCON * WBAR ^ 2 + 1E-30) * RE
      TBULK = TSUM / (WSUM + 1E-30)
      HTP = WP - R(M1) * XL
      HTC = RHOCP * WSUM * DTDZ / ((TW - TBULK + 1E-30) * HTP)
      ANU = HTC * DH / COND
      If (ITER < 3) Then Exit Sub
      LSolve(5) = True
      LSolve(4) = False
 End Sub

 Sub OUTPUT()
      If (ITER = 0#) Then
          Print #1,
          Print #1, " ITER"; Space(8); "F.RE"; Space(8); "NU"
      End If
 ' 400 WRITE(8,402) ITER,FRE,ANU
  '402 FORMAT(1X,I6,1P2E20.4)
      Print #1,
      Print #1, Format(ITER, "0#      "); Format(FRE, "0.###E+##"), Format(ANU, "0.###E+##")
      If (ITER <> LAST) Then Exit Sub
      For j = 1 To M1
         For i = 1 To L1
               F(i, j, 4) = F(i, j, 4) / WBAR
               F(i, j, 5) = (F(i, j, 5) - TW) / (TBULK - TW + 1E-30)
          Next i
      Next j
      Call ToPrint
      End Sub
      Sub GAMSOR()
      For i = 1 To L1
           For j = 1 To M1
               GAM(i, j) = AMU
               If (NF <> 5) Then GAM(i, j) = COND
               GAM(1, j) = 0#
               GAM(L1, j) = 0#
               If (NF = 5) Then GAM(i, M1) = 0#
               If (j <= 4) Then GAM(2, j) = 10000000000#
               If (NF = 5 And j <= 4) Then GAM(2, j) = 10# * COND
           Next j
      Next i
      For j = 2 To M2
          For i = 2 To L2
              CON(i, j) = -DPDZ
              If (NF = 5) Then CON(i, j) = -DTDZ * F(i, j, 4) * RHOCP
          Next i
      Next j
      End Sub

⌨️ 快捷键说明

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