趙丹銘, 周偉國, 黃 薇
(同濟(jì)大學(xué)機(jī)械與能源工程學(xué)院,上海201804)
天然氣及其輸配系統(tǒng)已經(jīng)廣泛應(yīng)用到了城市的各個(gè)角落,其設(shè)計(jì)與運(yùn)行管理離不開水力計(jì)算。傳統(tǒng)算法基于基爾霍夫第一、二定律,先把管網(wǎng)結(jié)構(gòu)轉(zhuǎn)化為系數(shù)矩陣,再求解矩陣方程[1-2]。但隨著燃?xì)夤芫W(wǎng)的改擴(kuò)建以及“枝改環(huán)”的不斷推進(jìn),管網(wǎng)結(jié)構(gòu)經(jīng)常變化。同時(shí),用戶的負(fù)荷變化規(guī)律也難以捉摸,還隨時(shí)可能發(fā)生事故,多源、多環(huán)、多級(jí)和多變成為燃?xì)夤芫W(wǎng)新特點(diǎn)[3]。對(duì)于傳統(tǒng)算法[3-4],每次管網(wǎng)結(jié)構(gòu)或工況改變都需要重新分析結(jié)構(gòu)和編號(hào),生成新的矩陣方程并求解,重復(fù)的工作量和計(jì)算量大,且隨著管網(wǎng)的擴(kuò)大,矩陣方程愈發(fā)復(fù)雜難解,分析和計(jì)算更加困難。
近年來,周偉國等人[5]和王海等人[6-7]提出了“面向?qū)ο蟆钡姆椒?,把管網(wǎng)拆解成對(duì)象,再按順序遍歷管網(wǎng),以對(duì)象為單位求解。當(dāng)管網(wǎng)結(jié)構(gòu)變化時(shí),無需重新編號(hào)和求解矩陣方程,工作量大大減少。將各元件的屬性封裝于數(shù)據(jù)庫中,也更能滿足國家對(duì)管網(wǎng)系統(tǒng)信息化科學(xué)管理的要求[8]。本文在此基礎(chǔ)上,用Visual Basic編制了可以實(shí)現(xiàn)水力計(jì)算各類功能的程序,以便更好地適應(yīng)燃?xì)夤芫W(wǎng)的新特點(diǎn)和未來發(fā)展的要求。
將組成管網(wǎng)的元件,如管段、三通等定義為具備各自屬性和方法的“對(duì)象”,分屬不同的類,隨管網(wǎng)用到的元件和結(jié)構(gòu)的變化靈活增減,屬性隨時(shí)調(diào)整,其方法按不同的迭代方式與計(jì)算公式選取,見表1。建立管網(wǎng)數(shù)據(jù)庫,數(shù)據(jù)庫使用Access2010,每類建一個(gè)表,如管段表示例見表2,將各元件賦予唯一編號(hào)并錄入,但與傳統(tǒng)算法不同,無需設(shè)置基準(zhǔn)點(diǎn),也無需將定壓點(diǎn)集中于最后編號(hào)。
程序的算法是基于“面向?qū)ο蟆钡乃枷胗肰B編寫。計(jì)算前,首先在程序中打開數(shù)據(jù)庫文件。然后,
表1 對(duì)象化數(shù)學(xué)模型示例
表2 管段表示例
在主窗口設(shè)置初始參數(shù):氣體的密度、運(yùn)動(dòng)黏度與溫度、大氣壓力與初始?jí)毫?、精度、收斂系?shù)等,主窗體界面截圖見圖1。
① 計(jì)算公式
水力計(jì)算公式見式(1),摩擦阻力系數(shù)計(jì)算公式見式(2)。
(1)
式中p1——管段進(jìn)口節(jié)點(diǎn)的絕對(duì)壓力,kPa
p2——管段出口節(jié)點(diǎn)的絕對(duì)壓力,kPa
L——管段的管長,km
λ——管段的摩擦阻力系數(shù)
qV——標(biāo)準(zhǔn)狀態(tài)下的燃?xì)饬髁浚琺3/h
d——管段內(nèi)直徑,mm
ρ——燃?xì)獾拿芏?,kg/m3
T——燃?xì)獾臏囟?,K
Z——燃?xì)鈮嚎s因子,當(dāng)燃?xì)鈮毫π∮?.2 MPa時(shí),Z取1
T0——標(biāo)準(zhǔn)狀態(tài)下的燃?xì)鉁囟?,K
(2)
式中K——管段的絕對(duì)粗糙度,mm
Re——管內(nèi)流動(dòng)燃?xì)獾睦字Z數(shù)
根據(jù)基爾霍夫第一定律,在每個(gè)節(jié)點(diǎn)處有公式(3):
(3)
式中f(p)——節(jié)點(diǎn)壓力p下算出的節(jié)點(diǎn)處進(jìn)出節(jié)點(diǎn)的流量之和,m3/h
n——與該節(jié)點(diǎn)相連的管段數(shù)量
qV,i——節(jié)點(diǎn)處第i條與該節(jié)點(diǎn)相連管段的流量,m3/h,進(jìn)入節(jié)點(diǎn)的流量取正,離開取負(fù)
qV1——節(jié)點(diǎn)處的流量負(fù)荷,該管網(wǎng)數(shù)據(jù)庫中節(jié)點(diǎn)表中對(duì)應(yīng)節(jié)點(diǎn)編號(hào)的“負(fù)荷”字段下的值,m3/h
根據(jù)牛頓迭代法,存在公式(4):
(4)
式中p′——節(jié)點(diǎn)壓力p的修正值,Pa
p——節(jié)點(diǎn)壓力,Pa
γ——收斂因子,初始取1
f′(p)——f(p)的導(dǎo)數(shù)
收斂因子的迭代式為:
γ=γδ
(5)
式中δ——收斂系數(shù),取0~1范圍的值
公式(5)使用情況見下文“② 算法設(shè)計(jì)”中的第5步。
② 算法設(shè)計(jì)
算法設(shè)計(jì)闡述中,p0為設(shè)置的初始?jí)毫?,p為待求的節(jié)點(diǎn)壓力,qV0為待求的管段流量,p′為壓力p的修正值,f(p)為壓力p下算出的進(jìn)出節(jié)點(diǎn)的流量之和,f(p′)為節(jié)點(diǎn)壓力p′下算出的進(jìn)出節(jié)點(diǎn)的流量之和,ε為2.2節(jié)中設(shè)置的精度。
“面向?qū)ο蟆钡乃惴鞒叹唧w如下。
第1步,按管段編號(hào)順序,根據(jù)2.1節(jié)元件對(duì)象化步驟中輸入的元件屬性和2.2節(jié)管網(wǎng)初始化步驟中設(shè)置的壓力初值p0,按公式 (1) 依次算出管段流量qV,i。
第2步,按節(jié)點(diǎn)編號(hào)順序,根據(jù)公式(3),計(jì)算得到f(p),再依據(jù)公式(4)算出新的節(jié)點(diǎn)壓力p′。
第3步,判斷是否符合收斂條件f(p)<ε,若是,結(jié)束計(jì)算并顯示結(jié)果。若否,進(jìn)行第4步。
第4步,采用p′利用公式(1)~(3)計(jì)算出f(p′),并判斷是否符合收斂條件。若符合收斂條件,結(jié)束計(jì)算并顯示結(jié)果。若不符合收斂條件,繼續(xù)判斷:若f(p′)≤f(p),p′代替p回到第1步開始新的迭代,γ取1;否則,進(jìn)入第5步并循環(huán)直到f(p′)≤f(p)。
第5步,根據(jù)公式(5)和2.2節(jié)管網(wǎng)初始化步驟中設(shè)置的δ值計(jì)算γ,再把算得的新γ代回公式(4)和公式(3)重新計(jì)算p′和f(p′),如此不斷縮小γ值更新p′,直到滿足f(p′)≤f(p)。
本步是為了防止發(fā)散并更快收斂。根據(jù)基爾霍夫第一定律,p為真值時(shí),求得的f(p)為0。
若公式(4)中的γ為0時(shí),p′=p;公式(4)中的γ越接近1,得到的p′離原值p越遠(yuǎn)。
若f(p′)≤f(p),說明迭代得到的p′比原值p更接近真值;若f(p′)>f(p),說明迭代得到的p′遠(yuǎn)離真值,發(fā)散,故δ取0~1范圍的值更新γ重新計(jì)算p′,直到找到比原值p更接近真值的p′,作為新的一輪迭代的初值p。
程序主窗體界面見圖1,分為5個(gè)區(qū)域,頂部第1區(qū)域是工具欄,實(shí)現(xiàn)打開和保存文件,開始、暫停計(jì)算,查看修改數(shù)據(jù)庫和附屬功能。左側(cè)第2區(qū)域是初始參數(shù)設(shè)置區(qū),進(jìn)行計(jì)算前的參數(shù)設(shè)置。中間下半部分第3區(qū)域是管網(wǎng)信息區(qū),顯示元件屬性表。右側(cè)第4區(qū)域是實(shí)時(shí)數(shù)據(jù)區(qū),顯示實(shí)時(shí)計(jì)算時(shí)的殘差和迭代次數(shù)。中間上半部分第5區(qū)域是結(jié)果區(qū),顯示的結(jié)果包括各管段流量和壓力降、各節(jié)點(diǎn)壓力和進(jìn)出口流量和、各環(huán)的壓力降和、迭代次數(shù)、計(jì)算時(shí)間和使用的單位。
可以實(shí)現(xiàn)的附屬功能有:可以導(dǎo)入已有管網(wǎng)數(shù)據(jù)庫數(shù)據(jù),也可以在程序中新建數(shù)據(jù)庫文件;可以進(jìn)行管網(wǎng)信息的查看與編輯,增加刪除數(shù)據(jù)庫中的元件或修改其屬性;可以用不同方法進(jìn)行管網(wǎng)計(jì)算,程序除了面向?qū)ο蠓?,也可用傳統(tǒng)節(jié)點(diǎn)法、環(huán)差法計(jì)算;進(jìn)行結(jié)果的處理與保存,可將計(jì)算結(jié)果保存為word 或excel文件,也可用曲線表示,也可在工具欄“查看”選項(xiàng)下選擇性查看某個(gè)量或改變表示單位;圖片展示,如有管網(wǎng)結(jié)構(gòu)圖,可直接在圖上編號(hào),計(jì)算完成后可在編號(hào)位置顯示結(jié)果。
原始工況管網(wǎng)結(jié)構(gòu)見圖2,1~16表示管段編號(hào),(1)~(13)表示節(jié)點(diǎn)編號(hào),“源”是該系統(tǒng)的供氣源點(diǎn),“匯”則為用戶用氣點(diǎn),實(shí)線箭頭為初設(shè)流向,順流向編號(hào)。工質(zhì)為天然氣,27 ℃等溫穩(wěn)態(tài)流動(dòng)。管段1、6、13和16長3 400 m,其余管段長1 700 m,內(nèi)直徑均為1 000 mm,管材為普通鋼管(絕對(duì)粗糙度取0.05 mm),源匯參數(shù)見表3。計(jì)算步驟見圖3,計(jì)算結(jié)果見圖4~5,管段7、9實(shí)際流向與初設(shè)相反,在圖3中以虛線箭頭表示實(shí)際流向。
圖2 原始工況管網(wǎng)結(jié)構(gòu)
表3 源匯參數(shù)
“面向?qū)ο蟆狈ㄓ?jì)算步驟:
① 元件對(duì)象化:數(shù)據(jù)庫中存入信息,根據(jù)本例的元件類型創(chuàng)建管段、節(jié)點(diǎn)表并錄入對(duì)應(yīng)元件屬性。
② 管網(wǎng)初始化:程序中設(shè)置氣體的密度與運(yùn)動(dòng)黏度、燃?xì)鉁囟扰c大氣壓力、計(jì)算初值與精度,見圖1。
圖3 計(jì)算步驟
圖4~5為本算例利用節(jié)點(diǎn)法、環(huán)差法、面向?qū)ο蠓ǖ挠?jì)算結(jié)果對(duì)比圖。對(duì)于圖5的節(jié)點(diǎn)壓力,面向?qū)ο蠓ㄅc節(jié)點(diǎn)法偏差更小。對(duì)于圖6的管段流量,面向?qū)ο蠓ㄅc環(huán)差法偏差更小。根據(jù)計(jì)算原理,在迭代過程中,節(jié)點(diǎn)法迭代更新的是節(jié)點(diǎn)壓力,故得到的壓力較精確;環(huán)差法則是計(jì)算校正流量迭代更新流量,其流量較精確,所以結(jié)果方面,面向?qū)ο蠓ǖ玫降膲毫Α⒘髁慷几N近較精確的值。
計(jì)算過程方面,節(jié)點(diǎn)法和環(huán)差法都需要先生成整體管網(wǎng)矩陣,再求解方程組,當(dāng)管網(wǎng)某元件發(fā)生改變時(shí),矩陣方程需要全部重新生成,重復(fù)工作費(fèi)時(shí)費(fèi)力,且管網(wǎng)越復(fù)雜,矩陣越大,解法越難,且目前燃?xì)夤芫W(wǎng)不斷擴(kuò)建改建,舊方法適應(yīng)性差。面向?qū)ο蠓▽⒐芫W(wǎng)拆分成元件,不僅避免求解方程組,而且在元件改變時(shí)只要修改個(gè)別屬性,靈活性和效率更高,更適用于目前燃?xì)夤芫W(wǎng)的特點(diǎn)。
圖4 算例節(jié)點(diǎn)壓力計(jì)算結(jié)果
圖5 算例管段質(zhì)量流量計(jì)算結(jié)果
添加17~22管段見圖6,具體增加與修改元件情況分別見表4、5。在管網(wǎng)結(jié)構(gòu)改變后,節(jié)點(diǎn)法和環(huán)差法都要重新編號(hào),重錄元件屬性,環(huán)差法還需重新按連續(xù)性方程分配所有管段初始流量。面向?qū)ο蠓▌t直接添加管段17~22和節(jié)點(diǎn)(14)~(17),并將管段4、8、10、14管長修改為850 m,出口分別改成節(jié)點(diǎn)(14)、(15)、(16)、(17),見表4。計(jì)算結(jié)果見圖7、8。圖6中實(shí)線為設(shè)計(jì)流向,虛線為實(shí)際流向。
圖6 添加元件工況下管網(wǎng)結(jié)構(gòu)
表4 增加元件后導(dǎo)致的修改元件情況
表5 增加元件情況
圖7 添加元件工況下的節(jié)點(diǎn)壓力
圖8 添加元件工況下的管段質(zhì)量流量
實(shí)際管網(wǎng)還可能改建或發(fā)生故障,以氣源2發(fā)生故障且管段9、13、14斷開為例(見圖9),節(jié)點(diǎn)法和環(huán)差法仍要全部重新生成矩陣,面向?qū)ο蠓ㄖ苯觿h除管段9、13、14和節(jié)點(diǎn)(2)、(10),刪除元件工況下的節(jié)點(diǎn)壓力和管段質(zhì)量流量分別見圖10、11。
圖9 刪除元件工況下管網(wǎng)結(jié)構(gòu)
圖10 刪除元件工況下的節(jié)點(diǎn)壓力
圖11 刪除元件工況下的管段質(zhì)量流量
上述各工況中的環(huán)見圖12,環(huán)的各節(jié)點(diǎn)見表6。
圖12 各工況中的環(huán)
表6 環(huán)的各節(jié)點(diǎn)構(gòu)成
環(huán)閉合差即封閉環(huán)狀管網(wǎng)壓力降的代數(shù)和,根據(jù)基爾霍夫第二定律,各環(huán)路環(huán)閉合差應(yīng)為0。在管網(wǎng)水力計(jì)算中,常用公式(6)驗(yàn)證環(huán)閉合差是否滿足要求,小于10%即可。3種工況(原始工況、添加元件工況、刪除元件工況)的環(huán)閉合差計(jì)算結(jié)果見表7。對(duì)比可知,面向?qū)ο蠓ㄓ?jì)算結(jié)果最小,比傳統(tǒng)算法(節(jié)點(diǎn)法、環(huán)差法)更準(zhǔn)確。
(6)
式中H——環(huán)閉合差
m——環(huán)包含的管段數(shù)
Δpi——管段i進(jìn)出口節(jié)點(diǎn)壓力平方差
表7 3種工況(原始工況、添加元件工況、刪除元件工況)的環(huán)閉合差
本文針對(duì)目前燃?xì)夤芫W(wǎng)多源、多環(huán)、多級(jí)和多變的新特點(diǎn),基于“面向?qū)ο蟆钡乃枷?,使用Visual Basic軟件編制了燃?xì)夤芫W(wǎng)水力計(jì)算程序,并結(jié)合算例在軟件操作和數(shù)據(jù)結(jié)果方面與傳統(tǒng)算法(節(jié)點(diǎn)法、環(huán)差法)進(jìn)行了對(duì)比。
軟件操作方面,管網(wǎng)結(jié)構(gòu)改變時(shí),面向?qū)ο蠓ㄖ苯釉鰟h相應(yīng)元件或修改個(gè)別元件屬性即可直接計(jì)算。節(jié)點(diǎn)法和環(huán)差法則需要重新編號(hào),并保證定壓點(diǎn)集中在最后編號(hào)且基準(zhǔn)點(diǎn)編號(hào)最大,還要重輸元件屬性,再生成新的系數(shù)矩陣后求解方程組。環(huán)差法還需按連續(xù)性方程重新分配流量初值,而且每次管網(wǎng)改變傳統(tǒng)算法都要重復(fù)以上步驟,故面向?qū)ο蠓ú僮鞲雍啽憧焖佟?/p>
數(shù)據(jù)結(jié)果方面,首先,3種算法在3種工況(原始工況、添加元件工況、刪除元件工況)下的環(huán)閉合差都滿足要求,且面向?qū)ο蠓ㄗ钚?,更?zhǔn)確。其次,在節(jié)點(diǎn)壓力的計(jì)算結(jié)果上,面向?qū)ο蠓ㄅc節(jié)點(diǎn)法偏差更小,而管段流量結(jié)果面向?qū)ο蠓ㄅc環(huán)差法偏差更小。根據(jù)計(jì)算原理,在迭代過程中,節(jié)點(diǎn)法更新的是節(jié)點(diǎn)壓力,故得到的壓力較精確,環(huán)差法則是計(jì)算校正流量更新流量,其流量較精確,所以面向?qū)ο蠓ǖ墓?jié)點(diǎn)壓力、管段流量計(jì)算結(jié)果都更貼近較精確的值。
因此,本文設(shè)計(jì)的“面向?qū)ο蟆钡墓芫W(wǎng)水力計(jì)算算法和編制的程序比傳統(tǒng)方法更精確,操作更方便,更能適應(yīng)未來燃?xì)夤芫W(wǎng)的發(fā)展需求。