Excel表格在水库调洪演算中的应用
伊布拉音·米吉提  刘丽
巴州水利水电勘测设计院
【摘要】
水库的洪水调节计算在设计阶段主要是用来确定泄洪建筑物的尺寸,而在蓄水运行阶段则是为洪水调度提供依据的重要手段。
调洪计算的基本原理是水库水量平衡。计算方法主要有“列表试算法、半图解法、图解法、简化三角形法”等,其中列表试算法具有概念清楚、易于理解,精度高等优点,但存在计算繁琐、反复查图、速度较慢的缺点。随着计算机应用的普及,笔者针对试算法进行了探索,利用Excel表格强大的计算、差值功能,简化调洪演算方法,取消了人工查图、差值、手工反复试算的过程,极大地提高了计算速度。
一、试算法调洪的原理
试算法的基础就是求解如下联立方程:
式中:——时段始末的入库流量,米3/秒;
      ——时段始末的出库流量,米3/秒;
      ——时段vlookup的使用方法图解始末的水库蓄水量,米3
        ——时段长,小时。
时段入库流量,由设计洪水过程线提供。时段末的出库流量,可根据水库下泄流量变化趋势,假定数值进行试算。起调时,一般,假定一个,就能根据求出时段的蓄水增量。再从关系曲线上由查出。如果这个与原假设的相等,可继续下一个时段的计算,否则,需重新假定,直到两者相符为止。由此可见手工进行试算法调洪是相当麻烦的。
目前利用Excel表格将上述计算所需的公式逐一输入相应的表格,可实现假设泄量至水库蓄水量逐栏的自动计算,然后根据假设蓄水量查曲线,再计算出下泄流量与假设的泄量比较。如此,仍然是比较麻烦的。见下图:
二、应用Excel调洪计算的必要条件
下面仅莫呼查汗水库导流期为例说明洪水调节计算的方法和过程(之所以选导流期,是因为本方法更加适合水位变幅较大的调洪演算)。
1.水库蓄水量是水库水位的函数,但由于水库形状极不规则,无法列出方程式的代数式,因此,必须将实测所得的曲线由图形转化为数字格式,并制成表格,以便调洪演算时,通过内插得相应的水位及库容。
2.将上述表中的库容输入Excel表格的A列,相应的水位输入B列。
3.同样将导流洞不同水位及对应的下泄流量输入直C和D列。
三、计算方法
如上所述,水库入库洪量、导流洞下泄流量,直接让围堰水位变化,而围堰水位变化,将导致导流洞下泄能力,因此这是一个循环过程,而调洪演算的任务是到该时段的最终库水位,本文主要采用线性插值方法,将该繁琐的循环过程利用excel来完成。计算步骤如下:
1、定义名称:
为便于计算,分别将定义名称围堰水位、围堰库容、围堰、导流洞水位、导流洞流量及导流洞。
定义方法:将该名称对应的单元格区域选定后,在名称框中输入对应的名字即可。
2、输入公式:
在J5单元格输入公式:
=IF(COUNTIF(导流洞水位,O5)=1,VLOOKUP(O5,导流洞,2),(INDEX(导流洞流量,MATCH(O5,导流洞水位,1)+1,1)-INDEX(导流洞流量,MATCH(O5,导流洞水位,1),1))/(INDEX(导流洞水位,MATCH(O5,导流洞水位,1)+1,1)-INDEX(导流洞水位,MATCH(O5,导流洞水位,1),1))*(O5-INDEX(导流洞水位,MATCH(O5,导流洞水位,1),1))+INDEX(导流洞流量,MATCH(O5,导流洞水位,1),1))
在P5单元格输入公式:
=IF(COUNTIF(围堰库容,N5)=1,VLOOKUP(N5,围堰,2),(INDEX(围堰水位,MATCH(N5,围堰库容,1)+1,1)-INDEX(围堰水位,MATCH(N5,围堰库容,1),1))/(INDEX(围堰库容,MATCH(N5,围堰库容,1)+1,1)-INDEX(围堰库容,MATCH(N5,围堰库容,1),1))*(N5-INDEX(围堰库容,MATCH(N5,围堰库容,1),1))+INDEX(围堰水位,MATCH(N5,围堰库容,1),1))
3、说明:
(1)名称说明:围堰水位、围堰库容、围堰、导流洞水位、导流洞流量及导流洞为前面定义的单元格区域。
(2)公式思路:若需要的水位在相应的区域里有,则流量或库容即为该区域改水位对应的值,若没有该值则进行插值计算;计算公式为:
(3)函数说明:
Match 函数可在单元格区域中搜索指定项,然后返回该项在单元格区域中的相对位置
Index返回表格或中的元素值,此元素由行号和列号的索引值给定。
Vlookup函数搜索某个单元格区域的第一列,然后返回该区域相同行上指定单元格中的值。
Countif 函数对区域中满足单个指定条件的单元格进行计数。
If如果指定条件的计算结果为 TRUE,IF 函数将返回某个值;如果该条件的计算结果为 FALSE,则返回另一个值。
四、使计算方法程序化
通过以上步骤,列表试算法的计算表格基本完成,此时只需单变量求解的方法使试算差为0即可,但往往洪水过程较长,如本例莫呼查汗水库工程,洪水过程长达7天,即160小时,此过程单纯利用单变量求解来完成,也是需要较长时间,若将利用excel的VBA功能编写一个小程序,即可快速完成此过程。
按Alt+F11打开VBA编辑器,输入以下代码:
Sub thjs()
'采用牛顿二分法求解法进行试算
Dim i As Integer
Dim a As Double
Dim b As Double
Dim c As Double
i = Selection.Row() '计算行设定
Do Until i = 174
  If Abs(Sheet1.Cells(i, 17)) < 0.00001 Then '精度设定
      i = i + 1
  Else
      a = Sheet1.Cells(i, 15)
      b = Sheet1.Cells(i, 16)
      If Sheet1.Cells(i, 13) < 0 Then  '迭代状况判别
      Sheet1.Cells(i, 15) = a - (a - b) / 4 '迭代增量,一般分母为2,设的大一点不容易进入死循环,计算时间较长
      Else
      Sheet1.Cells(i, 15) = b - (b - a) / 4
      End If
  End If
Sheet1.Cells(i, 15).Select  '利用选定来进行滚动
Loop
End Sub
五、自动差值计算法与半图解法的对比
我们将自动差值计算法与半图解法法进行的调洪演算成果进行比较,下图中只有少数单元格
中的库水位值相差4mm,但是不影响下一时段洪水调节计算的水位值,误差是十分微小的。

自动差值计算法
库容Q
(万m3)
水位试
算(m)
水库水
位(m)
试算差
2.171
2247.509
2247.509
0.000
2.193
2247.526
2247.522
0.004
2.266
2247.584
2247.583
0.001
2.754
2247.964
2247.964
0.000
3.642
2248.657
2248.659
-0.002
7.706
2251.008
2251.007
0.001
15.609
2254.048
2254.048
0.000
25.496
2256.643
2256.640
-0.003
37.824
2259.126
2259.127
0.001
39.086
2259.347
2259.347
0.000
49.118
2260.972
2260.973
0.001
55.206
2261.841
2261.842
0.001
57.323
2262.134
2262.134
0.000
55.330
2261.859
2261.855
-0.004
50.118
2261.126
2261.124
-0.002
42.944
2260.020
2260.020
0.000
35.103
2258.636
2258.636
0.000
27.469
2257.083
2257.083
0.000
半图解计算法       
库容Q
(万m3)
水库水位(m)
2.171
2247.509
2.193
2247.526
2.266
2247.584
2.754
2247.964
3.642
2248.657
7.706
2251.008
15.609
2254.048
25.496
2256.643
37.824
2259.126
39.086
2259.347
49.118
2260.972
55.206
2261.841
57.323
2262.134
55.330
2261.859
50.118
2261.126
42.944
2260.020
35.103
2258.635
27.469
2257.083

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。