李仁忠



關(guān)鍵詞:壓裂設(shè)計;深度剖面;井筒;可視化;PyQtGraph
頁巖氣分布廣泛,開發(fā)潛力巨大,是常規(guī)石油天然氣的理想接替能源。近年來,頁巖氣在非常規(guī)天然氣中的異軍突起已成為全球油氣資源勘探開發(fā)的新亮點(diǎn),并逐步向全方位的變革演進(jìn),世界主要資源國都加大了對頁巖氣的勘探開發(fā)力度[1]。但是,頁巖氣成藏規(guī)律、儲集空間、滲流規(guī)律以及開發(fā)模式有其自身特點(diǎn),特別是儲層具有低孔特征和極低的基質(zhì)滲透率, 給有效開發(fā)帶來很大的困難和挑戰(zhàn)。研究表明,水平井是頁巖氣藏的最佳開發(fā)方式,而分段壓裂是水平井的關(guān)鍵配套技術(shù)[2]。分段壓裂工藝通過使用橋塞、射孔槍以及連續(xù)油管等工具輔助,在地層產(chǎn)生裂縫網(wǎng)絡(luò),盡可能提高水平井的產(chǎn)能[3]。
壓裂設(shè)計,是壓裂施工前一項(xiàng)十分重要的工作。它根據(jù)已知的井筒條件(水平段長度、套管接箍深度、地質(zhì)層位、地層特性等)確定井筒各段的劃分、射孔簇位置、橋塞位置,制定泵注程序、液體用量、施工步驟等內(nèi)容[4]。以往的工作中,所有的設(shè)計結(jié)果均是以數(shù)據(jù)表格的方式呈現(xiàn),如套管接箍數(shù)據(jù)表、分段數(shù)據(jù)表、射孔數(shù)據(jù)表等,形式單一,不夠直觀,也不利于發(fā)現(xiàn)設(shè)計隱患。因此,對水平井井筒剖面進(jìn)行可視化研究,直觀呈現(xiàn)井下各種設(shè)計元素的相對位置與關(guān)系,對減少設(shè)計失誤、避免工程事故,具有非常重要的現(xiàn)實(shí)意義。
1 井筒剖面可視化研究
1.1 目標(biāo)
井筒剖面可視化涉及的內(nèi)容非常廣泛,包括井筒、套管、水泥環(huán)、地層、井眼軌跡等內(nèi)容,需要的數(shù)據(jù)量非常大[5]。為了突出主要矛盾、簡化工作量,本文僅針對壓裂設(shè)計過程中涉及的水平段的套管接箍數(shù)據(jù)、射孔數(shù)據(jù)、分段數(shù)據(jù)、橋塞深度數(shù)據(jù)等內(nèi)容進(jìn)行處理,形成按空間實(shí)際位置進(jìn)行圖形顯示的效果[6]。由于水平井的水平段長度一般都達(dá)到了幾千米,相對于井筒直徑100多毫米來說,井筒是一個又細(xì)又長的管子。因此,可視化研究非常重要的一項(xiàng)功能就是:形成的井筒剖面圖形必須要具備平移、縮放等功能,這樣才能讓使用者既了解全貌,又能細(xì)查局部,像查看電子地圖一樣查看井筒內(nèi)部各元素的位置、有效長度、相對關(guān)系等情況,將數(shù)據(jù)表格的內(nèi)容,變成二維剖面的圖形。
1.2 編程語言的選擇
通過對比C++、Java、Python、JavaScript 等各種編程語言在圖形化方面的功能與效果,最終選擇了Py?thon作為軟件的基礎(chǔ)框架。Python語言是一種語法簡潔易懂,編程速度快、容易學(xué)習(xí)、擴(kuò)展功能強(qiáng)的解釋型語言。其應(yīng)用領(lǐng)域涵蓋Web網(wǎng)站、自動化、爬蟲、圖形界面、數(shù)據(jù)分析、圖像處理、科學(xué)計算、游戲、人工智能等。由于Python語言的簡潔性、易讀性、可擴(kuò)展性,以及免費(fèi)、開源的特點(diǎn),國內(nèi)外使用Python語言的人越來越多,目前已經(jīng)成為編程領(lǐng)域的第四大語言[7]。
1.3 圖形模塊的選擇
Python語言的本身的功能不算強(qiáng)大,但是依托其開源及可擴(kuò)展性,全世界的程序員們?yōu)槠溟_發(fā)了20多萬種模塊(第三方庫),各種功能應(yīng)有盡有,形成了一個龐大的生態(tài)系統(tǒng)。Python中能夠?qū)崿F(xiàn)圖形輸出的模塊較多,應(yīng)用較廣的有Pyecharts、Matplotlib、tkinter、PyQtGraph、Turtle等,通過對比其功能與效果,最終選擇了PyQtGraph模塊作為實(shí)現(xiàn)手段。PyQtGraph是一種功能強(qiáng)大的2D/3D繪圖庫,支持Linux、Windows和OSX系統(tǒng)。雖然該庫完全用Python編寫,但因其內(nèi)部使用了Qt的GraphicsView框架及Numpy計算庫,使其在圖形繪制及數(shù)據(jù)處理速度方面有著極其優(yōu)異的表現(xiàn),特別適合于實(shí)時數(shù)據(jù)采集和動態(tài)圖形繪制場合[8]。
使用PyQtGraph設(shè)計繪圖功能,無須進(jìn)行人機(jī)交互的設(shè)計,因?yàn)榻换スδ芤呀?jīng)集成在模塊內(nèi)部了,省卻了許多精力。編程的重點(diǎn)在于數(shù)據(jù)的準(zhǔn)備,即各種參數(shù)與深度的映射關(guān)系,這是研究的核心。而將數(shù)據(jù)輸出到圖形,僅僅需幾行語句(見圖1) ,以最小的工作量實(shí)現(xiàn)了數(shù)據(jù)的可視化。
1.4 實(shí)現(xiàn)過程
第一步,準(zhǔn)備數(shù)據(jù)。將壓裂設(shè)計中采集到的套管接箍數(shù)據(jù)表、射孔數(shù)據(jù)表、分段數(shù)據(jù)表(含橋塞深度),整理后分別另存為.csv數(shù)據(jù)文件。用文本編輯器檢查.csv文件格式,將其中文件末尾的空白行、空字符串等內(nèi)容刪除。
第二步,軟件讀取以上數(shù)據(jù),根據(jù)其各自的深度范圍,確定一個合適的深度上界與深度下界,將上述深度范圍涵蓋其中,一般將分段范圍的頂部與底部各外延50m,以便圖形更加美觀。
第三步,從深度上界開始,到下界結(jié)束,以0.1m為增量,使用循環(huán)語句,生成類似于測井?dāng)?shù)據(jù)的井筒深度剖面數(shù)據(jù)。數(shù)據(jù)的第1列為深度值,第2列為接箍深度值,第3列為射孔深度值,第4列為橋塞深度值,第5列為分段深度值。具體到每條曲線的數(shù)值的確定,經(jīng)過反復(fù)模擬,得出了如下經(jīng)驗(yàn):接箍曲線的取值范圍為0~6,沒有接箍的地方,取值為0,有接箍的地方,取值為6。
射孔曲線的取值范圍為-4~0,沒有射孔的地方取值為0,有射孔的地方取值為-4。為了形成尖峰狀的效果,在連續(xù)射孔部位,每兩個-4之間,強(qiáng)行插入一個0,使曲線出現(xiàn)震蕩波形。
橋塞曲線的取值范圍為0~3。橋塞位置一般只給一個中心點(diǎn)深度值,而不是一個深度范圍。為了模擬出橋塞的折線形狀,采用了如下的算法:距離橋塞深度點(diǎn)±1m的地方,取值2;距離橋塞深度點(diǎn)±0.5m的地方,取值3;其余地方取值為0。采用填充模式繪制曲線,在曲線值與0之間填充顏色。
分段曲線的取值范圍為-2或-3,其中奇數(shù)段取值為-2,偶數(shù)段取值為-3,以便區(qū)分各段的邊界。采用填充模式繪制曲線,在曲線值與0之間填充顏色,正好又實(shí)現(xiàn)了模擬套管外水泥環(huán)的目的。
第四步,數(shù)據(jù)校驗(yàn)。將射孔深度、橋塞深度與接箍深度進(jìn)行比對,凡是間距小于2m的,顯示警告信息(見圖3) ,提示設(shè)計人員進(jìn)行整改,避免事故隱患。以往一直靠人眼根據(jù)深度數(shù)據(jù)查找錯誤,效率低且容易漏報。軟件的這個功能大大減輕了人員勞動強(qiáng)度。
第五步,讀取文件數(shù)據(jù),在繪圖窗口繪制曲線。X 軸為深度,Y軸為井筒直徑。每個參數(shù)繪制兩條曲線,沿井筒中心線(y=5) 對稱分布。8條曲線合成到一起,就得到了仿真的井筒剖面樣式,見圖2。
依托PyQtGraph模塊強(qiáng)大的交互操作功能,就可以用鼠標(biāo)左鍵對圖形進(jìn)行平移操作,用鼠標(biāo)右鍵進(jìn)行縮放操作,其中X軸(深度)可以無級縮放,在屏幕上全屏顯示的深度范圍可以從0.1m到10 000米,縮放比例達(dá)到驚人的十萬倍以上。
2 可視化實(shí)現(xiàn)方法
2.1 軟件界面設(shè)計
軟件操作界面設(shè)計見圖3,主要包括6個按鈕、一個文本輸入框、一個信息提示窗。
軟件的圖形顯示界面見圖4和圖5。圖4是井筒全貌顯示的時候,顯示區(qū)域?yàn)槟尘s2 000m長度的水平段井筒、劃分為23段。圖5是將圖形拖放到10米左右,只顯示一根套管的井筒情況。
圖形在X軸和Y軸方向可以單獨(dú)縮放,依靠鼠標(biāo)右鍵拖動實(shí)現(xiàn),操作十分順滑,既能總攬全局,又可以細(xì)窺局部,操作體驗(yàn)十分友好。
2.2 軟件的功能設(shè)計
軟件的運(yùn)行流程主要有三步:1) 依次點(diǎn)擊“打開數(shù)據(jù)文件”按鈕,選擇對應(yīng)的數(shù)據(jù)文件。2) 點(diǎn)擊“數(shù)據(jù)處理”按鈕,進(jìn)行數(shù)據(jù)處理,生成類似于測井?dāng)?shù)據(jù)格式的文件,同時校對射孔、橋塞與接箍的距離,距離小于2m時顯示警告信息。3) 點(diǎn)擊“顯示圖形”按鈕,軟件將新開一個窗口,全貌顯示井筒剖面圖形,等待用戶的操作。
在圖形顯示窗口,單擊鼠標(biāo)右鍵,可以調(diào)出一個功能菜單,用其中的“Export”功能,可以將窗口內(nèi)的圖形導(dǎo)出成圖片文件,方便匯報展示。
軟件有3個貼心的設(shè)計:一是選擇數(shù)據(jù)文件后,軟件會自動從文件名上提取出井號信息,顯示在圖形界面標(biāo)題上,省去了手工輸入的麻煩。二是設(shè)計了一根光標(biāo)線,見圖6,可以用鼠標(biāo)拖動位置,并跟隨顯示光標(biāo)線對應(yīng)的深度值,方便對井筒某處的深度進(jìn)行精確讀值。三是軟件可以智能判斷數(shù)據(jù)的完整度,不必須要接箍、射孔、分段這三個數(shù)據(jù)文件齊備才可以顯示,例如手上只有接箍數(shù)據(jù),依然可以在其他數(shù)據(jù)缺省的情況下顯示出接箍剖面圖形。
3 結(jié)論
基于Python語言及PyQtGraph圖形引擎開發(fā)的井筒剖面可視化軟件,在涪陵頁巖氣田的壓裂設(shè)計工作中得到了應(yīng)用,對壓裂施工的井筒剖面進(jìn)行精細(xì)顯示和交互化操作,可以更加直觀、形象地觀察不同井段的工具位置及施工部位,進(jìn)行設(shè)計驗(yàn)證,達(dá)到了檢查施工隱患、提高設(shè)計效率、提升設(shè)計水平的良好效果。
下一步,可以在此基礎(chǔ)上對軟件進(jìn)一步完善,拓展功能。比如增加自動分段分簇功能、實(shí)現(xiàn)圖形化的泵注程序設(shè)計等,形成一套智能化、可視化的壓裂設(shè)計輔助軟件,為頁巖氣開發(fā)提供技術(shù)支撐。