溫劍鋒,覃一海
(廣西建設(shè)職業(yè)技術(shù)學(xué)院,南寧530000)
氣液兩相流是非常有趣自然現(xiàn)象,同時(shí)也是工業(yè)制造中常見的現(xiàn)象。氣泡在液體中產(chǎn)生、合并、上升、爆裂等現(xiàn)象在工業(yè)生產(chǎn)中有著重要的影響。在工業(yè)生產(chǎn)中,通常根據(jù)氣泡的動(dòng)力學(xué)特點(diǎn),調(diào)整生產(chǎn)過(guò)程的參數(shù)提高生產(chǎn)效率。在醫(yī)療中,利用氣泡的運(yùn)動(dòng)特性,將藥物運(yùn)送到患者的生病部位達(dá)到治病目的。在航運(yùn)過(guò)程中,通過(guò)減少高速運(yùn)轉(zhuǎn)的螺旋漿產(chǎn)生的空化氣泡達(dá)到保護(hù)螺旋漿的目的。
至今,眾多研究者對(duì)氣泡上升時(shí)出現(xiàn)行為進(jìn)行展開了深入的研究,如合并、變形、破裂、速度等。Li等人[1]用VOF方法研究了氣泡在液相中產(chǎn)生和上浮。付等人[2]根據(jù)氣泡在液體中的運(yùn)動(dòng)過(guò)程,推導(dǎo)出了氣泡的運(yùn)動(dòng)方程。田等人[3]用水平集方法等研究氣泡上升時(shí)的變形和運(yùn)動(dòng)特點(diǎn),揭示了氣泡變形的原因。陳等人[4]研究了氣泡在浮力作用下的流場(chǎng)分規(guī)律,并提出了浮力作用的假設(shè)。
LBM是當(dāng)前主流的數(shù)值模擬方法,它具有算法簡(jiǎn)單、邊界易于處理、適合并行處理等特點(diǎn),非常適合用于復(fù)雜多相流現(xiàn)象的模擬研究。CUDA是NVIDIA公司推出的解決復(fù)雜運(yùn)算的架構(gòu),它能使GPU在并行運(yùn)算、圖像處理等方面的能力大大提升?;贑UDA的LBM算法為數(shù)值模擬提供了更高效的計(jì)算方式,受到眾多學(xué)者的喜愛。
本文擬用LBM方法進(jìn)行建模,然后使用CUDA并行技術(shù)對(duì)LBM程度進(jìn)行加速計(jì)算,探索氣泡上升的形態(tài)變化和上升的速度變化等。
LBM編程簡(jiǎn)單主要在于該模型的公式簡(jiǎn)單、參數(shù)少,本文使用二維LBM模型進(jìn)行編程,它的基本公式如下:
其中,fi、是分布函數(shù),Ωi是碰撞因子、ei是單位速度、是平衡分布函數(shù)(ρ,u)、τ、ρ、u、δt分別是單馳豫時(shí)間、宏觀密度、宏觀速度、步長(zhǎng),展開為:
公式(1)包括了碰撞和遷移兩部分,碰撞的公式為:
遷移的公式為:
經(jīng)過(guò)多年的發(fā)展,用于多相流模擬的LBM模型有顏色模型[5]、SC 模型[6]、Zheng 模型[7],然而這些均存在一些不足,如顏色模型計(jì)算具有指數(shù)復(fù)雜性、穩(wěn)定性差,如偽勢(shì)模型計(jì)算虛速度大,Zheng模型不滿足伽利略不變性。在某些研究領(lǐng)域,這些模型的應(yīng)用受了限制。對(duì)此,覃等人[8]深入分析了以上模型存在的缺陷,提出了復(fù)合的LBM多相流模型,此模型能更好地進(jìn)行數(shù)值模擬,并具有較高的精確度和穩(wěn)定性。該模型的動(dòng)量公式為:
遷移公式為:
上述方程經(jīng)過(guò)一系列的轉(zhuǎn)化,可恢復(fù)N-S方程:
本文主要使用(15)公式進(jìn)行編程模擬,通過(guò)計(jì)算Δp的值,將實(shí)驗(yàn)計(jì)算的Δp值與理論進(jìn)行比較,以檢測(cè)模型的正確性。
其中,Δp表示氣泡內(nèi)外壓強(qiáng)差,R表示半徑,σ表示表面張力。計(jì)算區(qū)域定為201×201,界面厚度、氣相密度、液相密度、馳豫時(shí)間、表面張力、遷移量、序參等分別為:5、1、1000、0.875、0.1、100、499.5。通過(guò)模擬不同的半徑,求出內(nèi)外壓強(qiáng)差,然后用壓強(qiáng)差與半徑作圖,所得數(shù)據(jù)如表1表示,由表可見實(shí)驗(yàn)值與理論值非常接近,計(jì)算誤差均在1%以下,由實(shí)驗(yàn)可知本文采用的LBM滿足Laplace定律,可用于多相流的數(shù)值模擬之中。
表1 實(shí)驗(yàn)結(jié)果與理論值對(duì)比
本文主要模擬二維單氣泡在浮力作用下上升的現(xiàn)象。每一相的密度和表面張力系數(shù)的取值與文章Takada[9]一樣。氣泡處于四壁平穩(wěn)的流場(chǎng)中。初始,氣泡處于計(jì)算區(qū)域?yàn)?0×300的低區(qū)域中(流場(chǎng)高度的1/4)。氣泡內(nèi)初始序參設(shè)為φ*,氣泡外初始序參設(shè)為-φ*。在不同參數(shù)值(如表2所示),進(jìn)行了幾個(gè)數(shù)值模擬。由于氣泡的半徑很小,我們不必把界面厚設(shè)置太大。當(dāng)浮力和拖拽力達(dá)到平衡,氣泡將以幾乎不變的速率上升。事實(shí)上,速率并不是常量。氣泡在上升的時(shí)候,存在振蕩現(xiàn)象。表2展示模擬結(jié)果對(duì)比情況。很明顯,這些結(jié)果與VOF方法和Takada’s LBM吻合得非常好。氣泡在不同條件下的最終上升的形態(tài)如圖1所示。
表2 氣泡在浮力作用下上升的模擬參數(shù)
表3 氣泡在浮力作下上升的終點(diǎn)速率
圖1 不同參數(shù)下氣泡上升的最終形狀
維度劃分是CUDA優(yōu)化加速的其中方法之一。Grid和Block是劃分維度的重要單元,通過(guò)確定合理的比例使CPU性能發(fā)揮最大作用。在優(yōu)化時(shí),可以將Block劃分一維、二維、三維,通常認(rèn)為維度越高,能劃分的線程數(shù)就越多,但是由于GPU的線程數(shù)有限,并不能盲目對(duì)Block進(jìn)行多維度劃分??紤]到計(jì)算規(guī)模,本文先將Block劃分一維,然后再將Block未利用的空間與Grid重新合并形成新的維度,這樣充分利用了空閑的線程進(jìn)行運(yùn)算,使程序并行效率達(dá)到最大化。將未進(jìn)行維度劃分的算法設(shè)為S0,已經(jīng)進(jìn)行維度劃分的算法為S1,演化10000步的計(jì)算結(jié)果,如表4所示,由表可見,經(jīng)過(guò)優(yōu)化加速后,流場(chǎng)越大獲得的加速比越大。因此,進(jìn)行大規(guī)模數(shù)值模擬運(yùn)算時(shí),引入CUDA并行技術(shù)能大大提升程序運(yùn)行效率,能為更深入研究提供堅(jiān)實(shí)的基礎(chǔ)。
表4 方案S0、S1的耗時(shí)和加速效果的比較
本文使用主流多相流LBM模型研究了氣泡上升的現(xiàn)象,通過(guò)多組不同的初始參數(shù)計(jì)算了氣泡上升的速度以及不同參數(shù)下氣泡上升的形狀,實(shí)驗(yàn)與前人研究結(jié)果基本吻合。針對(duì)當(dāng)前程序計(jì)算效率低下問(wèn)題,本文引入CUDA對(duì)LBM多相流程序進(jìn)行了加速計(jì)算,能獲得最高13.86倍的加速比,大大縮短了程序達(dá)到穩(wěn)定時(shí)需要的時(shí)間,能為更深入的研究縮短期限。接下來(lái),筆者計(jì)劃在CUDA并行技術(shù)方面進(jìn)行更深入的探索,希望能為L(zhǎng)BM程序的運(yùn)算減少更多的時(shí)間。