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