張 旭 昇
(甘肅省水利水電勘測(cè)設(shè)計(jì)研究院有限責(zé)任公司,蘭州 730000)
在水利工程規(guī)劃設(shè)計(jì)中,已知供水范圍內(nèi)各供水對(duì)象的需水量,確定水庫(kù)規(guī)模是水庫(kù)規(guī)劃設(shè)計(jì)中最常見(jiàn)的工程問(wèn)題。水庫(kù)興利調(diào)節(jié)計(jì)算主要有時(shí)歷法、數(shù)理統(tǒng)計(jì)法等方法,目前水利工程規(guī)劃設(shè)計(jì)中廣泛應(yīng)用的是時(shí)歷法中的長(zhǎng)系列法[1-6]。魏超[7]等針對(duì)繃線圖解法的計(jì)算效率和精度較低的問(wèn)題,采用程序化的方法,在避免傳統(tǒng)繃線法中繁瑣的繪圖過(guò)程同時(shí),提高了計(jì)算精度。張李萍[8]等應(yīng)用MIKE BASIN對(duì)杭州市某中型水庫(kù)進(jìn)行興利調(diào)度計(jì)算,確定水庫(kù)灌溉死水位線和發(fā)電控制線,得到了滿足興利要求的水平衡結(jié)果。楊淼[9]等針對(duì)傳統(tǒng)Excel公式編輯復(fù)雜、各Excel表格之間的計(jì)算公式不具備可移植性,采用VB語(yǔ)言對(duì)典型年水庫(kù)興利調(diào)節(jié)進(jìn)行了程序化初步探討。
采用Excel人工試算和商業(yè)軟件MIKE BASIN存在的主要問(wèn)題包括:①均需人工多次輸入假設(shè)興利庫(kù)容,不斷重復(fù)計(jì)算,浪費(fèi)設(shè)計(jì)人員寶貴時(shí)間和精力;②水庫(kù)蒸發(fā)滲漏損失采用上一時(shí)段蓄水量或不考慮損失條件下蓄水量作為時(shí)段平均蓄水量估算,不夠精確;③MIKE BASIN基礎(chǔ)數(shù)據(jù)輸入和計(jì)算成果輸出采用自身數(shù)據(jù)格式(.dfs0),輸入、輸出效率不高。Excel公式計(jì)算條件判斷復(fù)雜,可辨識(shí)性差,容易出錯(cuò)。筆者針對(duì)上述方法中存在的問(wèn)題,結(jié)合綜合利用水庫(kù)長(zhǎng)系列法調(diào)節(jié)計(jì)算中多步循環(huán)試算特點(diǎn),基于“二分法”查找算法和水庫(kù)規(guī)模劃分標(biāo)準(zhǔn),提出符合水利工程實(shí)際的“二分法”迭代試算方法,避免人工試算的盲目性,縮短計(jì)算步長(zhǎng),減少計(jì)算時(shí)間,促進(jìn)目標(biāo)函數(shù)快速收斂,并將該算法程序化,應(yīng)用實(shí)際工程案例與傳統(tǒng)算法進(jìn)行比較,證明該計(jì)算方法的準(zhǔn)確性和高效性。
為滿足多個(gè)用水部門(mén)不同用水需求,水庫(kù)蓄水量變化過(guò)程的計(jì)算稱為綜合利用水庫(kù)興利調(diào)節(jié)計(jì)算,長(zhǎng)系列法興利調(diào)節(jié)計(jì)算的基本原理是求解水量平衡方程[10]。計(jì)算方法見(jiàn)式(1):
Vi+1=Vi+W來(lái)i-∑W用i-W損i
(1)
式中:Vi為水庫(kù)第i時(shí)段初的蓄水量;Vi+1為水庫(kù)第i時(shí)末的蓄水量;W來(lái)i為第i時(shí)段來(lái)水量;∑W用i為第i時(shí)段各部門(mén)用水量之和;W損i為第i時(shí)段水庫(kù)蒸發(fā)、滲漏損失水量之和。
水庫(kù)的蒸發(fā)損失ΔWi為建庫(kù)后增加的水面面積與增加蒸發(fā)強(qiáng)度的乘積,見(jiàn)式(2)。建庫(kù)后增加的水面面積Fvi由時(shí)段平均蓄水量通過(guò)庫(kù)容曲線查詢得到;增加蒸發(fā)強(qiáng)度由當(dāng)?shù)貧庀筚Y料計(jì)算得到。水庫(kù)滲漏損失按水庫(kù)時(shí)段平均蓄水量的比例計(jì)算;即水庫(kù)蒸發(fā)滲漏損失均是時(shí)段初、末蓄水量Vi+1和Vi的函數(shù),而水庫(kù)時(shí)段末蓄水量Vi+1是蒸發(fā)滲漏損失W損i的函數(shù),只有通過(guò)循環(huán)迭代,才能準(zhǔn)確試算出滿足設(shè)計(jì)精度的蒸發(fā)滲漏損失量和時(shí)段末水庫(kù)蓄水量。
水庫(kù)的蒸發(fā)損失計(jì)算見(jiàn)式(2):
ΔWi=1 000(E水-E陸)Fvi
(2)
式中:△Wi為建庫(kù)后時(shí)段i水庫(kù)蒸發(fā)損失量;E水為水面蒸發(fā)量;E陸為陸面蒸發(fā)量;Fvi為建庫(kù)后時(shí)段i增加的水面面積。
綜合利用水庫(kù)為多個(gè)供水對(duì)象進(jìn)行供水,具有不同供水保證率和破壞深度要求,在進(jìn)行興利調(diào)節(jié)計(jì)算時(shí),為計(jì)算水庫(kù)蓄泄過(guò)程和各供水對(duì)象供缺水量,需要進(jìn)行多次循環(huán)判斷和迭代試算。
結(jié)合VB程序設(shè)計(jì)特點(diǎn),采用模塊化設(shè)計(jì)思路。程序主要由函數(shù)聲明、數(shù)據(jù)輸入、水量平衡分析計(jì)算、供水保證率統(tǒng)計(jì)、計(jì)算結(jié)果輸出等五部分組成。其中水量平衡分析計(jì)算是程序的核心部分,通過(guò)引用主要計(jì)算函數(shù)進(jìn)行“二分法”查找循環(huán)迭代試算,最終確定水庫(kù)興利庫(kù)容和各變量計(jì)算成果。主要程序流程見(jiàn)圖1。
圖1 VB程序流程圖Fig.1 VB program flowchart
綜合利用水庫(kù)興利調(diào)節(jié)計(jì)算需要在已知各用戶需水條件下,根據(jù)初步擬定的興利庫(kù)容進(jìn)行調(diào)節(jié)計(jì)算,程序按式(1)以總需水量進(jìn)行供需平衡計(jì)算,確定時(shí)段i缺水量;時(shí)段i缺水量自供水最低級(jí)用水戶向最高級(jí)用水戶逐級(jí)對(duì)比,若缺水量小于最低級(jí)需水,則最低級(jí)用水戶缺水量為時(shí)段i缺水值,否則最低級(jí)用水戶缺水量等于需水,缺水余值繼續(xù)與次低級(jí)供水對(duì)象需水對(duì)比,判斷次低級(jí)供水對(duì)象缺水量,直至缺水不再有余值,便得到時(shí)段i的各個(gè)用水戶的缺水量,由需水量與缺水量作差便得到各個(gè)用水戶的供水量,且程序?qū)崿F(xiàn)供水優(yōu)先序自高級(jí)向低級(jí)逐級(jí)供水;統(tǒng)計(jì)非農(nóng)業(yè)用水戶供水滿足的時(shí)段個(gè)數(shù),農(nóng)業(yè)用水戶供水滿足的年數(shù),便得到相應(yīng)興利庫(kù)容和各個(gè)用水戶的供水保證率,重復(fù)上述計(jì)算,便得到各用水戶興利庫(kù)容與供水保證率曲線。
VB程序通過(guò)在工程中引用Microsoft Excel類(lèi)型庫(kù)實(shí)現(xiàn)(.xls)格式文件訪問(wèn),首先在工程選項(xiàng)中通過(guò)加載Microsoft Excel 14.0 Object Library(Excel 2010),之后在程序中通過(guò)聲明Excel對(duì)象,便可在程序中操作Excel,進(jìn)行數(shù)據(jù)讀寫(xiě)。
水庫(kù)蒸發(fā)滲漏損失應(yīng)以水庫(kù)時(shí)段平均蓄水量為計(jì)算基礎(chǔ),因平均蓄水量隨水庫(kù)月末蓄水量變化,故需要經(jīng)過(guò)迭代試算最終確定。程序中采用Do Loop While 循環(huán)試算實(shí)現(xiàn),計(jì)算結(jié)束控制條件是計(jì)算誤差滿足控制精度。
“二分法”查找又稱折半查找,首先設(shè)定查找范圍的上界、下界,每次迭代以上界、下界中間值作為初值,即每次查找即可縮小范圍一半,是一種查找效率較高的算法。
圖2 綜合利用水庫(kù)興利調(diào)節(jié)計(jì)算應(yīng)用程序界面Fig.2 Interface for the program of mass balance equation for multipurpose reservoir
洪水河水庫(kù)為《全國(guó)中型水庫(kù)建設(shè)總體安排意見(jiàn)(2013-2017年)》中規(guī)劃建設(shè)的水庫(kù),目前項(xiàng)目處于初步設(shè)計(jì)階段。該水庫(kù)位于甘肅省酒泉市肅州區(qū)的洪水河干流上,是一座綜合利用的水利工程,主要任務(wù)是向酒泉市肅州區(qū)城市生活及工業(yè)供水,向下游洪臨灌區(qū)農(nóng)業(yè)灌溉供水。設(shè)計(jì)城市生活及工業(yè)供水保證率P=95%,洪臨灌區(qū)滴灌灌溉設(shè)計(jì)保證率P=90%,渠、管灌灌溉設(shè)計(jì)保證率P=75%。經(jīng)項(xiàng)目區(qū)供需平衡分析,扣除地下水、泉水等水量后,需要洪水河水庫(kù)提供的水量12 926 萬(wàn)m3,其中城鎮(zhèn)生活及工業(yè)2 734 萬(wàn)m3、農(nóng)業(yè)灌溉10 192 萬(wàn)m3。洪水河水庫(kù)考慮汛期河流來(lái)沙量大且集中特點(diǎn),調(diào)度運(yùn)行方式為水庫(kù)六七月敞泄排沙運(yùn)用,水庫(kù)供水但不蓄水,水庫(kù)死庫(kù)容602 萬(wàn)m3。
通過(guò)水文分析計(jì)算得到1970.07-2015.06年歷年逐月入庫(kù)徑流過(guò)程,實(shí)測(cè)1∶1 000水庫(kù)水位~面積~庫(kù)容曲線,分別采用Excel人工試算法和VB程序法進(jìn)行長(zhǎng)系列法興利調(diào)節(jié)計(jì)算。
由計(jì)算結(jié)果對(duì)比(表1和圖3)可知,Excel人工試算法和VB程序計(jì)算的興利庫(kù)容規(guī)模基本一致,興利庫(kù)容分別為3 516和3 510 萬(wàn)m3,相差0.2%;兩種方法計(jì)算的水庫(kù)多年平均實(shí)際供水量為12 496和12 452 萬(wàn)m3,相差0.3%。通過(guò)對(duì)比兩種方法庫(kù)損計(jì)算過(guò)程(圖4)可以發(fā)現(xiàn),存在偏差主要是因Excel人工試算法對(duì)庫(kù)損未進(jìn)行迭代,導(dǎo)致計(jì)算庫(kù)損偏大,因而試算出的興利庫(kù)容略大于VB程序計(jì)算成果。由代表時(shí)段水庫(kù)蓄水過(guò)程對(duì)比表(表2)可以看出,在P=95%枯水年份,入庫(kù)水量一定條件下,因Excel人工試算法庫(kù)損偏大,導(dǎo)致水庫(kù)余水變小,水庫(kù)蓄水量略?。辉赑=50%和P=10%豐平水年份,入庫(kù)水量充足,因Excel人工試算法V興略大于VB程序法,故其蓄水量略大;連續(xù)時(shí)段偏枯年份1986.07-1988.06時(shí)段、豐平水年份1989.07-1990.06時(shí)段仍符合上述規(guī)律。綜上所述,水庫(kù)興利調(diào)節(jié)VB程序計(jì)算成果合理可靠,且興利庫(kù)容和庫(kù)損計(jì)算成果更精確。
表1 Excel法和VB程序法調(diào)節(jié)計(jì)算成果對(duì)比表Tab.1 Comparison between Excel method and VB program method in calculation results
圖3 兩種方法計(jì)算水庫(kù)供水量對(duì)比Fig.3 Comparison of two methods for calculating water supply of reservoir
圖4 兩種方法計(jì)算水庫(kù)蒸發(fā)滲漏損失對(duì)比Fig.4 Comparison of two methods for calculating evaporation and leakage loss
本文對(duì)綜合利用水庫(kù)興利調(diào)節(jié)計(jì)算長(zhǎng)系列法程序化進(jìn)行了初步探討。針對(duì)傳統(tǒng)人工試算法效率低、耗時(shí)長(zhǎng)、可移植性差的特點(diǎn),在數(shù)學(xué)“二分法”算法基礎(chǔ)上,結(jié)合水利工程實(shí)際,實(shí)現(xiàn)興利庫(kù)容自動(dòng)快速求解。并以洪水河水庫(kù)興利庫(kù)容規(guī)模確定為例,進(jìn)行了1970.07-2015.06年長(zhǎng)系列綜合利用水庫(kù)調(diào)節(jié)計(jì)算,經(jīng)Excel人工試算法和VB程序計(jì)算對(duì)比分析,VB程序計(jì)算成果可靠,精度高,數(shù)據(jù)輸入輸出方便,滿足工程規(guī)劃設(shè)計(jì)需要,研究成果可作為今后規(guī)劃設(shè)計(jì)工作的重要計(jì)算工具。
表2 代表時(shí)段不同方法水庫(kù)月末蓄水過(guò)程對(duì)比表Tab.2 Comparison of reservoir water storage processes at different times in representative periods