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

📄 frmregular.frm

📁 水利计算程序!年径流量!调节计算!调洪计算.
💻 FRM
字号:
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form frmRegularQ 
   Caption         =   "长系列调节流量计算"
   ClientHeight    =   8085
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   9855
   LinkTopic       =   "Form1"
   MDIChild        =   -1  'True
   ScaleHeight     =   8694.763
   ScaleMode       =   0  'User
   ScaleWidth      =   10014.92
   Begin MSFlexGridLib.MSFlexGrid MSFlexGrid1 
      Height          =   8355
      Left            =   0
      TabIndex        =   3
      Top             =   420
      Width           =   10695
      _ExtentX        =   18865
      _ExtentY        =   14737
      _Version        =   393216
      Rows            =   32
      Cols            =   8
   End
   Begin VB.CommandButton CmdCalu 
      Caption         =   "计    算"
      Height          =   375
      Left            =   6480
      TabIndex        =   0
      Top             =   0
      Width           =   1095
   End
   Begin VB.CommandButton cmdclose 
      Caption         =   "退    出"
      Height          =   375
      Left            =   7560
      TabIndex        =   4
      Top             =   0
      Width           =   1095
   End
   Begin VB.Label Label3 
      Appearance      =   0  'Flat
      BackColor       =   &H80000000&
      BorderStyle     =   1  'Fixed Single
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   2895
      TabIndex        =   2
      Top             =   0
      Width           =   3240
   End
   Begin VB.Label Label2 
      Appearance      =   0  'Flat
      BackColor       =   &H80000000&
      BorderStyle     =   1  'Fixed Single
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   30
      TabIndex        =   1
      Top             =   0
      Width           =   2775
   End
End
Attribute VB_Name = "frmRegularQ"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub cmdCalu_Click()
'w():差积曲线坐标,Q():第I年的供水期平均出力
Dim p() As Single, w() As Single, Q() As Single
Dim ax As Single
Dim i As Integer, j As Integer, k As Integer
Dim IL As Integer, iil As Integer
Dim il1, il2 As Integer
Dim zzl As Single, vs As Single
Dim zz As Single, QQa As Single '假定为调节流量的初值
Dim vv1 As Single, vv2 As Single
Dim iis As Integer, ie As Integer
'假定的供水期平均出力
Dim F As Single, fi As Single, iu As Integer, iiu As Integer
Dim d As Single, jf As Integer
Dim condition As Boolean
Dim dd As Single
Dim i1 As Integer, i2 As Integer
Dim q0 As Single, iAction As Integer
'on error goto errform1click
'读取水位库容、水位流量关系表
Call ReadFile
q0 = ReadRunoff   '多年平均流量
Call CaluFlow
     zz = Val(InputBox("输入正常高水位:", "长系列调节流量计算"))
     If zz <= 0 Then Exit Sub
     QQa = 0.8 * q0  '假定为调节流量的初值
     Call 插值图(mmg, gvv, gzz, zz, vv1) 'gvv:库容参数,gzz:水位参数,zz:正常高水位

'第一层循环 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Do
     Call 插值图(nng, gz1, gqq, QQa, zzl) 'nng:下泄流量的组数,多年平均流量*0.8后对应的下游水位
     
     'hm:(zz - zzl) * 0.35是消落深度,zz - (zz - zzl) * 0.35是死水位
     zzs = max(82, zz - (zz - zzl) * 0.35) '最低死水位与计算的死水位相比取大值得出需要的死水位
     Call 插值图(mmg, gvv, gzz, zzs, vv2)
     v = vv1 - vv2 '兴利库容
     k = 1
     ReDim w(k)
     w(1) = 0
     For i = 1 To m
         For j = 1 To 12
           ReDim Preserve w(k + 1)
           w(k + 1) = w(k) + a(i, j) - q0 'W(k)是31年的累积水量
           k = k + 1
        Next j
    Next i
    kk = 1
    iis = 1
        '第二层循环 =================================================
        Do
             ie = iis + 9
             If (ie > 12 * m + 1) Then ie = 12 * m + 1 '因ie小于373,故仍然等于10
             F = w(iis)
             
             For j = iis To ie
                 If (w(j) > F) Then
                    F = w(j)
                    iu = j
                 End If
            Next j
            fi = w(iu)  '先找出十个数字中最大的一个4113.394
            iiu = iu + 9 '找出十个数字中最大数对应的下标数 5 并加上 9
            If (iiu > 12 * m + 1) Then iiu = 12 * m + 1
            For j = iu To iiu
               If (w(j) < fi) Then
                 fi = w(j) '再从 5 到 14组数中找出一个最小值-3167.968
                 IL = j    '找出最小值-3167.968对应的组数12
                End If
            Next
            iil = IL

               '第三层循环 ------------------------------------------
                Do
                    il1 = IL
                    il2 = iu
                    For j = iu To IL
                      d = w(iu) + (w(IL) + v - w(iu)) / CSng(IL - iu) * (j - iu)
                      If (d > w(j) + v) Then
                      IL = j '记下第11组数据,并把它传给IL
                      End If
                    Next j
                    For j = iu To IL
                        d = w(iu) + (w(IL) + v - w(iu)) / CSng(IL - iu) * (j - iu)
                        If d < w(j) Then iu = j '记下第5组数据,并把它传给IL
                    Next j
                Loop Until (il1 = IL And il2 = iu) '找出IL=11,iu=5,
                '-----------------------------------------------------
            

            ReDim Preserve Q(kk)
            Q(kk) = (w(IL) + v - w(iu)) / CSng(IL - iu) + q0
            ReDim Preserve iss(kk), iee(kk), ig(kk)
            iss(kk) = iu
            iee(kk) = IL
            ig(kk) = IL - iu
            Debug.Print kk + 1950, iis, ie, iu, IL
            Debug.Print kk + 1950, iss(kk) - 1, iee(kk) - 2, Q(kk)
            kk = kk + 1
            iis = iil
            Loop Until (kk > m)
            '========================================================
    
    Dim Filenum As Integer
    Filenum = FreeFile
    Open App1 & "\no.dat" For Output As #Filenum '为保证出力计算提供试算文件
    For i = 1 To m
        Print #Filenum, iss(i) - 1, iee(i) - 1, Q(i)
    Next i
    Close #Filenum
    ReDim p(m)
   Call 排频(m, Q, p)
    ax = 100#
    For i = 1 To m
        If Abs(p(i) - 87.5) < ax Then
            ax = Abs(p(i) - 87.5)
            jf = i '找出等于87.5相对应的调节流量
        End If
    Next i
    condition = Abs(Q(jf) - QQa) > 1 '假定为调节流量的初值
    If condition Then QQa = Q(jf)
    Loop While (condition)
    '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    
    Call 插值图(mmg, gvv, gzz, zzs, vs)
    Label2 = "正常高水位 = " & zz & " 米"
    Label3 = "死库容 = " & Format(vs, "#.00") & " m3/s.月"
    Debug.Print "start"
    For i = 1 To m
        Debug.Print p(i), Q(i)
    Next i
    With MSFlexGrid1
         .Rows = m + 1
         For i = 1 To m
             dd = (w(iee(i)) - w(iss(i))) + q0 * (iee(i) - iss(i)) '供水期水量
             i1 = iss(i) - 12 * (i - 1) + ii0 - 1
             If i1 > 12 Then i1 = i1 - 12  '供水期初径流量
             i2 = iee(i) - 12 * (i - 1) + ii0 - 2
             If i2 > 12 Then i2 = i2 - 12 '供水期末径流量
                .TextMatrix(i, 0) = Str(i + i0 - 1)
                .TextMatrix(i, 1) = Str(i1)
                .TextMatrix(i, 2) = Str(i2)
                .TextMatrix(i, 3) = Str(ig(i))
                .TextMatrix(i, 4) = Format(dd, "#.00")
                .TextMatrix(i, 5) = Format(v, "#.00")
                .TextMatrix(i, 6) = Format(Q(i), "#.00")
                .TextMatrix(i, 7) = Format(p(i), "#.00")
                    Dim ab  As Integer
                    Filenum = FreeFile
                    Open App1 & "\调节流量成果表.dat" For Output As #Filenum '为保证出力计算提供试算文件
                    For ab = 1 To m
                        Print #Filenum, .TextMatrix(ab, 0); " "; .TextMatrix(ab, 1); " "; .TextMatrix(ab, 2); _
                            " "; .TextMatrix(ab, 3); " "; .TextMatrix(ab, 4); " "; .TextMatrix(ab, 5); " "; .TextMatrix(ab, 6); _
                            " "; .TextMatrix(ab, 7)
                    Next ab
                    Close #Filenum
            Next
        End With
    Exit Sub
End Sub
Private Function max(s As Single, t As Single)
        max = IIf(s > t, s, t)
End Function

Private Sub cmdClose_Click()
 Unload Me
End Sub

'调节流量窗体
Private Sub Form_Load()
Dim j As Integer
With MSFlexGrid1
     .Width = frmRegularQ.Width
     .TextMatrix(0, 0) = "年份"
     .TextMatrix(0, 1) = "供水期初"
     .TextMatrix(0, 2) = "供水期末"
     .TextMatrix(0, 3) = "供水期"
     .TextMatrix(0, 4) = "来水量"
     .TextMatrix(0, 5) = "兴利库容"
     .TextMatrix(0, 6) = "调节流量"
     .TextMatrix(0, 7) = "频率"
     For j = 0 To .Cols - 1
        .ColAlignment(j) = 4
     Next
End With
  Label2 = "": Label2.FontSize = 12: Label2.FontBold = True
  Label3 = "": Label3.FontSize = 12: Label3.FontBold = True
End Sub

⌨️ 快捷键说明

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