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小时内删除。
发表评论