龔安 姚鑫杰
摘要:針對油臧體積壓裂水平井生產(chǎn)過程中滲吸對采油的影響,設(shè)計實現(xiàn)了一種基于Windows平臺下的油藏體積壓裂下產(chǎn)能系統(tǒng)。基于分形理論和半解析方法,建立了考慮滲吸的多元線性分形模型,采用Visual Studio與MA'rLAB混合編程和多線程技術(shù),實現(xiàn)了項目管理、模型計算、分析對比可視化等功能,并提升了數(shù)據(jù)處理速度。為了提高系統(tǒng)的穩(wěn)定性,減少資源開銷,設(shè)計了系統(tǒng)異常檢測,采用線程池和異步操作。實踐表明,油藏體積壓裂下產(chǎn)能系統(tǒng)作為現(xiàn)代油田開發(fā)技術(shù)的科學(xué)決策工具,在工程和研究中起著重要的作用。
關(guān)鍵詞:油藏;體積壓裂;分形;滲吸;多線程;混合編程
中圖分類號:TP391.9 文獻標(biāo)識碼:A
文章編號:1009-3044(2020)20-0009-04
Design and Implementation of Reservoir Productivity Evaluation System
GONG An. YAO Xin-jie
(College of Computer Science and Technology, China University of Petroleum (East China), Qingda0 2665 80. China)
Abstract: Aiming at the effect of' imhibition on oil recovery during the production of horizontal wells in reservoir volume fracturing,a productivity system under reservoir volume fracturing based on Windc}ws platform is designed and implemented. Based on fractaltheory and semi-analytical method, a multivariate linear fractal model considering imbibition was established. Using Visual Studioand MATLAB mixed programming and multi-threading technology, it realized the functions of project management, model calcula-tion, analysis and comparison visualization and improved data processing speed. In order to improve the stability of the system andreduce resource overhead, the system anomaly detection is designed, using thread pool and asynchronous operation. Practice showsthat the productivity system under reservoir volume fracturing, as a scientific decision tool for modern oilfield development technol-ogy, plays an important role in engineering and research.
Key words: reservoir: volume fracturing; fractal; multithreading; hybrid programming
1背景
隨著國內(nèi)外學(xué)者們不斷深入研究,在油藏體積壓裂水平井中建立體積壓裂水平井多區(qū)復(fù)合流動模型逐漸發(fā)展完善,但是目前的多區(qū)復(fù)合流動模型并不能準(zhǔn)確地描述油藏儲層體積壓裂水平井滲流特征。因此迫切需要提出一個結(jié)合油藏儲層特征和體積壓裂縫網(wǎng)結(jié)構(gòu)的水平井流動模型來描述流體滲流規(guī)律[1]。為了更好地描述油藏體積壓裂水平井生產(chǎn)過程中滲吸對采油的影響,利用油藏工程和數(shù)值模擬方法,考慮滲吸作用下,對油藏縫網(wǎng)條件下產(chǎn)能計算模型進行研究。擬基于多區(qū)耦合的壓裂水平井產(chǎn)能計算流動模型,重新劃分不同流動特征的滲流區(qū)域,考慮引入竄流修正項對滲吸區(qū)域進行精細刻畫,建立綜合考慮啟動壓力梯度以及滲吸機制的多區(qū)耦合滲流數(shù)學(xué)模型[2],對不同因素影響滲吸的機理進行分析,對不同滲吸機制作用下的壓裂水平井產(chǎn)量變化規(guī)律及產(chǎn)能計算進行數(shù)學(xué)建模與軟件研制。針對油藏的特點,本文設(shè)計開發(fā)一種基于Windows平臺的油藏體積壓裂下產(chǎn)能系統(tǒng),為有效評價大規(guī)模體積壓裂改造效果和能量補充效果提供支持。
2油藏體積壓裂下產(chǎn)能系統(tǒng)開發(fā)研究概述
2.1油藏體積壓裂下產(chǎn)能系統(tǒng)開發(fā)任務(wù)
油藏體積壓裂下產(chǎn)能系統(tǒng)一般包括:項目管理子系統(tǒng)、油藏產(chǎn)能計算子系統(tǒng)、可視化子系統(tǒng)。項目管理子系統(tǒng)主要為油藏產(chǎn)能計算提供相關(guān)數(shù)據(jù)。部分油藏數(shù)據(jù)需要進行大量計算才能得到,這不僅需要多次迭代,還要保證一定的精度。項目管理子系統(tǒng)主要包含模塊:項目管理、數(shù)據(jù)參數(shù)等;油藏產(chǎn)能計算子系統(tǒng)是建立在考慮多因素的數(shù)學(xué)模型之上的,通過將一系列的產(chǎn)能計算問題轉(zhuǎn)換為數(shù)學(xué)模型,再通過多種半解析解法,用拉普拉斯變換和迭代法,最終給出近似解析解;可視化子系統(tǒng)主要將通過計算數(shù)學(xué)模型得出的結(jié)果以多種形式并在符合相關(guān)理論的基礎(chǔ)上直觀地展示出來,從而便于觀察、分析、評價。
2.2油藏體積壓裂下產(chǎn)能系統(tǒng)開發(fā)環(huán)境
油藏體積壓裂下產(chǎn)能系統(tǒng)基于Windows操作系統(tǒng),采用MATLAB 2014a、SQL Server 2008關(guān)系數(shù)據(jù)庫管理系統(tǒng)、VisualStudio 2013集成開發(fā)環(huán)境進行開發(fā)[3]。由于產(chǎn)能模型需要大量的計算,所以采用VS與MATLAB混合編程技術(shù),通過將MAT-LAB中的.m文件封裝成DLL文件引入VS中。用戶可以通過安裝對應(yīng)版本的MCRInstaller搭建運行環(huán)境。
3油藏體積壓裂下產(chǎn)能系統(tǒng)設(shè)計
3.1油藏體積壓裂下產(chǎn)能模型
目前大多數(shù)油藏多裂縫水平井模型都是基于經(jīng)典的簡化雙孔介質(zhì)模型[4],但是該模型忽略了滲吸的影響。斷裂體系的分布具有非均勻性、多尺度性、白相似性等特點,模型能否考慮分形和滲吸的影響,對油藏體積壓裂下產(chǎn)能有重要影響??紤]到滲吸現(xiàn)象的影響,本系統(tǒng)開發(fā)采用一種考慮滲吸的多元線性分形油藏模型,它基于分形理論和半解析方法,針對致密儲層的滲流規(guī)律,同時考慮多裂縫水平井在油藏儲層中的流體流動,是一種經(jīng)由實踐檢驗準(zhǔn)確率非常高的計算模型;在該模型中,采用分形理論來描述非均勻性[5]。通過模擬流體的橫向流動規(guī)律,考慮復(fù)雜的縫網(wǎng)和滲吸作用并且用拉普拉斯變換和迭代法給出近似解析解。
3.2系統(tǒng)主要功能設(shè)計
項目管理子系統(tǒng)主要負責(zé)項目文件管理、數(shù)據(jù)參數(shù)存儲與處理。用戶在項目管理子系統(tǒng)中可以對井的數(shù)據(jù)參數(shù)進行增、刪、改、查等操作[6],部分數(shù)據(jù)參數(shù)還可以通過已有的數(shù)據(jù)參數(shù)計算自動獲取。由于數(shù)據(jù)參數(shù)的格式繁多,可能會造成計算結(jié)果偏差、精度不一等問題。針對此類問題,數(shù)據(jù)參數(shù)存儲自動統(tǒng)一格式及精度,便于得到理想的計算結(jié)果。此外,本系統(tǒng)的數(shù)據(jù)參數(shù)除了手動輸入,還支持EXCEL文件導(dǎo)入方式,且集成對數(shù)據(jù)單位格式及精度統(tǒng)一的功能。
油藏產(chǎn)能計算子系統(tǒng)主要利用項目管理子系統(tǒng)中存儲的數(shù)據(jù)參數(shù),通過將在MATLAB環(huán)境下建立的數(shù)學(xué)模型封裝成DLL文件引入VS中作為核心計算組件來計算得到各直井、水平井在不同時間不同條件下的產(chǎn)量,再通過多線程技術(shù)提高計算效率[7-8]。
可視化子系統(tǒng)通過對油藏產(chǎn)能計算子系統(tǒng)計算得到的數(shù)據(jù)進行分析處理,并且應(yīng)用控件、繪圖函數(shù)等進行繪圖,可以為有效評價大規(guī)模體積壓裂改造效果和能量補充效果提供有效支持[9]。該子系統(tǒng)在使用時為了讓用戶更直觀、便捷地觀察、分析油藏直井、水平井在各種條件下的日產(chǎn)量、累產(chǎn)量變化,對油藏產(chǎn)量實現(xiàn)可視化,展示直井日產(chǎn)量變化、直井累產(chǎn)量變化、滲吸作用的直井日產(chǎn)量變化、滲吸作用的直井累產(chǎn)量變化、水平井日產(chǎn)量變化、水平井累產(chǎn)量變化、滲吸作用的水平井日產(chǎn)量變化、滲吸作用的水平井累產(chǎn)量變化、直井壓力變化、無因次化壓力及壓力導(dǎo)數(shù)圖版、無因次化產(chǎn)量及產(chǎn)量導(dǎo)數(shù)圖版、壓力場與壓力梯度場對比界面、產(chǎn)能計算界面、裂縫條數(shù)優(yōu)化界面、裂縫半長優(yōu)化界面、裂縫半長優(yōu)化界面等。
3.3數(shù)據(jù)庫設(shè)計
本系統(tǒng)采用C/S結(jié)構(gòu),即Client/Server(客戶機/服務(wù)器)結(jié)構(gòu)[10-11],主要由數(shù)據(jù)庫服務(wù)器及軟件系統(tǒng)組成。數(shù)據(jù)庫采用微軟公司的SQL Server 2008平臺,它是一種廣泛使用的數(shù)據(jù)庫系統(tǒng),具有強大且便捷的數(shù)據(jù)存儲和管理能力。
油藏數(shù)據(jù)庫的關(guān)系模式如下:
1)油藏項目表:保存油田名稱、項目名稱、區(qū)塊名稱、開始日期、結(jié)束日期、創(chuàng)建人員等,其中項目名稱是主鍵;
2)油井表:保存油田名稱、項目名稱、區(qū)塊名稱、井號等,其中項目名稱為主鍵;
3)直井參數(shù)表:保存直井的項目名稱、起始時間、終止時間、間隔時間、儲層物性參數(shù)、雙重介質(zhì)參數(shù)、滲吸計算參數(shù)、油藏幾何參數(shù)等,其中項目名稱為主鍵;
4)水平井參數(shù)表:保存水平井的項目名稱、起始時間、終止時間、間隔時間、井端距離、段端距離、縫端距離、段數(shù)、簇數(shù)、儲層物性參數(shù)、雙重介質(zhì)參數(shù)、滲吸計算參數(shù)、油藏幾何參數(shù)等,其中項目名稱為主鍵;
5)用戶表:保存登錄賬號、登錄密碼、操作權(quán)限等,其中登錄賬號為主鍵。
4關(guān)鍵技術(shù)
4.1數(shù)據(jù)參數(shù)導(dǎo)入
由于油藏參數(shù)種類繁多,手動輸入?yún)?shù)效率較低,針對該問題,系統(tǒng)設(shè)計了數(shù)據(jù)參數(shù)導(dǎo)入功能。Excel的字段一一對應(yīng)油藏數(shù)據(jù)庫的字段分別進行處理。其工作流程如下:1)打開一個后綴名為.xlsx格式的Excel文件;2)ExCel文件第一行的字段值對應(yīng)油藏數(shù)據(jù)庫表里字段值進行設(shè)定;3)通過調(diào)用函數(shù)建立連接,逐行讀取數(shù)據(jù)。
在數(shù)據(jù)參數(shù)導(dǎo)入模塊中,系統(tǒng)將核心導(dǎo)人操作進行封裝,在導(dǎo)入模塊的.cs文件里進行調(diào)用即可完成數(shù)據(jù)參數(shù)導(dǎo)人,其主要操作如下:
new System. Data. OleDb. OleDbConneCtion(strCon);//根據(jù)鏈接信息實例化鏈接對象
new System. Data. OleDb. OleDbDataAdapter(strCom. Conn);//對數(shù)據(jù)源執(zhí)行的sql語句或存儲過程
myCommand.Fill(ds,"[Sheetl$]");//將Excel文件里的數(shù)據(jù)存儲到內(nèi)存中的緩存
4.2核心計算
油藏體積壓裂下產(chǎn)能模型較為復(fù)雜,其中包含大量的計算(如拉普拉斯變換、偏微分方程組等)和較多且復(fù)雜的數(shù)學(xué)公式[12-13],常用開發(fā)語言較難實現(xiàn),例如:C++、C#、Java,并且這些語言操作較為煩瑣,因此系統(tǒng)的核心計算模塊采用MATLAB實現(xiàn),將.m文件打包封裝成DLL庫混編引入程序,提升產(chǎn)能模型計算效率,更高效地優(yōu)化軟件性能。
4.2.1 MATLAB計算組件
MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計以及必須進行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如C、For-tran)的編輯模式,代表了當(dāng)今國際科學(xué)計算軟件的先進水平。系統(tǒng)的核心計算就是基于MATLAB編寫的,以其中無因次化毛管力計算函數(shù)為例:
function[pcD]= PCD( AA, SWD, BB, sigma, thet, porm, km,qq,vis,kf,h)
pc=AA*SwD^BB*sigma*cos(thet)*(porm/km/10)^0.5;//有因次化毛管力計算
pcD=pc./(qq*vis/kf/h/10);//無因次化毛管力計算
通過在MATLAB環(huán)境下建立復(fù)雜的油藏數(shù)學(xué)模型,從而計算得到數(shù)據(jù)參數(shù)、產(chǎn)能、壓力等數(shù)據(jù)。
4.2.2 VS與MATLAB混編
MATLAB擁有豐富且強大的科學(xué)函數(shù)庫,部分函數(shù)庫在VS集成開發(fā)環(huán)境不具備。因此,通過VS與MATLAB混合編程可以給VS直接提供豐富的科學(xué)函數(shù)庫使用,將VS與MATLAB混合編程可以提高計算速度、提升開發(fā)效率、簡化操作和增加代碼的復(fù)用率。VS與MATLAB混合編程的步驟主要為:
1)在MATLAB中編寫好.m函數(shù);
2)在命令行窗口輸入deploytool命令,選擇Library Compil-er,在DEPLOYMENT中選擇.Net Assembly,添加.m文件并對該封裝命名,在Additional Runtime Settings中選擇對應(yīng)版本的Mi-crosoft Framework.最后點擊Package進行打包封裝得到DLL文件;
3)在開發(fā)項目中通過添加DLL文件的引用,實例化對象后調(diào)用函數(shù)進行操作。
4.2.3多線程技術(shù)
線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源[14],但它可與同屬一個進程的其他線程共享進程所擁有的全部資源[15]。由于線程比進程更小,基本上不擁有系統(tǒng)資源,故對它的調(diào)度所付出的開銷就會小得多,能更高效地提高系統(tǒng)內(nèi)多個程序間并發(fā)執(zhí)行的程度,從而顯著提高系統(tǒng)資源的利用率和吞吐量[16-20]。因此,多線程技術(shù)可以使軟件在處理大規(guī)模數(shù)據(jù)計算時顯著提高運行效率。此外,在設(shè)計與實現(xiàn)過程中,分模塊處理也為多線程操作打下基礎(chǔ)[21]。示例代碼如下:
Thread probar= new Thread(Prcx:essBar);//新建線程,Pro-cessBar必須是無返回值的方法
probar.Start();//開始線程
prohar.lsBackground= true;//設(shè)置為后臺線程
probar.Abort();//終止線程
/*自定義函數(shù)*/
public void ProcessBar()
{
{/*詳細代碼*}
}
4.2.4系統(tǒng)異常檢測
針對油藏體積壓裂下產(chǎn)能系統(tǒng)計算量較大,通過使用記錄消耗的時間來測試性能。當(dāng)計算操作超時,防止系統(tǒng)出現(xiàn)無響應(yīng)或等待時長過長,可以使用線程池提高線程的復(fù)用。為了提高系統(tǒng)的并發(fā)性,采用多線程技術(shù)。但是,創(chuàng)建線程會消耗較大的資源,為了提高系統(tǒng)交互性,系統(tǒng)使用異步操作,特別是在短時間內(nèi)頻繁進行異步操作時,頻繁創(chuàng)建和銷毀線程會造成較多資源的浪費。因此,通過將一些線程存放在線程池中,當(dāng)系統(tǒng)需要新建線程執(zhí)行操作時就可以從已有的線程池中取出一個空閑線程使用。如果線程池中沒有空閑線程,且線程池中的線程數(shù)未達到線程池上限,則新建一個線程,使用完成后再放回到線程池中。這樣可以節(jié)省大量創(chuàng)建線程的資源,通過CLR管理線程池的策略來管理線程池中線程的最大和最小數(shù)。此外,通過全局異常捕捉、UI線程異常捕捉、多線程異常捕捉,記錄異常日志,提供用戶可選擇的異常解決方案。
4.2.5系統(tǒng)繪圖技術(shù)
系統(tǒng)使用了.Net平臺下的開源控件ZedGraph,實現(xiàn)可視化展示的各個模塊。ZedGraph可以通過減少IO的讀寫消耗,從而提高系統(tǒng)性能,且可以動態(tài)生成,不用保存文件。
系統(tǒng)在繪制油藏2D、3D模型及水平井壓力圖、水平井壓力梯度等各種圖時采用了GDI+和MATLAB繪圖技術(shù),通過白定義函數(shù)繪制出所需圖片再經(jīng)由Picturebox控件進行展示。
系統(tǒng)在散點繪圖并渲染成面參考了MATLAB散點插值函數(shù),為了取得更好的插值效果,使用徑向基函數(shù)方法,但其運算量和內(nèi)存需求較大。
動畫展示指定時間段內(nèi)的壓力變化時,僅需調(diào)用System、Windows、rorms、Timer控件,在Timer Tick事件中切換圖片即可實現(xiàn)動畫效果。
5系統(tǒng)實現(xiàn)與應(yīng)用
系統(tǒng)采用Visual Studi0 2013集成開發(fā)環(huán)境和SOL Server2008關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)架構(gòu)采用C/S結(jié)構(gòu)。圖2~圖4分別為壓力場與壓力梯度場對比界面、產(chǎn)能計算界面、裂縫條數(shù)優(yōu)化界面。
6結(jié)束語
本文針對油藏體積壓裂水平井生產(chǎn)過程中滲吸對采油的影響,基于油藏的特點,采用多線程技術(shù)設(shè)計并實現(xiàn)了油藏體積壓裂下產(chǎn)能系統(tǒng)。實際應(yīng)用表明,該系統(tǒng)在理論研究和指導(dǎo)生產(chǎn)實踐中有廣闊的應(yīng)用前景和一定的研究價值。
參考文獻:
[1]Zhu D W, Yang Z M, Wang X W,et al.New productivity eval-uation model for segregated fracturing horizontal well in lowpermeability and tight reservoir[Jj. Electronic Journal of Ceo-technical Engineering, 2013(18Z): 5981-5992.
[2]徐思勇.致密油藏水平井體積壓裂效果影響因素[J].化學(xué)工程與裝備,2018(10): 94-95.
[3]黃文博,燕楊.C/S結(jié)構(gòu)與B/S結(jié)構(gòu)的分析與比較[J].長春師范學(xué)院學(xué)報,2006(8): 56-58.
[4]賈婷,何強,孫明.致密油區(qū)體積壓裂效果分析[J].西安文理學(xué)院學(xué)報(自然科學(xué)版),2017,20(2): 113-116.
[5] Wang Z Y,Yang Z M, Ding Y H,et al.A multi-linear fractalmodel for pressure transient analysis of multiple fractured hori-zontal Wells in tight oil reservoirs including imbibition[Jl.Fractals. 2019. 27(1): 1940004.
[6]趙志升,李桂權(quán).一種基于B/S結(jié)構(gòu)與C/S結(jié)構(gòu)結(jié)合的新體系結(jié)構(gòu)[J]電子技術(shù)應(yīng)用,2004(8): 7-9.
[7]范朝陽,張良駒.多線程程序設(shè)計的概念與應(yīng)用[J].小型微型計算機系統(tǒng),1996(4): 1-6.
[8]駱斌,費翔林.多線程技術(shù)的研究與應(yīng)用[J].計算機研究與發(fā)展,2000,37(4): 407-412.
[9]林旺,范洪富,王志平,等.致密油藏體積壓裂水平井產(chǎn)量預(yù)測研究[J].油氣地質(zhì)與采收率,2018,25(6): 107-113.
[10]陳俊斌.C/S與B/S結(jié)合的軟件體系結(jié)構(gòu)[J].電子技術(shù)與軟件工程,2015(3): 68-69.
[11]張紅瑞,張彥,呂延崗.結(jié)合實例探討C/S和B/S結(jié)構(gòu)的應(yīng)用[J].商場現(xiàn)代化,2009(10): 15-16.
[12]蘇皓,雷征東,張荻萩,等.致密油藏體積壓裂水平井參數(shù)優(yōu)化研究[J].巖性油氣藏,2018,30(4): 140-148.
[13]曾凡輝,郭建春,趙金洲,等.水平井分級壓裂優(yōu)化設(shè)計軟件研制及應(yīng)用[J].石油地質(zhì)與T程,2008,22(1):78-81.
[14]張華,盧慧.多線程技術(shù)在數(shù)據(jù)庫編程中的應(yīng)用[J].計算機與信息技術(shù),2005(8): 54-55.
[15]林恒建.多線程技術(shù)的實現(xiàn)與研究[J].福建電腦,2011,27(11): 109-110.
[16]徐洪斌,蘇鐵熊,董小瑞.多線程技術(shù)及其實現(xiàn)[J].山西電子技術(shù),2003(3): 15-16,27.
[17]鄭宇生,趙長勝.C#多線程編程技術(shù)在數(shù)控測井軟件中的應(yīng)用[J].國外測井技術(shù),2012(4): 71-73.
[18]彭慶喜,陳軍威,周威.基于C#多線程的Web實體抽取設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2013,12(1): 84-86.
[19]崔朝霞,張文婧,張準(zhǔn),等.基于.NET的多線程編程設(shè)計與實現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2014(5): 163.
[20]茅勝榮,肖家文,喬東海.嵌入式C語言中的面向?qū)ο笈c多線程編程[J].單片機與嵌入式系統(tǒng)應(yīng)用,2017,17(5): 22-26.
[21]魏翠,李文全,徐素萍.基于Web的高校貧困助學(xué)管理系統(tǒng)設(shè)計與實現(xiàn)[J].電腦知識與技術(shù),2020,16(12): 90-92.
【通聯(lián)編輯:謝媛媛】
收稿日期:2020-05-08
基金項目:國家油氣重大專項(項目編號:2017ZX05013-001)
作者簡介:龔安(1971-),男,四川巴中人,副教授,碩士生導(dǎo)師,CCF會員(62929M),碩士,研究方向為大數(shù)據(jù)智能處理;姚鑫杰(1996一),男(白族),云南大理人,碩士在讀,研究方向為大數(shù)據(jù)智能處理。