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