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

📄 exm_9.bas

📁 VB版本_SIMPLE算法和11各个算例
💻 BAS
字号:
Attribute VB_Name = "Exm_9"

'*****************************************************************
'*
'*----------------- EXAMPLE NINE -----------------------------
'*
'*****************************************************************
Option Explicit
Dim i%, j%
Dim ai#, CP#, TIN#, WFU#, WOX#, WPR#, HFU#, ARFU#, AMU#, PR#, WBAR#, RHOM#
Dim AMUP#, RATIO#, PROD#, WAV#, DEN#, FLOWIN#, FL#, FACTOR#, RSWM#, AR#

      Sub GRID()
          For i = 1 To 3
               LSolve(i) = True
               LPrint(i) = True
          Next
   
      LSolve(4) = True
      LSolve(7) = True
      LSolve(9) = True
      LPrint(5) = True
      LPrint(6) = True
      LPrint(8) = True
      LPrint(9) = True
      LPrint(11) = True
      LPrint(12) = True
      Title(1) = ".VEL  U."
      Title(2) = ".VEL  V."
      Title(3) = ".STR FN."
      Title(5) = ". FUEL ."
      Title(6) = ".OXYGEN."
      Title(8) = ". TEMP ."
      Title(9) = ".R.VTHE."
      Title(11) = "PRESSURE"
      Title(12) = ". RHO ."
      RELAX(1) = 0.5
      RELAX(2) = 0.5
      RELAX(11) = 0.8
      RELAX(12) = 0.5
      LAST = 30
      MODE = 2
      XL = 1#
      YL = 0.2
      L1 = 7
      M1 = 10
      R(1) = 0#
      Call UGRID
      End Sub
      Sub START()
      ai = 4#
      CP = 1000#
      TIN = 300#
      RHOCON = 10#
      WFU = 16#
      WOX = 32#
      WPR = 28#
      HFU = 30000000#
      ARFU = 20#
      For j = 1 To M1
          For i = 1 To L1
              F(i, j, 1) = 20#
              F(2, j, 1) = 0#
              F(i, M1, 1) = 0#
              F(i, j, 2) = 0#
              F(i, j, 9) = 0#
              P(i, j) = 0#
              F(i, j, 4) = -0.232 / ai
              F(i, j, 7) = CP * TIN
          Next i
      Next j
      AMU = 0.1
      PR = 0.7
      AMUP = AMU / PR
      F(2, M2, 1) = 20#
      F(2, 3, 1) = 50#
      RATIO = 1# / (WFU * (0.232 / WOX + 0.768 / WPR))
      F(2, 2, 1) = (F(2, 3, 1) * YCVR(3) + F(2, M2, 1) * YCVR(M2)) * RATIO / (YCVR(2) * ARFU)
      F(1, 2, 7) = CP * TIN + HFU
      F(1, 2, 4) = 1#
      F(1, 3, 9) = R(3) * F(2, 3, 1) * 0.2
      End Sub
      Sub DENSE()
      For j = 1 To M1
          For i = 1 To L1
               F(i, j, 5) = Max(0#, F(i, j, 4))
               F(i, j, 6) = Max(0#, -ai * F(i, j, 4))
               F(i, j, 8) = (F(i, j, 7) - F(i, j, 5) * HFU) / CP
               PROD = 1# - F(i, j, 5) - F(i, j, 6)
               WAV = 1# / (F(i, j, 5) / WFU + F(i, j, 6) / WOX + PROD / WPR)
               DEN = RHOCON * WAV / F(i, j, 8)
               If (ITER = 0) Then RHO(i, j) = DEN
               RHO(i, j) = DEN * RELAX(NRHO) + RHO(i, j) * (1# - RELAX(NRHO))
          Next i
      Next j
      End Sub
      Sub BOUND()
      If (ITER = 0) Then
          FLOWIN = 0#
          For j = 2 To M2
                FLOWIN = FLOWIN + RHO(1, j) * F(2, j, 1) * YCVR(j)
          Next j
      End If
      FL = 0#
      For j = 2 To M2
          FL = FL + RHO(L1, j) * F(L2, j, 1) * YCVR(j)
          F(L1, j, 7) = F(L2, j, 7)
          F(L1, j, 4) = F(L2, j, 4)
      Next j
      FACTOR = FLOWIN / FL
      For j = 2 To M2
              F(L1, j, 1) = F(L2, j, 1) * FACTOR
      Next j
      End Sub
      Sub OUTPUT()
     ' IF(ITER.NE.0) GOTO 400
     ' WRITE(8,401)
  '401 FORMAT(1X,'  ITER',6X,'SMAX',9X,'SSUM',8X,'U(4,2)',7X,'T(4,2)',7X,
   '  &    'OX(4,6)')
     
  '400 WRITE(8,403) ITER,SMAX,SSUM,U(4,2),T(4,2),OX(4,6)
  '403 FORMAT(1X,I6,1P5E13.4)
   '   IF(ITER.EQ.LAST) CALL PRINT
     If (ITER = 0) Then
        Print #1,
        Print #1, "  ITER"; Space(6); "SMAX"; Space(8); "SSUM"; Space(7); "U(4,2)"; Space(8); "T(4,2)"; Space(8); " OX(4,6)"
     End If
      Print #1,
      Print #1, Format(ITER, "0#      "); Format(SMAX, "#.000E+###"); Space(4); Format(SSUM, "#.000E+###"); _
                Space(4); Format(F(4, 2, 1), "#.000E+###"); Space(4); Format(F(4, 2, 8), "#.000E+###"); _
                Space(4); Format(F(4, 6, 6), "#.000E+###");
     If (ITER = LAST) Then
          Call ToPrint
     End If
      End Sub

Sub GAMSOR()
        For j = 1 To M1
           For i = 1 To L1
              GAM(i, j) = AMU
              If Not (NF <> 4 And NF <> 7) Then
                     GAM(i, j) = AMUP
                     GAM(i, M1) = 0#
                     GAM(1, j) = 0#
                     GAM(L1, j) = 0#
               End If
            Next i
      Next j
      If (NF = 2) Then
          For j = 3 To M2
               For i = 2 To L2
                    RSWM = FY(j) * F(i, j, 9) + FYM(j) * F(i, j - 1, 9)
                    RHOM = FY(j) * RHO(i, j) + FYM(j) * RHO(i, j - 1)
                    CON(i, j) = RHOM * RSWM ^ 2 / RMN(j) ^ 3
                    AP(i, j) = -AMU / RMN(j) ^ 2
              
               Next i
           Next j
      End If
      If (NF <> 9) Then Exit Sub
      For j = 2 To M2
          For i = 2 To L2
               AR = 2# * AMU / YCVR(j)
               CON(i, j) = AR * F(i, j - 1, 9)
               AP(i, j) = -AR
         Next i
      Next j
End Sub
      

⌨️ 快捷键说明

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