📄 exm_9.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 + -