黃誠斌 覃錦文
摘 要:在水庫設(shè)計過程中,對水庫進行洪水調(diào)節(jié)計算可以定量地找出入庫洪水、下泄洪水、攔蓄洪水的庫容、水庫水位的變化以及泄洪建筑物型式和尺寸之間的關(guān)系,以便為決定水庫的有關(guān)參數(shù)和泄洪建筑物型式、尺寸等提供依據(jù)。因為其數(shù)據(jù)較為繁多,計算較為復(fù)雜,利用VB語言和VBA語言對列表試算過程進行編程,將計算方法程序化可以快速、準(zhǔn)確地得到設(shè)計洪水位和攔洪庫容。
關(guān)鍵詞:VB;VBA;青山水庫;洪水調(diào)節(jié)
一、引言
查找文獻發(fā)現(xiàn)目前VB與VBA語言結(jié)合使用進行洪水調(diào)節(jié)的例子比較少。本文結(jié)合VB語言和VBA語言將列表試算法程序化從而對洪水調(diào)節(jié)進行計算,最終編程出可以計算不同水庫相似情況下的軟件。該軟件可以在數(shù)據(jù)沒有保存成電子文檔的情況下通過VB的人機交互窗口輸入數(shù)據(jù)從而得到設(shè)計洪水位和攔洪庫容。
二、洪水調(diào)節(jié)計算方法
水庫調(diào)洪計算是在入庫洪水過程及下游允許水庫下泄的最大流量均已知的條件下,推求下泄洪水過程線、攔蓄洪水的庫容和水庫水位的變化。本文主要采用列表計算法進行計算,但是對列表計算法進行了一點改造。
下泄流量與水位的數(shù)據(jù)表格利用最小二乘法對其進行擬合,最終得到一個二次多項式函數(shù)關(guān)系式;用類似的方法也可以得到庫容與水位的二次多項式函數(shù)關(guān)系式。因為水庫調(diào)洪規(guī)則防洪與興利不能結(jié)合,即水庫起調(diào)水位為設(shè)計蓄水位。選取合適的計算時段△t;起始庫水位為Z設(shè),m;按Z設(shè),m,在水位與下泄流量的表格中可以查出閘門全開時相應(yīng)的q,m3/s。通過對時間和入庫洪水流量的前四組數(shù)據(jù)進行擬合可以得到Q,m3/s時對應(yīng)的時間t,h,在t以前,q=Q,且均小于閘門全開時的下泄流量。水庫不蓄水,無需進行調(diào)洪計算。從t時刻起,Q開始大于q,m3/s,水庫開始有蓄水過程。因此,以第t小時為開始調(diào)洪計算的時刻,找到初始的q1和V1。因為洪水在水庫中行進時,水庫沿程的水位、流量、過水?dāng)嗝?、流速等均隨時間而發(fā)生變化,其流態(tài)屬于明渠非恒定流。明渠非恒定流的基本方程是圣維南方程組:連續(xù)性方程
,式中:Q1、Q2分別為計算時段初、末的入庫流量,m3/s;Q為計算時段中的平均入庫流量,m3/s;q1、q2分別為計算時段初、末的下泄流量,m3/s;q為計算時段中的平均下泄流量,m3/s;V1、V2分別為計算時段初、末水庫的蓄水量,m3;△V 為V1和V2之差;△t為計算時段,在這里取6h,即21600s。本文與列表試算法有所不同的地方是先假設(shè)一個q2為0,通過水量平衡方程 可以得到對應(yīng)
的△V,通過V2=V1+△V將V2計算出來,根據(jù)擬合出來的函數(shù)找出對應(yīng)的水位Z2,再由水位Z2通過水位和下泄流量的擬合函數(shù)找到對應(yīng)的下泄流量q2',將q2'與q2進行對比,若二者相差大于0.001則將q2'代入重新計算,直到求得的q2'與q2相差小于0.001停止迭代。將這次計算得到的下泄流量和水位作為下次計算的初值,這樣就可以得到每個時段的水位和庫容,從而得到設(shè)計標(biāo)準(zhǔn)洪水下的設(shè)計洪水位和攔洪庫容。
三、計算機軟件開發(fā)及使用方法
在VB所編寫的軟件中,單擊軟件左邊的按鈕使用InputBox函數(shù)加For循環(huán)將水庫的水位、庫容和下泄流量對應(yīng)的數(shù)據(jù)輸入,然后輸入軟件水庫的設(shè)計蓄水位就可以自動判斷出起算的入庫洪水流量Q1和初始的水庫庫容V1,并將其輸入錄制有宏的EXCEL中。進行洪水調(diào)節(jié)計算時要先找出起算的入庫洪水流量對應(yīng)的時刻t,所以要對時間t和入庫洪水流量Q進行擬合,得出函數(shù)關(guān)系式。因為起算的入庫洪水流量Q1肯定小于最大的入庫洪水流量,為了提高擬合的精度,選擇從0時刻到最大入庫洪水流量對應(yīng)的時刻這幾組對應(yīng)的數(shù)據(jù)進行擬合,擬合出三階多項式,擬合較精確。然后單擊右邊的按鈕利用InputBox函數(shù)將擬合的數(shù)據(jù)輸進去,用VBA語言將擬合函數(shù)求出來,把起算的入庫洪水流量Q1代入便可得到對應(yīng)的時間t1。然后把該時刻以后的時間和入庫洪水流量通過InputBox函數(shù)導(dǎo)入EXCEL,為下一步的列表試算法做準(zhǔn)備。
在EXCEL中,用VBA語言中的LINEST函數(shù)使用最小二乘法(函數(shù)如下圖)對已知數(shù)據(jù)進行擬合,將函數(shù)關(guān)系式求出來從而對一系列數(shù)據(jù)進行計算,并在表格中指定的位置顯示出來。
另外為了讓EXCEL中的宏自動運行,使用了如下代碼:
Private Sub Workbook_BeforClose(Cancel As Boolean)
Call 求橫坐標(biāo)
End Sub
每次EXCEL關(guān)閉前都會先運行一遍名為求橫坐標(biāo)的宏,從而能夠把通過VB導(dǎo)入EXCEL的數(shù)值進行計算,再將結(jié)果自動導(dǎo)出到VB窗口。
四、結(jié)語
本文基于VB語言和VBA語言進行程序設(shè)計,將水庫的洪水調(diào)節(jié)計算過程程序化,把繁雜的計算過程簡單化卻不降低其精度,根據(jù)某水庫的基本資料方便快捷的得到該水庫的設(shè)計洪水位和攔洪庫容。
參考文獻:
[1]顧圣平,田富強,徐得潛,沈冰.水資源規(guī)劃及利用(第二版)【M】.中國水利水電出版社.2009
[2]雷武奎,程富,劉森. Excel VBA 在施工洪水調(diào)節(jié)計算中的應(yīng)用.黑龍江水利科技,2001
作者簡介:
黃誠斌(1997.07.04-)男,漢族,河南省新鄉(xiāng)市,身份證號:410728199707043576,本科生,研究方向:水利水電工程
覃錦文(1995.05.12-)男,漢族,廣西壯族自治區(qū)梧州市,身份證號:45048119950512221X,本科生,研究方向:水利水電工程