基于VBA的大断面水位流量关系计算程序设计与开发
2021-03-10袁超
袁 超
(中国电建集团西北勘测设计研究院有限公司,西安 710065)
0 前 言
水位流量关系是水电站工程设计中关键性的基础工作,计算成果的可靠性对水能计算、枢纽消能防冲、确定机组安装高程、施工设计等方面存在一定影响[1]。由于水工建筑物下游水位流量关系和河道水面线确定失当,导致工程局部破坏甚至危害主体建筑物安全等事故经常发生[2]。水文观测资料证明,河道中任何断面的水位与流量关系,受泥沙淤积、河床冲刷、回水顶托、洪水波涨落等因素影响,都不是单一曲线,而是一多值对应的曲线族[2-3]。国内学者针对水位流量关系曲线计算方法做了大量的研究工作。罗铭等人推导了山区河流水位流量关系曲线计算公式[4]。马经安总结了单一水位流量关系曲线高水延长的常用方法[5]。杨克君等人分析了复式河槽流量计算的各种方法[6]。孙孝波、程银才等人对受洪水涨落影响的水位流量关系单值化方法进行了研究[7-8]。王昕、池宸星、吉辛望等人介绍了计算机软件在水位流量曲线定线方面的应用[9-11]。在水利水电工程前期设计阶段,坝厂址河段尚无水位流量观测资料,常用水力学方法推求坝址断面水位流量关系曲线。大断面测量数据成果存储格式主要为.dwg和.xlsx,横断面形式有单式和复式两种。利用Excel自带功能推求大断面水力参数,计算难度较大,因此,针对Excel表格数据,编制一款单(复)式断面水位流量关系曲线计算程序是十分必要的。本文基于VBA技术,根据曼宁公式进行水位流量关系曲线计算程序设计与开发,为快递、高效计算水利水电工程设计断面水位流量关系曲线提供借鉴。
1 曼宁公式简介
曼宁公式是1889年由美国水利学者曼宁提出的,反映水流与河床的部分关系以及河床内部诸因素间的相互关系[12]。该公式适用于河道顺直、河底平坦、河床冲淤变化小等河槽控制条件好的河段[5]。计算公式为:
式中:Q为断面平均流量,m3/s;V为断面平均流速,m/s;A为过水断面面积,m2;n为河床糙率;R为水力半径,m;S为水面比降。
过水断面面积与水力半径的计算公式如下:
×[L(i)-L(i-1)]
(2)
式中:Z为计算水位,m;L(i)为设计断面起点距,m;H(i)为河底高程,m;X为湿周,m;R为水力半径,m。
2 程序设计
2.1 功能设计
根据水电工程水位流量关系曲线计算要求,进行程序功能设计,具体如下:
(1) 大断面累距和高程数据输入采用Excel数据区域选择方式;
(2) 分单式、复式两种断面形式计算;
(3) 可设置不同水位计算步长;
(4) 可计算给定水位点对应的水力要素;
(5) 水位流量曲线计算成果输出采用Excel表格和图形。
2.2 界面设计
(1) 界面设计基本原则是保持与Excel软件界面风格保持统一,以下拉式菜单的方式嵌入Excel软件,如图1所示。
图1 水位流量关系曲线程序下拉式菜单
(2) 大断面数据(累距和高程)、特征高程点、复式断面左右分界点(累距和高程)的均以数据区域选择的方式输入,其余参数按列表选择框的方式输入,具体见图2。
图2 水位流量关系曲线程序计算界面
(3) 计算结果输出以数据列表和图形的形式展示,数据保存采用Excel表格和图形,具体见图3~4。
图3 水位流量关系曲线程序计算结果图形界面
图4 水位流量关系曲线程序计算结果表格界面
2.3 算法设计
采用曼宁公式计算水位流量关系曲线的编程难点在于给定不同水位下复式断面的水力要素计算,为此采用过程设计思路,将水力要素计算作为一个过程进行封装,参数变量为水位H0、高程H、累距L、过水面积A、河宽W、水力半径R、湿周P,计算过程如下:
SubHp(H0AsVariant,H()AsDouble,l()AsDouble,AreaAsDouble,WidthAsDouble,RadiusAsDouble,PerimeterAsDouble)
DimjAsInteger
DimdAsDouble
Forj= 1ToUBound(H) - 1
IfH(j) >H0AndH(j+ 1) d= (l(j+ 1) -l(j)) * (H0-H(j+ 1))/(H(j) -H(j+ 1)) Area=Area+ 0.5 * (H0-H(j+ 1)) *d Perimeter=Perimeter+ (d^2 + (H0-H(j+ 1))^2)^0.5 Width=Width+d ElseIfH(j) <=H0AndH(j+ 1) <=H0Then d=l(j+ 1) -l(j) Area=Area+ 0.5 * (2 *H0-H(j) -H(j+ 1)) *d Perimeter=Perimeter+ (d^2 + (H(j) -H(j+ 1))^2)^0.5 Width=Width+d ElseIfH(j) d= (l(j+ 1) -l(j)) * (H0-H(j))/(H(j+ 1) -H(j)) Area=Area+ 0.5 * (H0-H(j)) *d Perimeter=Perimeter+ (d^2 + (H0-H(j))^2)^0.5 Width=Width+d EndIf IfPerimeter> 0Then Radius=Area/Perimeter Else Radius= 0 EndIf Nextj EndSub 根据某工程坝址大断面测量资料,数据格式为.xlsx,打开大断面Excel数据表格,通过加载宏添加本程序,在水文工具菜单中选择水位流量关系激活本程序,分别选择大断面累距与高程数据系列,勾选复式断面复选框,并选择左右端点,设置计算步长、糙率、比降等参数,点击计算按钮完成计算,结果图4和图6所示。点击保存按钮,可将计算结果保存为Excel数据表格和图形。与已有计算成果对比,本程序计算结果是准确的。 图5 水位流量关系曲线程序计算结果图形界面 图6 水位流量关系曲线程序计算结果 经实例检验,基于VBA技术开发的大断面水力学参数与水位流量关系曲线计算程序计算结果准确,可用于水电工程设计断面水位流量关系计算。本程序中数据输入、程序计算及成果输出均基于Excel数据表格,具有操作简便、可移植性、计算高效等特点,具有较好的工程实用价值。3 实例验证
4 结 语