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

📄 form1.frm

📁 本程序能偶准确算出储层某一时刻的地层压力
💻 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 + -