📄 form1.frm
字号:
VERSION 5.00
Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "COMCTL32.OCX"
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 4980
ClientLeft = 60
ClientTop = 450
ClientWidth = 7125
LinkTopic = "Form1"
ScaleHeight = 4980
ScaleWidth = 7125
StartUpPosition = 3 '窗口缺省
Begin ComctlLib.ProgressBar ProgressBar1
Height = 255
Left = 960
TabIndex = 1
Top = 720
Width = 3375
_ExtentX = 5953
_ExtentY = 450
_Version = 327682
Appearance = 1
End
Begin VB.CommandButton Command1
Caption = "Command1"
Height = 375
Left = 2280
TabIndex = 0
Top = 2640
Width = 1815
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Dim Nx As Integer, Ny As Integer
Dim Length As Double, Dwidth As Double, Height As Double
Dim Phi As Single, Pe As Single, Kperm As Double, Miuo As Single
Dim Cr As Double, Qsc As Double, Tproduction As Double
Dim Transability As Double, Cij As Double
Dim DeltaX As Single, DeltaY As Single
Dim TermofCumulative As Double, VolumeB As Double
Dim TotalNumofGrid As Integer
Dim MartixA() As Double, MartixB() As Double, Pressure() As Double
Dim DeltaT As Double, Nstep As Integer
Nx = 4: Ny = 8
TotalNumofGrid = Nx * Ny
Tproduction = 676 * 86400
DeltaT = 86400 * 2
Nstep = Tproduction / DeltaT
ProgressBar1.Min = 1
ProgressBar1.Max = Nstep
ReDim MartixA(TotalNumofGrid, TotalNumofGrid) As Double
ReDim MartixB(TotalNumofGrid) As Double
ReDim Pressure(TotalNumofGrid, Nstep) As Double
Dim kkL, kkR, kkUp, kkDown
' Length = 400
' Dwidth = 800
DeltaX = 100
DeltaY = 100
Height = 20
VolumeB = DeltaX * DeltaY * Height
Pe = 19.61323 * 10 ^ 6
Kperm = 0.2 * 10 ^ (-12)
Miuo = 1.5 * 10 ^ (-3)
Cr = 1.01972 * 10 ^ (-2) * 10 ^ (-6)
Qsc = -78 / 86400
Phi = 0.2
Transability = Kperm * Height / Miuo
TermofCumulative = VolumeB * Phi * Cr / 1
For J = 1 To TotalNumofGrid
For i = 1 To TotalNumofGrid
Pressure(J, 1) = Pe
Next i
Next J
For tt = 2 To Nstep
For J = 1 To TotalNumofGrid
For i = 1 To TotalNumofGrid
MartixA(i, J) = 0
Next i
MartixB(J) = 0
Next J
''''(1,1)
MartixA(1, 1) = -(2 * Transability + TermofCumulative / DeltaT)
MartixA(1, 2) = Transability
MartixA(1, Nx + 1) = Transability
''''j=1,i=2---nx-1
For i = 2 To Nx - 1
MartixA(i, i) = -(3 * Transability + TermofCumulative / DeltaT)
MartixA(i, i - 1) = Transability
MartixA(i, i + 1) = Transability
MartixA(i, i + Nx) = Transability
Next i
''''j=1,i=Nx
MartixA(Nx, Nx) = -(2 * Transability + TermofCumulative / DeltaT)
MartixA(Nx, Nx - 1) = Transability
MartixA(Nx, Nx + Nx) = Transability
''''j=2 to ny-1
For J = 2 To Ny - 1
For i = 1 To Nx
If i = 1 Then
kk = i + (J - 1) * Nx
kkL = kk - Nx
kkR = kk + Nx
kkUp = kk + 1
MartixA(kk, kk) = -(3 * Transability + TermofCumulative / DeltaT)
MartixA(kk, kkL) = Transability
MartixA(kk, kkR) = Transability
MartixA(kk, kkUp) = Transability
ElseIf i = Nx Then
kk = i + (J - 1) * Nx
kkL = kk - Nx
kkR = kk + Nx
kkDown = kk - 1
MartixA(kk, kk) = -(3 * Transability + TermofCumulative / DeltaT)
MartixA(kk, kkL) = Transability
MartixA(kk, kkR) = Transability
MartixA(kk, kkDown) = Transability
Else
kk = i + (J - 1) * Nx
kkL = kk - Nx
kkR = kk + Nx
kkUp = kk + 1
kkDown = kk - 1
MartixA(kk, kk) = -(4 * Transability + TermofCumulative / DeltaT)
MartixA(kk, kkL) = Transability
MartixA(kk, kkR) = Transability
MartixA(kk, kkUp) = Transability
MartixA(kk, kkDown) = Transability
End If
Next i
Next J
'''j=ny
kk = Nx * (Ny - 1) + 1
kkL = kk - Nx
kkUp = kk + 1
MartixA(kk, kk) = -(2 * Transability + TermofCumulative / DeltaT)
MartixA(kk, kkL) = Transability
MartixA(kk, kkUp) = Transability
For i = 2 To Nx - 1
kk = Nx * (Ny - 1) + i
kkL = kk - Nx
kkUp = kk + 1
kkDown = kk - 1
MartixA(kk, kk) = -(3 * Transability + TermofCumulative / DeltaT)
MartixA(kk, kkL) = Transability
MartixA(kk, kkUp) = Transability
MartixA(kk, kkDown) = Transability
Next i
kk = Nx * Ny
kkL = kk - Nx
kkDown = kk - 1
MartixA(kk, kk) = -(2 * Transability + TermofCumulative / DeltaT)
MartixA(kk, kkL) = Transability
MartixA(kk, kkDown) = Transability
For i = 1 To TotalNumofGrid
If i = 15 Then
MartixB(15) = -(TermofCumulative / DeltaT * Pressure(15, tt - 1) + Qsc)
Else
MartixB(i) = -(TermofCumulative / DeltaT * Pressure(i, tt - 1))
End If
Next i
ReDim A(TotalNumofGrid, TotalNumofGrid) As Double
ReDim B(TotalNumofGrid) As Double
For J = 1 To TotalNumofGrid
For i = 1 To TotalNumofGrid
A(J, i) = MartixA(J, i)
Next i
B(J) = MartixB(J)
Next J
Call GAUSSJ(A(), TotalNumofGrid, B())
For i = 1 To TotalNumofGrid
Pressure(i, tt) = B(i)
Next i
ProgressBar1.Value = tt
Next tt
Open App.Path + "\data.txt" For Output As 1
For tt = 1 To Nstep
AAA$ = "第" & Str(tt) + "时间步数据" & "*************************************"
Write #1, AAA$
For i = 1 To TotalNumofGrid
Write #1, i; Tab(20); Pressure(i, tt) / 10 ^ 6
Next i
Next tt
Close #1
MsgBox "计算完毕", 48, "信息"
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -