基于VBA和Excel的水库调洪计算程序开发与应用

2024-02-20 11:38张跃驰庞金龙
中国水能及电气化 2024年1期
关键词:调洪二分法库容

张跃驰 庞金龙

(中水北方勘测设计研究有限责任公司,天津 300222)

在水库规划设计阶段,开展水库调洪计算,主要是为了配合枢纽布置中泄洪建筑物形式、尺寸的选择及确定满足工程安全的防洪特征水位、最大下泄流量等指标。目前水库调洪计算主要利用Excel及其迭代计算功能实现,需要手动输入公式并人工查找起蓄时刻和最高水位时刻,操作烦琐,易于出错且计算效率低。为提高调洪计算效率和准确性,本文在Excel开发环境的基础上,利用VBA编程语言开发调洪计算自动化程序,仅需输入基础参数即可实现多套方案的快速计算。

1 调洪计算基本原理和方法

调洪计算属于入库和出库水量平衡的计算问题,其计算原理可用圣维南方程组表示。但圣维南方程组在应用于水库调洪计算中,常需要做一定的简化,一般简化为以下公式进行计算:

(1)

q=f(V)

(2)

式中Q1、Q2——计算时段初、末的入库流量,m3/s;

q1、q2——计算时段初、末的出库流量,m3/s;

V1、V2——计算时段初、末的水库蓄水量,m3;

Δt——计算时段,s。

式(1)实际是水量平衡方程,即在一个计算时间段中,入库水量与下泄水量之差即为该时段中水库蓄水量的变化。式(2)为水库下泄流量与库容关系的曲线,取决于泄水建筑物的布置型式和尺寸等。

调洪计算方法有很多种,我国常用的是列表试算法和半图解法。半图解法通过与水库水位建立函数关系,利用图解代替试算,可有效降低计算量,是手动调洪计算的一种有效方法。随着计算机技术的发展,虽然列表试算法计算量较大,但便于通过计算机编程实现,是目前水库规划设计阶段最普遍采用的计算方法。

列表试算法基本步骤如下:

a.引用某一场次设计洪水过程线,选取计算时段Δt和入库流量Q1,Q2,Q3,…。

b.确定调洪起调水位Z0、起调库容V0、泄流曲线q泄=f(Z)、库容曲线Z=f(V)等基础参数。

c.试算出库流量qt对水量平衡方程进行求解,判断其与入库流量Qt和下泄能力q泄t的关系。

d.不断试算qt直至得到满足设定条件的解,同时计算蓄变量ΔVt时段末水位Zt、时段末库容Vt等。

e.继续计算下一时段,直至计算完整场洪水,累加ΔVt即得到调洪所需库容,过程最高水位即为相应场次洪水最高坝前水位。

2 基于VBA和Excel程序开发的特点及优势

目前,水库调洪计算普遍采用Excel软件及其迭代计算功能实现,由于设计洪水过程线一般以小时为时段,为保证计算精度,水库水位起涨时刻和最高水位时刻需线性插值得到,此步骤需要手动操作,耗时较长,且每次只能完成单独一组基础参数的调洪计算,对于需要多个起调水位、多个频率洪水及多条泄流曲线比选时,此方法耗时较长,且容易出错。

VBA是由Visual Basic发展而来的一种宏语言,一般依附于如Excel等Office的应用程序中,用于拓展应用程序的功能,得益于VBA与主应用程序的这种依附关系,其与主程序之间的通信简单且高效。并且VBA提供了面向对象的程序设计方法,提供了相当完整的程序设计语言,结合其强大的宏录制功能,利用VBA可以在Excel内轻松开发出功能强大的自动化计算程序。

与仅利用Excel迭代功能进行调洪计算相比,利用VBA开发通用的调洪计算程序,可结合调洪计算的特点开发更有针对性的计算函数,并通过循环实现多套组合方案的快速调洪计算,同时输出计算成果图表到Excel中,操作简单,基本不需要额外的学习成本即可掌握,可有效提高调洪计算的效率和准确性。

3 调洪计算程序设计

调洪计算程序开发以Excel和VBA开发环境为基础,采用面向对象的编程方法。基础类包括插值函数类和基本参数类,其中插值函数类主要解决二元曲线线性插值问题。新编迭代函数,利用二分法解决迭代计算问题。利用Excel操作界面和新编绘图函数完成参数的输入和成果的输出。调洪计算程序总体框图见图1。

图1 调洪计算程序总体

以单次洪水调洪过程为例,以入库流量和泄流能力为判别条件,逐时段进行调洪计算,对于典型单峰洪水,水库起蓄时刻为入库流量与最大泄流能力相等的时刻,此后入库流量大于最大泄流能力,水库水位上涨,直至入库流量与最大泄流能力再次相等时,水库达到最高水位Zmax,此后水库水位开始回落。单次调洪计算流程见图2。在单次调洪计算基础上,增加循环,可实现多个起调水位、多条泄流曲线和多场设计洪水等组合调洪计算。

图2 单次调洪计算流程

二分法即一分为二的方法,其基本原理是每次将区间从中间分成两部分,通过求解区间中间值判断函数解所处子区间,然后在对应的子区间中继续查找直至找到目标元素。采用二分法进行迭代计算可提高迭代计算效率。调洪计算涉及迭代计算分为两类:ⓐ水位上涨时段,此时出库流量qt等于最大下泄能力qmax,此时需要试算满足条件的qt,计算流程见图3。ⓑ水库最高水位时刻,此时入库流量Qt=qt=qmax,需在ⓐ的基础上嵌套试算Qt=qt的迭代计算。

图3 二分法迭代计算流程

4 工程应用实例

云南省清水河水库的工程任务以供水和灌溉为主,兼顾发电。根据清水河水库规模和坝型,校核洪水标准为P=0.05%。水库溢洪道共2孔,净宽5m,堰顶高程1386m。

调洪计算采用淤积50年库容曲线,根据淹没赔偿标准和水库防洪标准要求,本次对P=20%、P=5%、P=1%和P=0.05%四个洪水频率分别进行调洪计算。调洪计算原理是基于水量平衡,时段入库水量减时段出库水量等于时段水库蓄水变化量。采用静库容调洪,利用列表试算法进行洪水调节计算。

清水河水库不承担下游防洪任务,泄流设施为闸门控制溢洪道,水库起调水位为正常蓄水位1392m。库水位1392m时水库最大泄流能力为302m3/s,当入库洪水流量小于302m3/s时,按入库流量控泄,库水位保持1392m;当入库洪水流量大于302m3/s时,水库全部敞泄,水库开始滞洪,库水位上升。退水期入库流量小于水库泄流能力,水库又转入控泄阶段,避免对下游形成人造洪峰,库水位逐步降至1392m。利用调洪计算程序进行调洪计算,其校核洪水调洪过程见表1和图4,各频率洪水调洪成果见表2。

表1 校核洪水调洪计算过程

表2 不同频率洪水调节计算成果对比

图4 校核洪水调洪计算过程

采用基于VBA和Excel的水库调洪计算程序,单次调洪计算时长约2s,经对比,计算成果与手动计算成果一致。通过循环计算,可实现多套组合方案快速计算,极大程度提高调洪计算效率。

5 结 语

a.与目前普遍采用的基于Excel的列表试算法调洪计算相比,本计算程序针对调洪计算的特点采用二分法进行迭代计算,可将原单次调洪计算的时间从5~10min降低2s,计算效率显著提高。

b.本计算程序不需要手动设置公式,可有效避免人为错误,且易于拓展,通过循环计算可同时计算多套组合方案,通过Excel可直观便捷地输出成果图表。

c.通过云南清水河水库等工程实际应用,证实本程序计算成果与手动计算成果一致,可满足工程应用要求。

猜你喜欢
调洪二分法库容
基于二进制/二分法的ETC状态名单查找算法
“二分法”求解加速度的分析策略
“二分法”求解加速度的分析策略
估算的妙招——“二分法”
玛纳斯河山区——平原水库调洪过程及水位流量关系分析
全省已建成水库总库容
月潭水库防洪库容的确定
某尾矿库调洪安全研究
调洪演算解析解法
零库容梯级电站联合调控策略研究