王锋
(中国水电顾问集团成都院,成都 610072)
FORTRAN语言中文叫公式翻译(FORmula T RANslation)语言,是IBM公司发明的最早的计算机高级语言。从20世纪70年代末起,FORT RAN语言用于PC计算机。Fortran语言是一门适合科学计算和工程分析的程序设计语言[1],尽管其历史悠久,仍可利用它解决工程计算中遇到的繁琐问题。
某工程是一座以航运、发电为主,兼具灌溉和旅游等综合效益的一等枢纽工程,枢纽建筑物主要由船闸、泄洪闸、冲砂闸、河床式电站厂房等组成,有效库容23.92亿m3,设计洪水重现期500年一遇、校核洪水重现期2000年一遇,相应的洪峰流量分别为59700 m3/s、67100 m3/s。5孔冲沙闸单孔净宽16m,总净宽80m,最大闸高55m,均采用宽顶堰,堰顶高程178.00,冲沙闸采用闸室分缝分离式结构,中闸墩厚度为4.2m,左侧边闸墩厚度3.6m,右侧边墩与施工纵向围堰结合左边墙(厚7m)结合。冲沙闸右侧是与施工纵向围堰结合的1孔泄洪闸,泄水孔口宽度为13m,为宽顶堰,堰顶高程183.00m,最大闸高55m。围堰改建泄洪闸右侧布置15孔泄洪闸,单宽13m,孔口总净宽为195m,均为宽顶堰堰,堰顶顶高程181.00m,最大闸高63.5m,采用闸室分缝分离式结构,中墩厚度为3.8m,右侧边墩厚度为3.0m,左侧边墩与施工纵向围堰结合左边墙 (厚5m)结合。
该工程泄流计算具有流量大 (校核洪水=67100 m3/s)、堰顶水深深 (40m左右)、淹没度大、闸孔数多且堰顶高程不同 (3个高程)的特点。泄流计算时,尤其是高水位计算时,淹没度大,淹没系数未知,需要试算求解,而不同堰顶高程对应的上下游水深不同,淹没系数不同,这更加大了手工试算的难度和工作量。现有泄流计算程序,大多都是针对单一堰顶高程编写,本工程不能适用,因此,采用FORTRAN编写一段小程序来解决繁琐的手工计算问题。
计算采用 《水力学》[2]中的宽顶堰流的计算公式
式中σs为淹没系数,查表内插求得,ε1为侧收缩系数,m为流量系数,n为闸孔数,b′为闸孔净宽,g为重力加速度,H为堰顶水头。
泄流计算公式简单,单一堰顶高程高淹没度下的试算也并不复杂,但3个不同堰顶高程的联合泄流试算则因为步骤繁琐而工作量偏大,这恰好是“程序”最擅长的工作。通过简单分解,将计算拆分成几个简单的“函数”,最后通过主程序调用各“函数”计算结果,即可完成一次计算;调整变量(下游水位)后,重复上述过程,得出新的结果。前后两次计算结果差值满足精度要求时,试算完成,进行下一水位试算。计算时,需要输入的数据是闸址下游护坦处的“水位~流量”关系曲线,试算以下游水位为变量,联合泄流总量为计算结果。程序流程简图见下图2:
计算中需要输入、输出的数据均采用dat文件,包括下游水位~流量关系曲线和淹没系数表,输出文件为opt.dat。除主程序采用宽顶堰堰流公式外,下游水位插值和淹没系数插值都为插值运算, 分别对应子函数 f1(x)、 f2(x), 行进流速子函数f3(x)根据上游河床断面和上游水位求解。
本计算以堰顶最低的冲沙闸堰顶水头HS=6m始计算至HS=45m,水位间隔1m。每个水位计算时,上游水位HS确定,假设下游水位为Hx=0.8HS(淹没系数=1),算出枢纽联合泄流总量Q1;根据Q1通过下游水位插值函数f1(x)得出对应下游水位Hx1;又由Hx1通过淹没系数插值函数f2(x),得出冲沙闸、围堰改闸、泄洪闸各自对应的淹没系数σs1、σs2、σs3;将算出的淹没系数带入主程序得出新的泄流总量Q2;试算循环控制根据前后两次计算出的总泄流量差值ΔQ=│Q1-Q2│为控制条件,当ΔQ<1m3/s时,试算结束,进行下一水位试算。
根据水位~流量关系和淹没系数表建立输入文件 swll.dat和 ymxs.dat,输入入口形状系数0.1,运行程序得出泄流计算成果,见表1,表中列出了枢纽闸门全部开启自由出流时,冲沙闸、围堰改闸和泄洪闸在上游水位为184m~222m(间隔1m)时的泄流参数,包括行进水头、淹没系数、下游水位以及各闸段的泄流总量。
图2 泄流计算程序流程简图
表1 泄流计算成果表
随机抽取一个上游水位216m为例,将冲沙闸、围堰改闸、泄洪闸对应侧收缩系数ε1、淹没系数σs和流量系数m代入公式 (1),经验证,总泄量Q为57339.83 m3/s,程序计算结果准确。
根据表1的计算成果,作出本工程的水位-流量曲线见图3。图中上、下两条曲线分别为枢纽上、下游水位-流量曲线,两曲线基本平行,上、下游水位差不大。
现有通用计算程序有时不能满足特殊工程计算需求,当面对复杂的计算时,通过编写小程序进行计算可提高工作效率。类似本工程泄流计算具有高淹没、大流量、多堰高的特点,现有泄流计算程序,大多都是针对单一堰顶高程编写,本工程不能适用。由于涉及3组堰顶高程淹没系数的试算,手工计算繁琐。通过利用Fortran编写小程序进行计算,大大提高计算速度,也为其他类似工程计算积累了经验。
[1]彭国伦.Fort ran 95程序设计 [M].北京:中国电力出版社,2002.
[2]成都科技大学水力学教研室 吴持恭.水力学 [M].北京:高等教育出版社,1995.
[3]中华人民共和国水利行业标准SL265—2001,水闸设计规范[S].