基于Python的尾矿库连续实时调洪演算
2024-01-15郑伟鹏袁文君刘光先
郑伟鹏 袁文君 刘光先 杨 生
(1.福建省冶金工业设计院有限公司;2.福建省潘洛铁矿有限责任公司)
尾矿库是矿山重要的生产辅助设施之一,用以堆存矿石选别后排出的尾矿[1]。尾矿库在矿企节约水资源方面起到重要作用,尾矿浆排入尾矿库后,尾砂沉积,水经澄清与净化,可重新回水供选矿厂生产循环利用。然而,尾矿库本身是一个重大危险源,超负荷蓄水会导致尾矿库的安全性受到严重的威胁。尤其是在汛期,不可控的降雨量时常会导致库内水位上涨,安全超高随之减小,干滩长度急剧缩短,尾矿库的安全稳定受到严重威胁。据统计,因洪水原因造成的溃坝事故约占尾矿库溃坝事故的1/3[2]。所以,合理调节库内水位对尾矿库安全度汛尤为重要,一方面既要满足矿山企业生产过程对水资源利用的需求,另一方面要预留足够的调洪库容,以确保尾矿库的安全性。根据《尾矿库安全规程》(GB 39496—2020)要求,生产经营单位每年汛前应委托设计单位根据尾矿库的实际情况进行调洪演算,复核尾矿库防洪能力,确定汛期尾矿库的各类安全运行控制参数[3]。但传统的调洪演算仅针对尾矿库的现状进行,并采用最为保守的限值进行推算,虽然这符合汛期的调洪要求,但在非汛期,传统的尾矿库调洪演算结果很难实时对尾矿库的生产运行起精准指导作用。本文探求基于调洪演算三大控制因素——来洪量、调洪库容、泄流量的时变曲线,借助Python 搭建数学演算模型,实现尾矿库的连续实时调洪演算,指导企业合理调节库内水位、安全超高及干滩长度。
1 传统调洪演算概况
调洪演算是一个复杂的工程计算问题,涉及降雨量、地形地貌、尾矿库堆筑现状、尾矿库排水系统等多方变量。与水库调洪演算不同的是,尾矿坝是随着企业生产时间的推移而不断改变的,其库容始终处于一个多因素影响下的变量,这是尾矿库调洪演算最大的特点,也是连续调洪最大的难点[4]。传统的尾矿库调洪演算常以列表法对某一特定状态下的尾矿库进行计算,其计算过程大致分为以下几个步骤:
(1)依据流域特征、暴雨设计频率等因素采用试错法计算洪峰流量Qm与洪水总量Wm,构建来洪量与时间关系表[5]。
(2)依据尾矿库实际地形图,选取一定间隔等高线,列表计算尾矿库的库容,构建高差与库容关系表。
(3)依据尾矿库排水系统实勘图,计算排洪系统的泄流量,构建高差与泄流量关系表。
(4)依据水量平衡法,采用迭代方式,进行查表调洪演算计算[6]。
列表法是专业人员对尾矿库调洪演算常采用的手算方法,其计算过程中的试错法与迭代法都存在计算量大、计算过程繁琐等问题,且计算过程中采用大量的线性插值,很大程度上降低了计算的准确度[7]。此外,列表计算法仅只能对尾矿库现状进行演算,但尾矿库的运行工况时刻变化,因此,该计算方法和形式对企业的运行管理指导意义不大。针对以上系列问题,寻求新计算法和构建有效数学模型进行调洪演算是十分必要的。
2 三大时变曲线求解
2.1 来洪量时变曲线
尾矿库的降雨在各种降雨因素的影响下,呈现一定的时程分布和空间分布特征,通过对降雨特征的分析,可以概化整个洪水的形成过程,进而绘制洪水过程,拟化相应的来洪量时变曲线[8]。由于受限地域的影响,各地区的降雨特征各不相同,本文以福建省为计算背景。尾矿库一般属于小流域,汇水面积不大,根据福建省地区经验方法,利用华东特小流域法进行洪水计算,符合本地区的地域特征。利用式(1)、式(2)、式(3)可求得来洪的洪峰流量、来洪总量和洪水形状系数。
式中,QP为设计频率P的洪峰流量,m3/s;SP为频率P的暴雨雨力,mm/h;τ为汇流历时,h;n为暴雨递减指数;μ为产流历时内流域平均入渗率,mm/h;F为汇流面积,km2;L为主沟长度,km;J为纵坡坡度,(°);WtP为历时t、频率P的洪水总量,m3;αt为与历时t相应的洪量径流系数;HtP为历时t、频率P的降雨量,mm;γ为洪水形状系数;t为产流历时,h。
根据计算所得的洪水形状系数,对典型过程线进行等比例缩放,可得唯一n阶Gaussian 来洪时变曲线:
式中,Q为来洪量,m3/s;an、bn、cn为常数。
2.2 调洪库容时变曲线
尾矿库的调洪库容用以临时储蓄洪水,在满足防洪要求的前提下保证尾矿库防洪安全,其大小受地形条件、滩面情况、原有蓄水量等多因素影响,呈现复杂多变的特点。目前主流的调洪库容计算方法有方格网法、数字高程模型法、断面法和等高线法[9]。本文以等高线法为例,该计算模型把库容按不同高程面微分成N层梯形体,再利用积分法求得N层梯形体的体积,考虑梯形体的不规则性,计算库容模型简化为一元函数:
式中,V为尾矿库库容,m3;Si为第i根等高线面积,m2;Hi为两等高线之间的高程差,m;h为与起算点之间的高差值,m。
目前全国使用较多的为上游式筑坝法,受逐级筑坝的影响,滩顶高程和干滩坡比不断在变化,其调洪库容也随之发生变化,采用单一元函数仅能描述尾矿库当前现状库容[10]。为实现尾矿库的连续可调洪,依据尾矿库设计文件及现状情况,引入滩顶高程H,分别对不同滩顶高程下的调洪库容进行微元积分计算,得到二元函数族式(6),进而获取调洪库容时变曲线。
式中,H为尾矿库滩顶高程值,m。
2.3 泄流量时变曲线
排水系统的泄流量是排水系统泄水能力的重要指标,泄流量的大小可经由水工实验或者经验计算求得。由于排水系统的排水形式不同,计算方法有所区别,本文以框架式井-洞为例。受限于井-洞内流态复杂多变,在判别上存在一定困难,因此分别计算同一水头下的自由泄流、孔口泄流、半压力流和压力流,取最小值为最终泄流量q[11]。该计算方式偏于保守,但较为安全,符合工程计算要求:
式中,Hy为溢流堰泄流水头,m;Hi为第i层全淹没工作窗口的泄流计算水头,m;Hj为井口泄流水头,m;H为计算水头,为库水位与排水管入口断面中心标高之差,m;Hz为库水位标高与下游水位标高之差,m;nc为同一个横断面上排水口的个数;m为堰流量系数;ε为侧向收缩系数;bc为一个排水井的宽度,m;g为重力加速度,m/s2;ωc为一个排水窗口的面积,m2;ω为井中水深范围内的窗口总面积,m2;ω1为框架立柱和圈梁之间的过水净空总面积,m2;ωs为井口水流收缩断面面积,m2;ωj为排水井井筒横断面面积,m2;d为排水井内径,m;L为排水管计算管段的长度,m;D为排水管计算管段的内径,m;Fs为排水管入口水流收缩断面面积,m2;Fx为排水管下游出口断面面积,m2;Fe为排水管入口断面面积,m2;ζ为排水管局部水头损失系数,包括转角、分叉、断面变化等;ζ2为局部水头损失系数;ζ3为排水井中水流转向局部水头损失系数;ζ4为排水井进口局部水头损失系数;ζ5为框架立柱、横梁局部水头损失系数。
对计算式(7)所得的泄流曲线函数进行拟合,可得唯一n阶Polynomial函数表达泄流时变曲线:
3 Python算法模型构建
3.1 算法原理
水量平衡法是尾矿库调洪演算常用的方法之一,其原理是根据洪水过程、调洪库容、排水系统的泄流量三者进行的水量平衡计算[12]。
水量平衡计算公式如下:
式中,Qs、Qz为时段始、终尾矿库的来洪流量,m3/s;qs、qz为时段始、终尾矿库的泄洪流量,m3/s;Vs、Vz为时段始、终尾矿库的蓄洪量,m3。
传统的尾矿库调洪演算基于水量平衡法采用迭代逼近法计算,其算法非常冗杂和繁琐,且无法获得高精度结果。引入Python语言,借助计算机出色的计算能力,采用反函数求解法,不仅免去了繁琐的计算过程,优化计算速度,同时极大地提高了计算精度。
3.2 算法模型
3.2.1 拓展程库包引入
在Python环境中集成了各类方便应用的算法包,利用现成的包拓展程序算法,可以极大简化程序本体,优化代码的执行效率。本算法引入Sys 库、Math库、Numpy库、Scipy库4种拓展程序库。
Sys模块是一个同Python解释器进行交互的程序包,利用模块接口能方便地访问Python解释器中的各类变量,同时可借助模块函数同解释器做深度交互。因此可利用Sys 程序包从服务器数据库获取实时在线监测滩顶高程与库水位高程数据,用以调洪演算。
Math 模块是Python 的一个数学类函数库,借助Math 库中的各种函数,能够实现绝大数的数学运算,广泛用于数据处理和数学模型的搭建。因此可利用Math程序拓展包来搭建调洪演算数学模型。
NumPy模块是Python的科学计算基础库,主要应用于矩阵与数组的计算或大数据的管理,因此可利用Numpy 库对调洪演算计算过程的多维数组进行数据管理。
Scipy 模块是开源的高级科学计算库,其以Numpy为基础集成数种数学算法和数学模型,能够更加高效便捷地进行数据处理。利用Scipy程序拓展包是调洪演算摆脱传统迭代逼近法,改用反函数求解法的关键。
3.2.2 算法模型建立
调洪演算的Python 算法模型基于水量平衡法建立。根据已计算的来洪量、调洪库容、泄流量3 个函数,结合尾矿库调洪的具体情况,选择合适的数学模型和参数来描述洪水的传播过程。使用Python 编写算法,根据设定的参数和模型方程,模拟尾矿库调洪,并对结果进行评估,最后以可视化形式呈现,以便决策者更直观地理解尾矿库调洪方案的效果和优化建议。编写算法过程中,主要包含以下几个关键步骤:
(1)调取尾矿库在线监测系统获取的滩顶高程与库水位高程数据。
(2)写入来洪量、调洪库容、泄流量三大时变曲线。
(3)确定时间间隔Δt,生成来洪量数据表。
(6)输出调洪演算结果表。
3.2.3 算法拓展
依据《尾矿设施设计规范》,引入最小安全超高和最小干滩长度概念[14]。利用调洪演算计算所得的最高洪水位和尾矿库现状滩顶高程计算安全超高与干滩长度,并与设计规范值进行比较,实现智能化预警[15]。此外,还可以设置虚拟库水位计算步长,借助计算机强大计算能力,对调洪演算函数体进行多次循环计算,获取满足设计洪水要求下的极限库水位运行值,为矿企对库内水位、安全超高及干滩长度的控制提供指导。
4 实例分析
4.1 某尾矿库简介
某尾矿库地处福建,采用上游式尾矿筑坝法,最终堆积标高625 m,总坝高205 m,总库容为4 781.1万m3,有效库容3 346.8 万m3,属二等库。尾矿库主要采用了“排水井-隧洞”排洪。目前,库内沉积滩顶标高520.20 m,干滩长度约450 m,干滩平均纵坡0.8%,正常运行工况下库水位516.16 m。本例调洪演算取600 a一遇(P=0.167%)洪水计算。
4.2 调洪过程与结果
(1)来洪量时变曲线。根据尾矿库所处的地域,结合当地气象数据,利用式(1)~式(3)分别计算洪峰流量、来洪总量和洪水形状系数,并利用式(4)将所得结果函数化,得到来洪时变曲线,如图1所示。
(2)调洪库容时变曲线。依据尾矿库的现状,结合尾矿库的设计资料,利用式(5)、式(6)对尾矿库的库容进行计算,得到调洪库容时变曲线,如图2所示。
(3)泄流量时变曲线。根据现场对尾矿库的排洪构筑物的规格尺寸的测量结果,利用式(7)进行泄流量计算,并根据式(8)进行函数化,得到泄流量时变曲线,如图3所示。
(4)调洪演算结果。经Python 代码程序运算,在滩顶标高520.20 m,库水位标高516.16 m 的工况下,调洪库容55.39 万m3,最高洪水位518.82 m,最大泄流量44.55 m3/s,调洪高度2.66 m,安全超高1.38 m。具体情况如图4所示。
5 结语
尾矿库的调洪演算是尾矿库安全度汛管理中极其重要的一个环节,本研究借助尾矿库在线监测系统获取的实时数据,基于来洪量、调洪库容、泄流量三大时变曲线,利用Python 调洪演算算法,实现尾矿库的实时、连续调洪演算。该连续实时调洪演算能够为矿企在日常运行中对库内水位、安全超高及干滩长度的精准管控提供科学依据,为汛期防洪安全提供保障,对矿企的尾矿库日常安全生产管理具有科学、有效的现实指导意义。