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