張 旭 昇
(甘肅省水利水電勘測設計研究院有限責任公司,蘭州 730000)
在水利工程規劃設計中,已知供水范圍內各供水對象的需水量,確定水庫規模是水庫規劃設計中最常見的工程問題。水庫興利調節計算主要有時歷法、數理統計法等方法,目前水利工程規劃設計中廣泛應用的是時歷法中的長系列法[1-6]。魏超[7]等針對繃線圖解法的計算效率和精度較低的問題,采用程序化的方法,在避免傳統繃線法中繁瑣的繪圖過程同時,提高了計算精度。張李萍[8]等應用MIKE BASIN對杭州市某中型水庫進行興利調度計算,確定水庫灌溉死水位線和發電控制線,得到了滿足興利要求的水平衡結果。楊淼[9]等針對傳統Excel公式編輯復雜、各Excel表格之間的計算公式不具備可移植性,采用VB語言對典型年水庫興利調節進行了程序化初步探討。
采用Excel人工試算和商業軟件MIKE BASIN存在的主要問題包括:①均需人工多次輸入假設興利庫容,不斷重復計算,浪費設計人員寶貴時間和精力;②水庫蒸發滲漏損失采用上一時段蓄水量或不考慮損失條件下蓄水量作為時段平均蓄水量估算,不夠精確;③MIKE BASIN基礎數據輸入和計算成果輸出采用自身數據格式(.dfs0),輸入、輸出效率不高。Excel公式計算條件判斷復雜,可辨識性差,容易出錯。筆者針對上述方法中存在的問題,結合綜合利用水庫長系列法調節計算中多步循環試算特點,基于“二分法”查找算法和水庫規模劃分標準,提出符合水利工程實際的“二分法”迭代試算方法,避免人工試算的盲目性,縮短計算步長,減少計算時間,促進目標函數快速收斂,并將該算法程序化,應用實際工程案例與傳統算法進行比較,證明該計算方法的準確性和高效性。
為滿足多個用水部門不同用水需求,水庫蓄水量變化過程的計算稱為綜合利用水庫興利調節計算,長系列法興利調節計算的基本原理是求解水量平衡方程[10]。計算方法見式(1):
Vi+1=Vi+W來i-∑W用i-W損i
(1)
式中:Vi為水庫第i時段初的蓄水量;Vi+1為水庫第i時末的蓄水量;W來i為第i時段來水量;∑W用i為第i時段各部門用水量之和;W損i為第i時段水庫蒸發、滲漏損失水量之和。
水庫的蒸發損失ΔWi為建庫后增加的水面面積與增加蒸發強度的乘積,見式(2)。建庫后增加的水面面積Fvi由時段平均蓄水量通過庫容曲線查詢得到;增加蒸發強度由當地氣象資料計算得到。水庫滲漏損失按水庫時段平均蓄水量的比例計算;即水庫蒸發滲漏損失均是時段初、末蓄水量Vi+1和Vi的函數,而水庫時段末蓄水量Vi+1是蒸發滲漏損失W損i的函數,只有通過循環迭代,才能準確試算出滿足設計精度的蒸發滲漏損失量和時段末水庫蓄水量。
水庫的蒸發損失計算見式(2):
ΔWi=1 000(E水-E陸)Fvi
(2)
式中:△Wi為建庫后時段i水庫蒸發損失量;E水為水面蒸發量;E陸為陸面蒸發量;Fvi為建庫后時段i增加的水面面積。
綜合利用水庫為多個供水對象進行供水,具有不同供水保證率和破壞深度要求,在進行興利調節計算時,為計算水庫蓄泄過程和各供水對象供缺水量,需要進行多次循環判斷和迭代試算。
結合VB程序設計特點,采用模塊化設計思路。程序主要由函數聲明、數據輸入、水量平衡分析計算、供水保證率統計、計算結果輸出等五部分組成。其中水量平衡分析計算是程序的核心部分,通過引用主要計算函數進行“二分法”查找循環迭代試算,最終確定水庫興利庫容和各變量計算成果。主要程序流程見圖1。

圖1 VB程序流程圖Fig.1 VB program flowchart
綜合利用水庫興利調節計算需要在已知各用戶需水條件下,根據初步擬定的興利庫容進行調節計算,程序按式(1)以總需水量進行供需平衡計算,確定時段i缺水量;時段i缺水量自供水最低級用水戶向最高級用水戶逐級對比,若缺水量小于最低級需水,則最低級用水戶缺水量為時段i缺水值,否則最低級用水戶缺水量等于需水,缺水余值繼續與次低級供水對象需水對比,判斷次低級供水對象缺水量,直至缺水不再有余值,便得到時段i的各個用水戶的缺水量,由需水量與缺水量作差便得到各個用水戶的供水量,且程序實現供水優先序自高級向低級逐級供水;統計非農業用水戶供水滿足的時段個數,農業用水戶供水滿足的年數,便得到相應興利庫容和各個用水戶的供水保證率,重復上述計算,便得到各用水戶興利庫容與供水保證率曲線。
VB程序通過在工程中引用Microsoft Excel類型庫實現(.xls)格式文件訪問,首先在工程選項中通過加載Microsoft Excel 14.0 Object Library(Excel 2010),之后在程序中通過聲明Excel對象,便可在程序中操作Excel,進行數據讀寫。
水庫蒸發滲漏損失應以水庫時段平均蓄水量為計算基礎,因平均蓄水量隨水庫月末蓄水量變化,故需要經過迭代試算最終確定。程序中采用Do Loop While 循環試算實現,計算結束控制條件是計算誤差滿足控制精度。
“二分法”查找又稱折半查找,首先設定查找范圍的上界、下界,每次迭代以上界、下界中間值作為初值,即每次查找即可縮小范圍一半,是一種查找效率較高的算法。



圖2 綜合利用水庫興利調節計算應用程序界面Fig.2 Interface for the program of mass balance equation for multipurpose reservoir
洪水河水庫為《全國中型水庫建設總體安排意見(2013-2017年)》中規劃建設的水庫,目前項目處于初步設計階段。該水庫位于甘肅省酒泉市肅州區的洪水河干流上,是一座綜合利用的水利工程,主要任務是向酒泉市肅州區城市生活及工業供水,向下游洪臨灌區農業灌溉供水。設計城市生活及工業供水保證率P=95%,洪臨灌區滴灌灌溉設計保證率P=90%,渠、管灌灌溉設計保證率P=75%。經項目區供需平衡分析,扣除地下水、泉水等水量后,需要洪水河水庫提供的水量12 926 萬m3,其中城鎮生活及工業2 734 萬m3、農業灌溉10 192 萬m3。洪水河水庫考慮汛期河流來沙量大且集中特點,調度運行方式為水庫六七月敞泄排沙運用,水庫供水但不蓄水,水庫死庫容602 萬m3。
通過水文分析計算得到1970.07-2015.06年歷年逐月入庫徑流過程,實測1∶1 000水庫水位~面積~庫容曲線,分別采用Excel人工試算法和VB程序法進行長系列法興利調節計算。
由計算結果對比(表1和圖3)可知,Excel人工試算法和VB程序計算的興利庫容規模基本一致,興利庫容分別為3 516和3 510 萬m3,相差0.2%;兩種方法計算的水庫多年平均實際供水量為12 496和12 452 萬m3,相差0.3%。通過對比兩種方法庫損計算過程(圖4)可以發現,存在偏差主要是因Excel人工試算法對庫損未進行迭代,導致計算庫損偏大,因而試算出的興利庫容略大于VB程序計算成果。由代表時段水庫蓄水過程對比表(表2)可以看出,在P=95%枯水年份,入庫水量一定條件下,因Excel人工試算法庫損偏大,導致水庫余水變小,水庫蓄水量略小;在P=50%和P=10%豐平水年份,入庫水量充足,因Excel人工試算法V興略大于VB程序法,故其蓄水量略大;連續時段偏枯年份1986.07-1988.06時段、豐平水年份1989.07-1990.06時段仍符合上述規律。綜上所述,水庫興利調節VB程序計算成果合理可靠,且興利庫容和庫損計算成果更精確。

表1 Excel法和VB程序法調節計算成果對比表Tab.1 Comparison between Excel method and VB program method in calculation results

圖3 兩種方法計算水庫供水量對比Fig.3 Comparison of two methods for calculating water supply of reservoir

圖4 兩種方法計算水庫蒸發滲漏損失對比Fig.4 Comparison of two methods for calculating evaporation and leakage loss
本文對綜合利用水庫興利調節計算長系列法程序化進行了初步探討。針對傳統人工試算法效率低、耗時長、可移植性差的特點,在數學“二分法”算法基礎上,結合水利工程實際,實現興利庫容自動快速求解。并以洪水河水庫興利庫容規模確定為例,進行了1970.07-2015.06年長系列綜合利用水庫調節計算,經Excel人工試算法和VB程序計算對比分析,VB程序計算成果可靠,精度高,數據輸入輸出方便,滿足工程規劃設計需要,研究成果可作為今后規劃設計工作的重要計算工具。

表2 代表時段不同方法水庫月末蓄水過程對比表Tab.2 Comparison of reservoir water storage processes at different times in representative periods