楊 淼,劉 埔,黃鑫磊,張 凱
(中國(guó)礦業(yè)大學(xué)資源與地球科學(xué)學(xué)院,江蘇 徐州 221008)
河川徑流的劇烈變化,給人類帶來很多不利,如汛期大洪水容易造成災(zāi)害,而枯水期水少,不能滿足興利需要。因此,無論是為了消除或減輕洪水災(zāi)害,還是為了滿足興利需要,都要求采取措施對(duì)天然徑流進(jìn)行控制和調(diào)節(jié)。這種為了除水害,興水利,通過采取人工措施對(duì)天然徑流進(jìn)行的調(diào)節(jié),就稱為徑流調(diào)節(jié)。 而利用水庫,以興利為目的進(jìn)行的徑流調(diào)節(jié)稱為水庫興利調(diào)節(jié)。借助水庫的調(diào)節(jié)作用,通過興利調(diào)節(jié),按用水要求重新分配河流天然徑流,可以協(xié)調(diào)來水與用水在時(shí)間分配和地區(qū)分布上的矛盾,以及統(tǒng)一協(xié)調(diào)各用水部門需求之間的矛盾,對(duì)個(gè)人、集體用水,工業(yè)生產(chǎn)均有著重要的意義。但是水利計(jì)算中的計(jì)算公式通常都比較復(fù)雜,在興利調(diào)節(jié)計(jì)算中,往往需要進(jìn)行大量的運(yùn)算才能得到所需的結(jié)論數(shù)據(jù),如果單純依靠書面計(jì)算,需要耗費(fèi)大量人力物力,不符合現(xiàn)代水文工作的要求。雖然使用 Excel 可以幫助我們完成一部分自動(dòng)計(jì)算工作,但 Excel 畢竟不是專業(yè)的計(jì)算軟件,當(dāng)計(jì)算量和公式復(fù)雜之后,編寫起來十分容易出錯(cuò),且各 Excel 表格之間的計(jì)算公式不具備可移植性,這就導(dǎo)致下次計(jì)算仍然會(huì)出現(xiàn)大量的重復(fù)性工作。
鑒于上述情況,以 Microsoft Visual Basic 6.0 為平臺(tái),結(jié)合 Excel 的報(bào)表功能,通過 VB 與 Excel 相互間數(shù)據(jù)的交互,將 VB 與 Office 結(jié)合。用戶只需按照規(guī)定格式輸入數(shù)據(jù),興利調(diào)節(jié)計(jì)算輸入格式如圖 1 所示,陰影部分為實(shí)測(cè)資料或歷史數(shù)據(jù),空白處即為所需的結(jié)果,利用已經(jīng)寫好的 VB 程序載入數(shù)據(jù)計(jì)算,并將計(jì)算結(jié)果輸出到計(jì)算機(jī)的任意位置。
圖1 興利調(diào)節(jié)計(jì)算輸入格式
興利調(diào)節(jié)計(jì)算的基本原理是水庫的水量平衡,即將整個(gè)調(diào)節(jié)周期劃分為若干個(gè)計(jì)算周期(一般取月或旬),然后按時(shí)歷順序進(jìn)行逐時(shí)段的水庫水量平衡計(jì)算。它是研究天然來水、各部門的用水與水庫庫容 3 者之間的關(guān)系。某一計(jì)算時(shí)段△t 內(nèi)水庫水量平衡方程式為:
式中: △Vi為 △t 時(shí)段內(nèi)水庫的進(jìn)水量;△V0為 △t時(shí)段內(nèi)水庫的出水量;△V 為 △t 時(shí)段內(nèi)水庫水量的凈增量。
根據(jù)河川的徑流特性,徑流調(diào)節(jié)計(jì)算方法可分為 2 大類:1)利用徑流的時(shí)歷特性進(jìn)行計(jì)算的方法,叫做時(shí)歷法。采用按時(shí)序排列的實(shí)測(cè)徑流系列作為入庫徑流過程進(jìn)行水庫徑流調(diào)節(jié)計(jì)算,再將調(diào)節(jié)后的調(diào)節(jié)流量、水庫水位等多年變化情況,繪制成相應(yīng)的頻率曲線,供設(shè)計(jì)選擇,也就是先調(diào)節(jié)計(jì)算后頻率統(tǒng)計(jì)的方法,時(shí)歷法又分為列表法和模擬計(jì)算法;2)利用徑流的統(tǒng)計(jì)(頻率)特性進(jìn)行計(jì)算的方法叫做數(shù)理統(tǒng)計(jì)法。該方法多用于多年調(diào)節(jié)計(jì)算,計(jì)算的結(jié)果直接以調(diào)節(jié)水量、水庫存水量、多余和不足水量的頻率曲線的形式表示出來,然后在進(jìn)行調(diào)節(jié)計(jì)算,也就是先頻率統(tǒng)計(jì)后調(diào)節(jié)計(jì)算的方法。
本文以年調(diào)節(jié)水庫為例,具體說明徑流調(diào)節(jié)時(shí)歷列表計(jì)算方法及其計(jì)算機(jī)自動(dòng)化實(shí)現(xiàn)。
該法是根據(jù)來水量和用水量,計(jì)算余水量和缺水量,再根據(jù)水庫運(yùn)用情況,由逆時(shí)序最大蓄水量法求興利庫容。其計(jì)算步驟如下:1)計(jì)算來水量減去用水量,得出對(duì)應(yīng)時(shí)段的余水量或虧水量;2)求調(diào)節(jié)年的總來水量、總用水量和總余水量;3)求時(shí)段累積余虧水量;4)求不計(jì)損失時(shí)的興利庫容;5)求時(shí)段末蓄水庫容。
水庫對(duì)來水進(jìn)行調(diào)節(jié)以滿足用水要求時(shí),會(huì)同時(shí)產(chǎn)生各種水量損失,因此水庫實(shí)際所需的興利庫容應(yīng)較不計(jì)水利損失計(jì)算的庫容適當(dāng)增大。在考慮水量損失的前提下,可首先不考慮水量損失進(jìn)行計(jì)算,近似求得各時(shí)段的蓄水情況,用各時(shí)段的水庫平均蓄水量(包括死庫容)計(jì)算出各時(shí)段的損失量,然后用考慮損失的水量平衡方程逐時(shí)段進(jìn)行計(jì)算。其計(jì)算步驟如下:1)不計(jì)損失近似求各時(shí)段的蓄水庫容;2)查算水庫時(shí)段平均庫容和水面面積;3)計(jì)算水庫損失水量;4)計(jì)入水庫損失水量求興利庫容;5)計(jì)入損失后月(旬)末庫容;6)確定正常蓄水位。
微軟給我們提供了操作 Office 的頂層對(duì)象,其中操作 Excel 的是 Excel.Application。要使用 VB 讀寫 Excel,首先要在 VB 工程中添加引用:Microsoft Excel x.x Object Library,其中 x.x 表示本計(jì)算機(jī)上Excelv的引用的版本號(hào),如 Office 2000 下的引用版本為 9.0;Office 2003 下的引用版本為 11.0;Office 2007 下的引用版本為 12.0 等。接下來就可以在 VB工程中對(duì) Excel 進(jìn)行操作了。加入的方法是打開項(xiàng)目菜單,選擇添加引用子菜單,在添加引用對(duì)話框的 Com 選項(xiàng)卡下,選中 Microsoft Excel x.x Object Library 后單擊確定。添加引用后就可以在 VB 6.0 中通過相應(yīng)的語句對(duì) Excel 表格進(jìn)行一系列的讀取或?qū)懭氲牟僮鳌?/p>
以本程序?yàn)槔x取 Excel 文件內(nèi)容的部分程序代碼如下:
以本程序?yàn)槔?,寫?Excel 文件內(nèi)容的部分程序代碼如下:
以圖 1 所列數(shù)據(jù)為例,考慮水量損失,利用 VB設(shè)計(jì)的程序來推求年調(diào)節(jié)水庫的興利庫容蓄水量等數(shù)據(jù)。具體操作步驟如下:
1)選擇合適的計(jì)算內(nèi)容和已知數(shù)據(jù)的輸入方式后確認(rèn),如選擇計(jì)水量損失水能計(jì)算,且自動(dòng)載入。
2)打開存貯已知數(shù)據(jù)的 Excel 表格后依次單擊“載入數(shù)據(jù)”、“計(jì)算”、“輸出數(shù)據(jù)”按鈕,選擇存放輸出數(shù)據(jù)的 Excel 表格在電腦中的存放位置后確認(rèn),即輸出 1 個(gè)新的 Excel 文件,該 Excel 文件存貯已知數(shù)據(jù)和要求計(jì)算的全部數(shù)據(jù),流程圖如圖 2 所示。
圖2 興利調(diào)節(jié)計(jì)算實(shí)例流程圖
通過實(shí)例可以知道,使用本方法進(jìn)行水庫的興利調(diào)節(jié)計(jì)算,推求水庫興利庫容蓄水量,將VB 與 Excel 結(jié)合在一起。使用者只需按照規(guī)定格式輸入已知數(shù)據(jù),簡(jiǎn)單的幾個(gè)操作之后,便可輕松求出水庫興利庫容蓄水量等待求參數(shù)。既利用了 Excel的報(bào)表功能,又結(jié)合了計(jì)算機(jī)的計(jì)算能力,節(jié)省了水文工作者計(jì)算過程中耗費(fèi)的寶貴時(shí)間,實(shí)現(xiàn)了興利調(diào)節(jié)計(jì)算過程中的自動(dòng)化操作,符合現(xiàn)代水文高效的工作要求,是水文水利計(jì)算的計(jì)算機(jī)自動(dòng)化的一個(gè)簡(jiǎn)單實(shí)現(xiàn)。
[1]秦虎鋒,唐永芬,王 斌. VB.NET 與 Excel 的數(shù)據(jù)互換[J]. 牡丹江大學(xué)學(xué)報(bào),2009, 18(8): 103-106.
[2]張艷,徐月美,馬海波,等. Visual Basic 程序設(shè)計(jì)教程[M]. 徐州:中國(guó)礦業(yè)大學(xué)出版社,2001.
[3]梁忠民. 水文水利計(jì)算[M]. 北京:中國(guó)水利水電出版社,2006.
[4]胡芳筠,金治華,徐炯鵬. Excel VBA 在水利工程計(jì)算中的應(yīng)用[J]. 工程技術(shù),2009 (19): 60.