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

📄 frmdnpj.frm

📁 水利计算程序!年径流量!调节计算!调洪计算.
💻 FRM
字号:
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form frmDnpj 
   Caption         =   "多年平均电能计算"
   ClientHeight    =   3855
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   4950
   LinkTopic       =   "Form3"
   MDIChild        =   -1  'True
   ScaleHeight     =   3855
   ScaleWidth      =   4950
   Begin MSFlexGridLib.MSFlexGrid MSFlexGrid1 
      Height          =   3375
      Left            =   0
      TabIndex        =   2
      Top             =   480
      Width           =   4935
      _ExtentX        =   8705
      _ExtentY        =   5953
      _Version        =   393216
      Rows            =   14
      Cols            =   4
   End
   Begin VB.CommandButton cmdClose 
      Caption         =   "退    出"
      Height          =   495
      Left            =   1800
      TabIndex        =   1
      Top             =   0
      Width           =   1695
   End
   Begin VB.CommandButton cmdCalu 
      Caption         =   "计    算"
      Height          =   495
      Left            =   0
      TabIndex        =   0
      Top             =   0
      Width           =   1575
   End
End
Attribute VB_Name = "frmDnpj"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub cmdCalu_Click()
'Fnn() :第I年第J时段的出力值
Dim ve() As Single, Fnn() As Single, Pn(12) As Single
Dim i As Integer, j As Integer, km As Integer, kn As Integer
'VS:死库容
Dim vv(13) As Single, uu(13) As Single, vs As Single
Dim An As Single, Ay As Single  'An:保证出力 , Ay:装机容量
Dim Cond1 As Boolean, Cond2 As Boolean
'假定的供水期平均出力
Dim dV As Single, dN As Single, F As Single
Dim ii As Integer, jj As Integer, F1 As Single
'v:兴利库容
Dim v1 As Single, v2 As Single, vp As Single, v As Single
Dim zx As Single, zs As Single, QQ As Single
'Fn:试算出来的保证出力
Dim Fn As Single, xzv As Single
Dim Filenum As Integer

'On Error GoTo errCalu
Call ReadFile
Call ReadRunoff
Call CaluFlow
ReDim ve(m, 13), Fnn(m, 12)
Filenum = FreeFile
Open App.Path & "\fph.dat" For Input As #Filenum '防破坏线纵坐标数据文件
For i = 1 To 13
   Input #Filenum, vv(i)
Next i
Close #Filenum

DlgEnergyPara.Show vbModal
If DlgEnergyPara.Tag <> "OK" Then Exit Sub
v = Val(DlgEnergyPara.Text1(0)) '兴利库容(m^3/s*月)
vs = Val(DlgEnergyPara.Text1(1)) '死库容(m^3/s*月)
An = Val(DlgEnergyPara.Text1(2)) '保证出力(千瓦)
Ay = Val(DlgEnergyPara.Text1(3)) * 10 ^ 4 '装机容量(千瓦)
xzv = Val(DlgEnergyPara.Text1(4)) '限制库容
'v = 1630.78: vs = 552.65: An = 400990.1: Ay = 120 * 10 ^ 4
    '将限制库容数据弄进xzkr.dat文件中
    Filenum = FreeFile
    Open App.Path & "\xzkr.dat" For Output As #Filenum
        For i = 1 To 13
            Print #Filenum, xzv
        Next i
    Close #Filenum
Open App.Path & "\xzkr.dat" For Input As #Filenum '水库上限蓄水量过程(正常高水位或汛前限制水位)数据文件
    For i = 1 To 13
        Input #Filenum, uu(i)
    Next
Close #Filenum

DoEvents
  For i = 1 To m
     v1 = vv(1)
     ve(i, 1) = v1
     For j = 2 To 13
         v2 = v1
         If j = 13 Then v2 = vv(13)
         kn = 0
         km = 0
         Do
             vp = (v1 + v2) / 2    '得出平均库容并由此内插出上游水位
             Call 插值图(mmg, gzz, gvv, vp, zs)
             QQ = a(i, j - 1) + v1 - v2
             Call 插值图(nng, gz1, gqq, QQ, zx) '由调节流量内插出下游水位
             
             Fn = ak * QQ * (zs - zx)  '得到某年某时期的保证出力
             If Fn > Ay Then Fn = Ay  '如果某一时期的保证出力大于装机容量,那么就等于装机容量
             If j = 13 Then Exit Do
             If v2 > vs Then     '如果时段末库容大于死库容=======================
               If v2 < vv(j) Then '如果时段末库容小于防洪循制水位----------------
                    If CLng(Fn) <> CLng(An) Then '如果某一时期的出力值不等于保证出力,
                                                '则调节时段末库容,并重新计算Fn值,直至相等
                      v2 = v2 + (Fn - An) / ak / (zs - zx)
                      If v2 >= v + vs Then v2 = v + vs
                      If v2 < vs Then v2 = vs
                        kn = kn + 1
                      End If
                      Cond1 = kn > 100 Or (CLng(Fn) = CLng(An))
                    Else
                          If CLng(v2) > CLng(uu(j)) And Fn > Ay Then '如果时段末库容大于防洪限制库容和某一时期
                                                                    '的保证出力大于装机容量
                              Fn = Ay
                          Else
                              dV = (uu(j) - vv(j)) / 4  '将加大出力区分成四个区域
                              dN = (Ay - An) / 4
                              ii = Int((Fn - An) / dN) + 1
                              jj = Int((v2 - vv(j)) / dV) + 1
                              If ii <> jj Then
                                 v2 = v2 + dV * (ii - jj) / 2  '重新调节时段末库容并计算Fn值
                                 If v2 > uu(j) Then v2 = uu(j)
                                 If v2 < vs Then v2 = vs
                                 km = km + 1
                              End If
                              Cond2 = km > 100 Or ii = jj
                         End If
                    End If
                        '---------------------------------------------------------
                    Else              '如果时段末库容小于等于死库容则退出循环。
                         Exit Do
                    End If
                '==================================================================
                Loop Until Cond1 Or Cond2
                ve(i, j) = v2  '第I年J时段的水库蓄水量
                Fnn(i, j - 1) = Fn  '第I年(J-1)时段的出力值
                Debug.Print i, j, v1, v2, a(i, j - 1); Fn
               v1 = v2
               Next
            Next
        F1 = 0
        For i = 1 To 12
            F = 0
            For j = 1 To m
                F = F + Fnn(j, i) / m   '算出某一月份的多年平均出力值
            Next
            Pn(i) = F   '共12组数据
            F1 = F1 + F * 730 * 10 ^ (-8) '把12个月的出力值相加得到多年平均电能,并把单位转化为亿度。
        Next
        Filenum = FreeFile
        Open App.Path & "\out4.dat" For Output As #Filenum
        Print #Filenum, "多年平均电能计算"
        Print #Filenum, "        ", "各月的多年平均出力"
        For i = 1 To 12
            Print #Filenum, i & "月", Pn(i) & " 千瓦"
        Next
        Print #Filenum, "多年平均电能=" & F1 & " 亿度"
        Close #Filenum
    With MSFlexGrid1
         For i = 1 To 12
             .TextMatrix(i, 1) = Format(Pn(i), "#.00")
             .TextMatrix(i, 2) = Format(F1, "#.00")
        Next i
    End With
    Exit Sub
    
errCalu:
Dim iAction As Integer
    Select Case Err.Number
    Case 71
        iAction = MsgBox("请插入A盘!", vbExclamation + vbRetryCancel, "错误提示")
             If iAction = vbRetry Then Resume
        Case Else
             MsgBox Err.Number & ":" & Err.Description, vbCritical, "错误提示"
    End Select
End Sub

Private Sub cmdClose_Click()
Unload Me
End Sub

Private Sub Form_Load()
Dim i As Integer, j As Integer
With MSFlexGrid1
     .Width = frmDnpj.Width
     .TextMatrix(0, 0) = "月份"
     .TextMatrix(0, 1) = "多年平均出力(KW)"
     .TextMatrix(0, 2) = "多年平均电能(亿度)"
     .Rows = 13
     For j = 0 To .Cols - 1
         .ColAlignment(j) = 4
         If j <> 0 Then
            .ColWidth(j) = 2000
         End If
    Next j
    .MergeCol(2) = True
    .MergeCells = flexMergeFree
    For i = 1 To 12
        .TextMatrix(i, 0) = i
        .TextMatrix(i, 2) = ""
    Next
End With
End Sub

⌨️ 快捷键说明

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