靖+固++李+丹



摘 要:油水兩相流在密封管道中的流動現象是不可見的,將其真實流動現象可視化將為科學發現和控制決策提供非常有價值的信息.采用ReaIFlow模擬兩相流液體流動,應用并行雙曲面函數MUltiquadric插值方法對檢測數據圖像重構后的稀疏矩陣插值以加強對圖像細節的顯示,并結合C4D軟件中的燈光和材質對兩相流系統液態流動效果進行制作,結果表明應用改進的徑向基插值算法能解決檢測數據稀疏的困擾;將RealFlow和C4D平臺交互應用能真實有效的模擬兩相流四種流型的連續動態過程,其結果真實自然.
關鍵詞:油水兩相流;可視化;ReaIFlow技術;并行插值算法
DOI: 10.15938/j.jhust.2015.02.013
中圖分類號:TP391.41
文獻標志碼:A
文章編號:1007-2683(2015)02-0069-06
0 引 言
在石油開采過程中由于地層中含有一定量的水并挾帶天然氣,使得石油管道形成油氣水三相流,但隨著油井開采深度的增加,天然氣含量逐漸減少,而水相的含量逐漸增加,更多以油水兩相流為主,事實上,國內的許多油田已進入殲采中后期,2011年全國油田平均含水量超過85%,部分油田水相含量甚至高達98%.這種流動現象在密封管道中是不可見的,將其真實流動現象可視化將為科學發現和控制決策提供非常有價值的信息.本文應用ReaIFlow技術模擬兩相流中四種典型流型的流動過程,利用腳本程序控制粒子模擬液體的流動;同時結合徑向基插值算法,實現并行雙曲面函數Mul-tiquadric插值設計,加強圖像細節顯示,計算出正確的運動軌跡;再以質點與質點間產生平滑的多邊形網格,保存序列文件,然后在Cinema 4D(簡稱C4D)中引入網格,賦予材質,渲染輸出,實現兩相流系統可視化仿真.
1 RealFlow兩相流管道流動系統設計
流體包括液體和氣體,其流動過程存在著復雜的相互作用關系,比如流體的混合交互、對流與擴散、紊流、表面張力等,以往的可視化技術很難表現出流體的真實流動效果.RealFlow是由西班牙Next Limit公司出品的流體動力學模擬軟件,它是一款獨立的模擬軟件,可以計算真實世界中液體的運動,是目前唯一具有對物體實施作用的力學模擬系統,它的粒子具有動能,能夠推動其它物體,使它們產生運動或改變運動方式.在相同硬件條件下,RealFlow能處理的粒子數是3ds max或Maya等3D平臺所能處理的粒子數的幾十倍乃至更多,利用腳本程序還可以精確控制粒子、物體的運動,它已成為使用者創造流體真實效果的強大工具,但ReaIFlow也存在缺陷,它沒有完整的建模功能且沒有提供任何照明和渲染功能,模擬時需結合外部建模軟件.本文將ReaIFlow結合具有高效建模和快速渲染功能的C4D軟件完成兩相流可視化仿真.
應用ReaFlow建立兩相流管道流動系統的制作思路是將C4D軟件中制作的石油管道模型導人ReaIFlow來設置流體模型,模擬和調節完成后,再將粒子或網格物體從ReaIFlow導回C4D軟件中進行照明和渲染.ReaIFIow模擬兩相流實現過程如圖1所示:
1.1 石油管道三維模型的導入
在C4D中制作場景,可以保存兩種ReaIFlow接受的格式,不動的模型可以保存為Obj格式,動畫的模型可以保存為SD格式,視需要而定.本文利用C4D軟件制作出石油管道模型,由于ReaIFlow只能識別三角形的網格物體,將其簡化的模型轉換為可編輯面片,變為三角網格物體,最終導出為Obj格式文件.圖2為從C4D導人ReaIFlow中管道的三維模型.
1.2 建立ReaIFlow兩相流管道流動模型
1.2.1腳本程序設計
PVthon腳本是ReaIFlow的重要組成部分,是擴展RealFlow功能和開發白定義解決方案的一種很好的工具.在Python腳本中有ReaIFlow的響應模塊和功能擴展包,可以實現RealFlow的操縱發射器、創建自定義力場,修改剛體力學參數、使用Real-Wave曲面并控制軟體動力學功能等指令集操作.
ReaIFlow可以根據圖片控制發射器和動力學參數等,本系統利用Pvthon腳本程序將插值后圖像的像素信息傳遞給發射器,通過Pythor可以直接訪問每一個單獨的粒子并設置屬性、設定運動方式、受力情況及動畫等的設置,完成四種流型的模擬,以點滴流型為例,在定義圖片路徑后根據矩陣中有效部分的點陣控制發射器的粒子,定義兩個粒子發射器.其中一個作為水相的發射器,發射器的初始狀態設置為全水,然后初始化再重置,同時把溢流出來的粒子滅殺、體積滅殺(age),提高流動速度(speed),將speed設置為2,讓流體做矢量方向的運動;另一個發射器根據矩陣中像素“1”的位置設置油滴發射器并定義為間隔發射.下面的程序是將水相發射器轉移粒子到油滴發射器的操作程序,每個粒子有特定的ID,當遍歷到這個粒子時,ID根據像素信息區分是水粒子(water)還是油滴粒子(oil),確定兩個發射器屬性后根據管道中油水兩相物理屬性設置內外壓力、密度、粘滯性等動力學參數及對粒子運動屬性、發射時間等并進行調整,最終形成點滴流流動模型.
系統部分腳本程序設計如下:
water=scence.geLEmitter(“Circle01")
oil=scence.getEmitter(“Circle02”)
particle=waLer.getFirstPartiCle()
while(particle):
vel=parlicIe.getVelocity()
pos=particle.getPostion()
id=parlicle.getId()
if(pixe_val=1)
oil.addparticle(pos,vel)
water.removeParticle.getNextParticle()
1.2.2 Mesh網格模型的生成
在調整粒子達到最終效果后,創建網格模型對粒子進行包裹,在模擬管道與液體接觸的面與兩相液體表而之問的角度盡可能與真實的場景相似,就需要對Mesh網格進行調整,通過對網格各項參數進行調試,最終達到真實的液體流動的效果.生成的網格序列幀在項日文件夾的Meshs目錄下,文件格式為,bin,然后將bin文件通過接口插件導人到C4D中,完成燈光材質的制作和最終的渲染輸出,完成系統仿真,本系統點滴流型將Mesh網格模型導人C4D中如圖3所示.
1. 2_3 兩相流可視化數據
系統可視化數據來源于圖像重構后的檢測現場電容傳感器的檢測數據,經迭代的代數重建法ART最后得到兩相流4種典型像素點的灰度值矩陣,包括點滴流、環流、中心漉、層流,在圖4表示的4種典型流型的矩陣中橫斷面用100個象素點來表示,其中“O”表示水,“l”表示油,兩相流管道流動系統沒汁就是基于這四種流型的二維圖像矩陣.根據給定矩陣中有效部分的點陣就可以確定流體的具體形狀,用以控制腳本程序中粒子發射器的設置.
2 并行雙曲面Multiquadric插值算法
由于重構的圖像數據稀疏,不能真實反映兩相流系統連續的物理流動過程,必須對其進行插值運算增加數據密度以提高三維圖像的細節顯示,插值方法及插值基函數的選擇是可視化技術的一個關鍵問題,因此選擇適合本系統的插值方法就顯得尤為重要.
徑向基函數(radial basis functions,RBF)是以每個插值中心為徑向對稱基函數線性組合的插值函數,RBF被認為是散亂數據插值巾最精確和最穩定的方法之一,而散亂數據特點正符合兩相流系統.常用的RBF有Gaussians,Thinplale splines,Mul-tiquadric及Inverse Multiquadrir等,其中Mul-tiquadric最初南Hardy在1971年提出的,1990年MADYCH等。描述了一類通用的Multiquadric.函數,使用雙曲面函數作為徑向基函數的最大特點就是計算結果與原始形式相近,這正符合本系統數據稀疏,需提高三維圖像的細節顯示的要求.
2.1插值原理
一二維雙曲面Multiquadric.函數公式為:
式(1)也可以用矩陣形式表示:對式(3)進行矩陣變換得到:從而求得系數αi.那么任意一點(xg,yg)可由下式插值得到:該插值函數的準確率完全由原始檢測點分布密度決定,即由系數αi來決定.
由式(2)知Multiquadric函數建立的插值方程組的系數矩陣為非奇異的,解此插值方程組可采用LDL7分解,也稱為改進Cholesky分解法.此方法將系數矩陣分解為單位下三角矩陣L、對角矩陣D和矩陣Lt的乘積再求解方程組,這樣可減少存儲量和計算量,提高算法效率.
2.2并行算法設計
2.2.1 待插值點及插值參考點的選擇
對于徑向基插值算法,找到所有待插值點求解插值方程組是最直接的方法,理論上這種方法是最精確的,但在實際應用中,當散亂點數量增多時,求解系數的線性方程組不斷擴大,插值幾乎無法實現,事實上,徑向基插值方法具有某種屏蔽性質,即距離較遠的數據點的影響極小.本文采用與雙三次線性插值類似的方法選擇插值參考點,即選取待插值點周圍4x4=16個整數點作為插值參考點,待插值點的選擇如圖5(a)所示.其中o表示插值參考點,●表示待插值點,
需要注意兩種情況,若待插值點到矩陣某個或某兩個邊緣太近而無法取到4x4個點,則調整4×4個點的插值參考點不得超出矩陣范圍,圖5(b)為待插值點在矩陣右下角很近的情況,虛線部分位于矩陣邊界以外.此時需向上、向左各移動1格,取實線構成4x4個方格的頂點為插值參考點;插值程序按照由左到右、由上到下的順序依次進行計算,相鄰的待插值像素多數情況下為圖5(c)所示3個待插值點的方程組系數矩陣相同,只需做一次LDL分解,這樣可以節省大量時間.
2.2.2并行插值算法設計
由于當前微機系統的主流配置都配備了雙核、四核甚至多核CPU,在體系結構方面已具備了實現多核多線程并行計算的硬件條件,且這種內核模式具有共享存儲空間的體系結構特點.如果將所求應用問題采取一定的分配策略將計算任務分配給多核CPU,多線程同時并行求解,可大大提高計算效率.本算法應用計算機并行自動選擇待插值和插值參考點并求解插值方程組,插值算法的實現步驟如下:
1)讀入原圖像矩陣,得到圖像的高度和寬度(10xl0);
2)根據插值算法得到新圖像的高度和寬度(hxw),并創建空白新圖像;
3)插值得到像素點(x,y)的值并寫回新圖像,求取待插值像素點的過程如圖6所示;
4)得到插值后圖像矩陣.
其中第3步是設計該算法最為關鍵的環節,即徑向基插值部分,運算量大,其快慢直接關系到捅值的速度,插值時待插值點的值只由輸入像素的鄰域像素確定,后一像素輸出結果不依賴于前面像素的輸出結果,而且原圖像與插值后的圖像分別利用兩個數組進行存儲,因此插值過程以及所利用的像素資源之問不存在關聯性,不同的輸出值可以獨立進行計算互不干涉,具有良好的并行性,本算法插值任務被劃分成多個子任務,線程組中每個線程分別執行對應的子任務,各待插點同時插入對應的數據區域,并行區結束后派生的線程結束,主線程繼續執行,并行算法流程圖如圖7所示.
2.3 算法應用實例
根據4種流型的灰度值矩陣設圖像每一像素的寬度為l,則.F(x,y)表示在以左上為原點的右手二維坐標系上像素(x,y)的值,其中x,y為正整數或0,則得到若干個點(xi,yi),點滴流型經本文方法得到插值后效果如圖8所示,插值后油水兩相符合實際r業現場離散相實體的幾何形狀、相對位置和空問分布等三維信息的狀態,明顯改善了插值前成像效果,
為了驗證本文算法的有效性,將不同像素矩陣分別應用普通MultiquaclriC(簡稱MQ)插值算法和本文并行插值算法,以加速比作為衡量并行計算性能的指標,實驗數據如表l所示.
從表1可以看出,通過并行化處理能縮短插值計算時間,提高算法的有效性,解決徑向基函數求取速度較慢的問題.并且可以看出隨著圖像矩陣的增大,加速效果明顯,并行計算的優勢可更加明顯地表現出來.
3 可視化結果分析
圖9為RealFlow結合C4D得到的可視化仿真結果截圖;圖10為文中用3ds max結構建模得到的可視化仿真結果截圖,
從上面的仿真結對比之下,可以看出使用3ds max中MAXScript腳本語言進行結構建模只表現了油相運動,沒有油相與水相的交互運動,且粒子的特效仍與真實流體差距較大給人感覺生硬.Real—Flow結合C4D作為實驗平臺,ReaIFlow流體力學模擬技術較好的解決了粒子碰撞計算與逼真度平衡的問題,仿真結果突出兩相液體交互運動更真實生動流體感更強.
4 結 論
本文研究的兩相流系統可視化是以重構的二維灰度值矩陣為基礎,通過三維圖像重建,將檢測到的現場數據進行可視化處理,再現兩相流流型變化的連續流動過程,與以往采用3ds max制作相比,將RealFlow與C4D平臺結合應用在流體可視化中具有真實生動更流體化的優點,這為可視化系統開發中流體運動的模擬提供了一種較好的解決方法;通過采用并行雙曲面函數Multiquadric插值算法,明顯改善了油水兩相流可視化系統的成像質量,加強了流型的細節顯示,有效地解決了稀疏數據可視化問題,并利用計算機多核優勢,實現了算法的加速處理,但研究成果真正用到檢測勘探應用系統,還需進一步提速,以滿足應用系統的實時性要求,