張躍馳 龐金龍
(中水北方勘測(cè)設(shè)計(jì)研究有限責(zé)任公司,天津 300222)
在水庫(kù)規(guī)劃設(shè)計(jì)階段,開展水庫(kù)調(diào)洪計(jì)算,主要是為了配合樞紐布置中泄洪建筑物形式、尺寸的選擇及確定滿足工程安全的防洪特征水位、最大下泄流量等指標(biāo)。目前水庫(kù)調(diào)洪計(jì)算主要利用Excel及其迭代計(jì)算功能實(shí)現(xiàn),需要手動(dòng)輸入公式并人工查找起蓄時(shí)刻和最高水位時(shí)刻,操作煩瑣,易于出錯(cuò)且計(jì)算效率低。為提高調(diào)洪計(jì)算效率和準(zhǔn)確性,本文在Excel開發(fā)環(huán)境的基礎(chǔ)上,利用VBA編程語言開發(fā)調(diào)洪計(jì)算自動(dòng)化程序,僅需輸入基礎(chǔ)參數(shù)即可實(shí)現(xiàn)多套方案的快速計(jì)算。
調(diào)洪計(jì)算屬于入庫(kù)和出庫(kù)水量平衡的計(jì)算問題,其計(jì)算原理可用圣維南方程組表示。但圣維南方程組在應(yīng)用于水庫(kù)調(diào)洪計(jì)算中,常需要做一定的簡(jiǎn)化,一般簡(jiǎn)化為以下公式進(jìn)行計(jì)算:
(1)
q=f(V)
(2)
式中Q1、Q2——計(jì)算時(shí)段初、末的入庫(kù)流量,m3/s;
q1、q2——計(jì)算時(shí)段初、末的出庫(kù)流量,m3/s;
V1、V2——計(jì)算時(shí)段初、末的水庫(kù)蓄水量,m3;
Δt——計(jì)算時(shí)段,s。
式(1)實(shí)際是水量平衡方程,即在一個(gè)計(jì)算時(shí)間段中,入庫(kù)水量與下泄水量之差即為該時(shí)段中水庫(kù)蓄水量的變化。式(2)為水庫(kù)下泄流量與庫(kù)容關(guān)系的曲線,取決于泄水建筑物的布置型式和尺寸等。
調(diào)洪計(jì)算方法有很多種,我國(guó)常用的是列表試算法和半圖解法。半圖解法通過與水庫(kù)水位建立函數(shù)關(guān)系,利用圖解代替試算,可有效降低計(jì)算量,是手動(dòng)調(diào)洪計(jì)算的一種有效方法。隨著計(jì)算機(jī)技術(shù)的發(fā)展,雖然列表試算法計(jì)算量較大,但便于通過計(jì)算機(jī)編程實(shí)現(xiàn),是目前水庫(kù)規(guī)劃設(shè)計(jì)階段最普遍采用的計(jì)算方法。
列表試算法基本步驟如下:
a.引用某一場(chǎng)次設(shè)計(jì)洪水過程線,選取計(jì)算時(shí)段Δt和入庫(kù)流量Q1,Q2,Q3,…。
b.確定調(diào)洪起調(diào)水位Z0、起調(diào)庫(kù)容V0、泄流曲線q泄=f(Z)、庫(kù)容曲線Z=f(V)等基礎(chǔ)參數(shù)。
c.試算出庫(kù)流量qt對(duì)水量平衡方程進(jìn)行求解,判斷其與入庫(kù)流量Qt和下泄能力q泄t的關(guān)系。
d.不斷試算qt直至得到滿足設(shè)定條件的解,同時(shí)計(jì)算蓄變量ΔVt時(shí)段末水位Zt、時(shí)段末庫(kù)容Vt等。
e.繼續(xù)計(jì)算下一時(shí)段,直至計(jì)算完整場(chǎng)洪水,累加ΔVt即得到調(diào)洪所需庫(kù)容,過程最高水位即為相應(yīng)場(chǎng)次洪水最高壩前水位。
目前,水庫(kù)調(diào)洪計(jì)算普遍采用Excel軟件及其迭代計(jì)算功能實(shí)現(xiàn),由于設(shè)計(jì)洪水過程線一般以小時(shí)為時(shí)段,為保證計(jì)算精度,水庫(kù)水位起漲時(shí)刻和最高水位時(shí)刻需線性插值得到,此步驟需要手動(dòng)操作,耗時(shí)較長(zhǎng),且每次只能完成單獨(dú)一組基礎(chǔ)參數(shù)的調(diào)洪計(jì)算,對(duì)于需要多個(gè)起調(diào)水位、多個(gè)頻率洪水及多條泄流曲線比選時(shí),此方法耗時(shí)較長(zhǎng),且容易出錯(cuò)。
VBA是由Visual Basic發(fā)展而來的一種宏語言,一般依附于如Excel等Office的應(yīng)用程序中,用于拓展應(yīng)用程序的功能,得益于VBA與主應(yīng)用程序的這種依附關(guān)系,其與主程序之間的通信簡(jiǎn)單且高效。并且VBA提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,提供了相當(dāng)完整的程序設(shè)計(jì)語言,結(jié)合其強(qiáng)大的宏錄制功能,利用VBA可以在Excel內(nèi)輕松開發(fā)出功能強(qiáng)大的自動(dòng)化計(jì)算程序。
與僅利用Excel迭代功能進(jìn)行調(diào)洪計(jì)算相比,利用VBA開發(fā)通用的調(diào)洪計(jì)算程序,可結(jié)合調(diào)洪計(jì)算的特點(diǎn)開發(fā)更有針對(duì)性的計(jì)算函數(shù),并通過循環(huán)實(shí)現(xiàn)多套組合方案的快速調(diào)洪計(jì)算,同時(shí)輸出計(jì)算成果圖表到Excel中,操作簡(jiǎn)單,基本不需要額外的學(xué)習(xí)成本即可掌握,可有效提高調(diào)洪計(jì)算的效率和準(zhǔn)確性。
調(diào)洪計(jì)算程序開發(fā)以Excel和VBA開發(fā)環(huán)境為基礎(chǔ),采用面向?qū)ο蟮木幊谭椒ā;A(chǔ)類包括插值函數(shù)類和基本參數(shù)類,其中插值函數(shù)類主要解決二元曲線線性插值問題。新編迭代函數(shù),利用二分法解決迭代計(jì)算問題。利用Excel操作界面和新編繪圖函數(shù)完成參數(shù)的輸入和成果的輸出。調(diào)洪計(jì)算程序總體框圖見圖1。
圖1 調(diào)洪計(jì)算程序總體
以單次洪水調(diào)洪過程為例,以入庫(kù)流量和泄流能力為判別條件,逐時(shí)段進(jìn)行調(diào)洪計(jì)算,對(duì)于典型單峰洪水,水庫(kù)起蓄時(shí)刻為入庫(kù)流量與最大泄流能力相等的時(shí)刻,此后入庫(kù)流量大于最大泄流能力,水庫(kù)水位上漲,直至入庫(kù)流量與最大泄流能力再次相等時(shí),水庫(kù)達(dá)到最高水位Zmax,此后水庫(kù)水位開始回落。單次調(diào)洪計(jì)算流程見圖2。在單次調(diào)洪計(jì)算基礎(chǔ)上,增加循環(huán),可實(shí)現(xiàn)多個(gè)起調(diào)水位、多條泄流曲線和多場(chǎng)設(shè)計(jì)洪水等組合調(diào)洪計(jì)算。
圖2 單次調(diào)洪計(jì)算流程
二分法即一分為二的方法,其基本原理是每次將區(qū)間從中間分成兩部分,通過求解區(qū)間中間值判斷函數(shù)解所處子區(qū)間,然后在對(duì)應(yīng)的子區(qū)間中繼續(xù)查找直至找到目標(biāo)元素。采用二分法進(jìn)行迭代計(jì)算可提高迭代計(jì)算效率。調(diào)洪計(jì)算涉及迭代計(jì)算分為兩類:?水位上漲時(shí)段,此時(shí)出庫(kù)流量qt等于最大下泄能力qmax,此時(shí)需要試算滿足條件的qt,計(jì)算流程見圖3。?水庫(kù)最高水位時(shí)刻,此時(shí)入庫(kù)流量Qt=qt=qmax,需在?的基礎(chǔ)上嵌套試算Qt=qt的迭代計(jì)算。
圖3 二分法迭代計(jì)算流程
云南省清水河水庫(kù)的工程任務(wù)以供水和灌溉為主,兼顧發(fā)電。根據(jù)清水河水庫(kù)規(guī)模和壩型,校核洪水標(biāo)準(zhǔn)為P=0.05%。水庫(kù)溢洪道共2孔,凈寬5m,堰頂高程1386m。
調(diào)洪計(jì)算采用淤積50年庫(kù)容曲線,根據(jù)淹沒賠償標(biāo)準(zhǔn)和水庫(kù)防洪標(biāo)準(zhǔn)要求,本次對(duì)P=20%、P=5%、P=1%和P=0.05%四個(gè)洪水頻率分別進(jìn)行調(diào)洪計(jì)算。調(diào)洪計(jì)算原理是基于水量平衡,時(shí)段入庫(kù)水量減時(shí)段出庫(kù)水量等于時(shí)段水庫(kù)蓄水變化量。采用靜庫(kù)容調(diào)洪,利用列表試算法進(jìn)行洪水調(diào)節(jié)計(jì)算。
清水河水庫(kù)不承擔(dān)下游防洪任務(wù),泄流設(shè)施為閘門控制溢洪道,水庫(kù)起調(diào)水位為正常蓄水位1392m。庫(kù)水位1392m時(shí)水庫(kù)最大泄流能力為302m3/s,當(dāng)入庫(kù)洪水流量小于302m3/s時(shí),按入庫(kù)流量控泄,庫(kù)水位保持1392m;當(dāng)入庫(kù)洪水流量大于302m3/s時(shí),水庫(kù)全部敞泄,水庫(kù)開始滯洪,庫(kù)水位上升。退水期入庫(kù)流量小于水庫(kù)泄流能力,水庫(kù)又轉(zhuǎn)入控泄階段,避免對(duì)下游形成人造洪峰,庫(kù)水位逐步降至1392m。利用調(diào)洪計(jì)算程序進(jìn)行調(diào)洪計(jì)算,其校核洪水調(diào)洪過程見表1和圖4,各頻率洪水調(diào)洪成果見表2。
表1 校核洪水調(diào)洪計(jì)算過程
表2 不同頻率洪水調(diào)節(jié)計(jì)算成果對(duì)比
圖4 校核洪水調(diào)洪計(jì)算過程
采用基于VBA和Excel的水庫(kù)調(diào)洪計(jì)算程序,單次調(diào)洪計(jì)算時(shí)長(zhǎng)約2s,經(jīng)對(duì)比,計(jì)算成果與手動(dòng)計(jì)算成果一致。通過循環(huán)計(jì)算,可實(shí)現(xiàn)多套組合方案快速計(jì)算,極大程度提高調(diào)洪計(jì)算效率。
a.與目前普遍采用的基于Excel的列表試算法調(diào)洪計(jì)算相比,本計(jì)算程序針對(duì)調(diào)洪計(jì)算的特點(diǎn)采用二分法進(jìn)行迭代計(jì)算,可將原單次調(diào)洪計(jì)算的時(shí)間從5~10min降低2s,計(jì)算效率顯著提高。
b.本計(jì)算程序不需要手動(dòng)設(shè)置公式,可有效避免人為錯(cuò)誤,且易于拓展,通過循環(huán)計(jì)算可同時(shí)計(jì)算多套組合方案,通過Excel可直觀便捷地輸出成果圖表。
c.通過云南清水河水庫(kù)等工程實(shí)際應(yīng)用,證實(shí)本程序計(jì)算成果與手動(dòng)計(jì)算成果一致,可滿足工程應(yīng)用要求。