何冬輝
(遼寧東科電力有限公司,沈陽 110006)
天然氣壓縮因子,又稱天然氣偏差系數,指在環境溫度、壓力下,真實氣體在相同條件下所占體積與相同量理想氣體所占體積的比值[1-2]。該參數是天然氣流量計算的最關鍵中間物性參數之一,其計算精度直接影響天然氣流量的計算精度。近年來,隨著燃氣輪機的廣泛應用,天然氣常在非理想氣體工況下(壓力不大于1 MPa,溫度范圍不超過10~20 ℃)傳輸。在非理想氣體工況下,天然氣的流量計算需要在理想氣體狀態方程的基礎上引入壓縮因子。計算機高新技術的發展極大地提高了壓縮因子計算的精度和效率,其中基于AGA8-92DC模型的計算方法得到了國際標準化組織天然氣技術委員會的推薦。AGA8-92DC模型以狀態方程為基礎,因其計算精度較其他方法高而得到了廣泛應用。該文以AGA8-92DC為計算模型,優化壓縮因子迭代算法,采用面向對象編程的C#語言,設計并實現了天然氣壓縮因子計算軟件開發。
美國標準學會以孔板流量計標準AGA No.3報告為基礎,對天然氣壓縮因子開展了深度研究,并發表了基于狀態方程的壓縮因子計算方法的AGA No.8報告,即AGA8-92DC方程。該方程的出發點是:任何天然氣容量性質均可由一組合適的可測定物性值來表征和計算[1]。通過分析試驗氣體摩爾成分超過0.000 05的各種氣體組分,輸入實際工況下的壓力和溫度來計算壓縮因子。該方程的實際應用條件為:輸氣管內氣體絕對壓力為0~12 MPa,溫度范圍為263~338 K,計算結果不確定度約為0.1%。AGA No.8號報告中,以氣體組分成分為基礎進行計算的方程如式(1)所示,以氣體物理特性數據為基礎進行計算的方程如式(2)所示,前者屬于外延式二維維里方程,后者屬于三維維里方程。
(1)
(2)

1.2.1 已知條件
該計算模型通過分析取樣氣體詳細的摩爾分數組成,并根據實際工況壓力、溫度來計算氣體壓縮因子。
已知參數包括氣體實際工況下的氣體摩爾組分數N、絕對壓力p和熱力學溫度T。
氣體摩爾組成以摩爾百分數表示各氣體組分,氣體包括CO2、N2、H2、CO、CH4、C2H6、C3H8、i-C4H10、n-C4H10、i-C5H10、n-C5H12、n-C6H14、n-C7H16、n-C8H18。
氣體各組分的摩爾分數分別表示為Xi,i=1~N。

1.2.2 計算步驟
1)計算第二維里系數B。
(3)
(4)
(WiWj+1-wn)wn
二元參數Eij和Gij,由以下兩式計算得出:
(5)
(6)
(7)
根據式(8)~(11)分別求解混合方程,計算混合物參數U,G,Q,F。
(8)
(9)
(10)
(11)
3)計算混合物體積參數K。
(12)
4)計算對比密度。
摩爾密度為:
ρm=p/(ZRT)
(13)
式中:T為熱力學溫度,K;R為摩爾氣體常數;p為絕對壓力,MPa。
對比密度ρr與摩爾密度ρm相關:
ρr=K3ρm
(14)
5)根據以上計算系數,代入式(1)所示的AGA8-92DC方程,用迭代方法求解天然氣壓縮因子。
根據利用AGA8-92DC模型計算天然氣壓縮因子的過程可看出,運算需要多次運用連加、二重求和甚至三重求和等數學方法,依次計算58種物質的變量狀態方程參數、21種識別組分的特征參數、21種識別組分的二元交互作用參數組[2],求解方程時需多次進行二次插值和迭代計算。計算過程不僅復雜,而且計算誤差大、結果不準確。為解決上述問題,對迭代算法和流程進行全面優化,用弦截法代替牛頓迭代法。弦截法是以牛頓迭代法為基礎,利用差商代替牛頓法中的導數值,通過迭代實現變種及優化的算法,不僅收斂速度快,還避免了復雜計算函數導數值問題。弦截法的核心思想是用切線斜率近似割線斜率[3],與牛頓迭代法相比,其計算量少且條理清晰,便于算法程序開發。
根據式(3)~(12),計算各種輔助參數后,通過迭代計算摩爾密度以得到壓力p2,根據標準中定義將計算流程歸納如下:
1)初始化摩爾迭代計算初值,p1、p2;
2)計算摩爾密度ρn和低階摩爾密度ρn-1;
3)當計算數值與初始值的誤差過大時,迭代計算新的密度ρn+1;
4)重新計算最新密度,然后重復地第2)至4)步,直到計算所得壓力p計算與實測壓力p輸入之差的絕對值小于10-6。
當計算所得壓力與測量壓力之間的誤差小于一定范圍后,即得到壓縮因子的計算值,根據式(1)進行壓縮因子計算,其計算流程如圖1所示。采用AGA8-92DC標準計算天然氣壓縮因子,算法流程主要分為4個步驟:調用已經驗證過的待計算數據并進行初始化操作、輔助參數計算、迭代計算、壓縮因子和密度計算。壓縮因子迭代計算流程中定義狀態參數函數、特征參數函數、二元交互作用參數函數三組結構,分別對應計算標準中變量狀態方程參數、特征參數、二元交互作用參數組。壓縮因子計算初始化過程需校驗相關計算參數數值的合法性,隨后根據AGA8-92DC標準以鍵值數據形式格式化計算參數寄存器以備調用,其詳細工作流程如圖1所示。

圖1 迭代計算流程Fig.1 Flow chart of iterative calculation
壓縮因子迭代計算占用了該算法的主要計算資源,因此消減壓縮因子迭代計算可顯著提高算法的計算效率。主要方式是優化壓縮因子算法中迭代計算流程,通過快速迭代得出滿足|p2-p1|<10-6條件的摩爾密度ρm,使壓縮因子計算算法性能得以提高,其中,p1為實測壓力,p2為計算壓力,由式(15)計算得出。
p2=ρnTRZ
(15)
根據(15)可知,p2是1個關于ρn的函數,可表達為式(16):
p2=p(ρn)
(16)
設f(ρn)是一個關于ρn的函數,且滿足式(17):
f(ρn)=P(ρn)-p1
(17)
根據式(17)可以看出,f(ρn)是1個關于ρn的單調函數,當P(ρ0)=p1時,f(ρ0)=0,那么P(ρn)=p1就是f(ρ0)的根,即式(17)可使用弦截法求解。當P(ρn)=0時,f(ρn)=-p1,-p1<0,那么f(ρn)是一個單調遞增函數。結合式(15)~(17)可知求解|p2-p1|<10-6的過程即等同于求滿足f(ρn)<10-6的pn值。
使用快速收斂的弦截法(見圖2)求式(17)的詳細步驟如下所述。

圖2 弦截法示意圖Fig.2 schematic diagram of secant method
1)根據GBT 17747.2—2011標準可知,0≤ρn≤8,根據ρn范圍,設P(ρ0)=p1即f(ρ0)=0,選取ρ1=0,ρ2=15為迭代初始值,控制精度為10-6。根據式(17)計算f(p1)=f(ρn-1)、f(ρ2)=f(ρn)的值,此時n=2,n-1=1,n+1=3。
2)根據式(17)、(18),分別求解ρn+1及f(ρn+1)的值。
(18)
3)對f(ρn-1)、f(ρn)、f(ρn+1)的值進行判斷。由于f(ρn)是一個單調遞增函數,那么f(ρn-1) ①若f(ρn+1)<0且|f(ρn-1)|>|f(ρn+1)|>10-6,則賦值令n=n、n-1=n+1,重復2)與3); ②若f(ρn+1)>0且|f(ρn)|>|f(ρn+1)|>10-6,則令n=n+1、n-1=n-1,重復2)與3); ③若|f(ρn+1)|<10-6,則停止計算,此時的ρn+1即需要計算的ρm,迭代計算結束。 基于軟件功能需求,采用面向對象程序的C#語言在Visual Studio.NET的WPF框架下對天然氣壓縮因子計算軟件進行設計,實現人機交互可視化界面、輸入輸出數據處理、核心計算動態鏈接庫(Dynamic Link Library,DLL)等模塊的構建。天然氣壓縮因子的計算主要針對實際工況下天然氣的詳細組分進行計算,因此該程序共分為2個部分:人機交互界面部分和核心計算DLL部分。系統界面部分主要負責參數輸入和校驗、核心計算模塊的調用和計算結果的輸出顯示。核心計算DLL部分負責對輸入參數進行計算。系統的計算功能在用戶界面窗口實現,用戶通過界面窗口與系統交互,界面組件接受數據輸入并檢測用戶輸入合法性,輸入非法數據將提示用戶。待數據輸入完整且正確后,點擊“計算”按鈕,系統調用核心計算DLL計算模塊,將最終計算結果綁定到界面組件并輸出顯示。 考慮到壓力和溫度有多種計量單位,為體現交互界面的直觀友好,系統提供多種單位數據輸入模式,用戶可根據實際應用情況選擇。此外,由于天然氣氣體的成分較復雜,為方便用戶使用,把所有組分參數輸入設置在同一個界面上,組分默認值都設為0,用戶可根據計算需要,填入相應的氣體組分。由于每次用戶輸入量較多,系統設置了將用戶的歷次輸入進行自動保存的功能,每次運行時系統會自動調出最近一次的輸入值,也可找出歷史記錄,同時,用戶可根據實際輸入情況進行修改。 以某天然氣的取樣數據為例(見表1),將表中數據輸入軟件界面,點擊“計算”按鈕,便可得出試驗工況和基準工況下的壓縮因子和氣體真實密度,結果如圖3所示。 表1 天然氣取樣組分Table 1 Components of natural gassampling 圖3 實例演算界面Fig.3 Interface of example calculation 以GB/T17747.2附錄C中表C1中的1~6號氣體取樣數據為例[4],應用該軟件對不同工況下多樣本取樣數據進行計算,計算結果如表2所示。與附錄C中表C2所給結果進行對比,結果表明,該軟件計算結果平均誤差幾乎為0,完全能滿足工程實際應用的需要。 表2 計算結果與附錄C中表C2結果的對比分析Table 2 Comparative analysis of calculation results and table C2 in appendix C 1)基于AGA8-92DC計算模型,將求解步驟進行模塊分解,并探討了算法流程,用弦截法對牛頓迭代算法進行優化,全面優化天然氣壓縮因子算法流程,提高了計算效率。 2)根據數學模型和算法流程,基于Visual Studio.NET開發平臺,采用C#語言設計并實現了壓縮因子計算軟件開發,將核心計算模塊封裝成動態鏈接庫形式,便于軟件直接調用,同時將不變量進行緩存并可直接調用,具有良好的擴展性及安全性,便于二次開發,提升了開發效率和計算精度。 3)采用GB/T 17747.2附錄C中的數據對所開發的軟件進行驗證計算,與GB/T 17747.2表C2結果進行對比分析,結果表明,該軟件計算平均相對誤差幾乎為0,能滿足工程實際應用要求。2 軟件開發
2.1 軟件設計
2.2 軟件實現
3 實例應用分析



4 結 語