本發(fā)明屬于物理仿真領(lǐng)域,具體地說是一種基于粒子模型的凝結(jié)現(xiàn)象的仿真方法,其涉及到流體動力學、GPU并行、空氣擴散與熱交換理論以及計算機圖形學等。
背景技術(shù):
空氣的熱交換現(xiàn)象在虛擬現(xiàn)實、醫(yī)學、制造行業(yè)等領(lǐng)域都處在十分重要的地位。仿真學中經(jīng)典的建模方法有網(wǎng)格法和粒子法兩種。在三維中,網(wǎng)格法將物體分成塊狀,根據(jù)塊與塊之間的力交互以及自身的形變物理規(guī)律來離散化,對較小形變以及細節(jié)不敏感的場景仿真有較大的優(yōu)勢。然而網(wǎng)格法難以描述局部細節(jié),無法精確計算出用來描述細節(jié)的物理量。與之相對,粒子法是對材質(zhì)進行采樣得到一個點集合,直接在點集合上計算力的交互,直觀而且容易理解,對于細節(jié)上的表述十分清晰。在凝結(jié)現(xiàn)象中,網(wǎng)格化的氣體無法具體計算出凝結(jié)液滴位置點的坐標,只能指出大概的凝結(jié)區(qū)域,在精度上不足以描述凝結(jié)現(xiàn)象。
光滑粒子流體動力學(SPH)是一種流體模擬算法,基本思想是將流體場離散成粒子系統(tǒng)進行計算,在計算單個粒子的屬性時,根據(jù)屬性連續(xù)的假設(shè),對鄰居粒子的同一屬性根據(jù)距離進行插值計算。插值計算中的權(quán)重函數(shù)稱之為核函數(shù),常見的核函數(shù)有Poly6函數(shù)和Spiky函數(shù)。SPH方法能夠直觀地把物理規(guī)律施加到粒子系統(tǒng),還可以用在游戲的實時的交互軟件中。
基于物理的固液耦合邊界處理中經(jīng)典方法有:Monaghan等人提出的虛擬力法、Libersky等人提出鏡像粒子法、Schechter等人提出的Ghost粒子法等等。這些方法旨在防止不同物體粒子之間的滲透問題,生成的仿真現(xiàn)象不夠逼真。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有空氣熱交換仿真不直觀,不注重細節(jié)的問題,提供了一種基于粒子模型的凝結(jié)現(xiàn)象的仿真方法,該方法使用光滑粒子流體動力學對凝結(jié)現(xiàn)象進行仿真,保留了細節(jié),構(gòu)建了氣體在固體表面凝結(jié)現(xiàn)象的離散模型。
本發(fā)明的目的是這樣實現(xiàn)的:
1、一種基于粒子模型的凝結(jié)現(xiàn)象的仿真方法,其特征在于該方法包括以下步驟:
a)基于光滑粒子流體動力學(SPH)模型模擬流體的運動,具體包括:
i)區(qū)分邊界粒子
對所有粒子增加額外的屬性,對氣體粒子賦值為0,其他粒子賦值為1,構(gòu)成標量場;對每個粒子計算該標量場的梯度,梯度不為零的固體粒子歸到邊界粒子;
ii)各粒子的密度計算
每個粒子的密度通過周圍相同類型粒子的密度插值得到;在插值計算邊界上氣體粒子的密度時,引入密度校正算法:在插值計算過程中,把邊界粒子的密度加入到插值計算中,其中邊界粒子密度根據(jù)采樣的疏密性,設(shè)定成氣體密度的常數(shù)倍;
iii)各粒子的加速度計算
根據(jù)粒子密度,通過運動控制Navier-Stokes方程計算粒子的加速度:
其中u為流體速度,t為時間,ρ為粒子密度,p為壓強,μ為黏性系數(shù),是一階微分算子,是二階微分算子,fext為外力;方程等號右邊依次為壓力項,黏性力項和外力項;
在外力項中加入大氣壓帶來的液滴阻力;計算液滴覆蓋在固體表面的面積,配合外部大氣壓強和固體的摩擦系數(shù),計算出由于液滴內(nèi)外氣壓差而產(chǎn)生的液滴阻力:
ffriction=μf×(p·s)
其中ffriction為液滴阻力,μf為摩擦系數(shù),p為壓強,s為液滴填充的面積;
由此得到的控制方程,用來計算粒子的加速度:
b)基于SPH模型模擬凝結(jié)現(xiàn)象,具體包括:
i)各粒子的濕度計算
在SPH模型上實現(xiàn)菲克定律,通過計算擴散系數(shù)和粒子之間的相對濕度差得到每一幀濕度的變化值:
其中RH代表相對濕度,t代表時間,cdiff代表擴散系數(shù),Nj是粒子j的鄰居粒子集合,m是質(zhì)量,是二階微分算子,r是粒子的位置,W是光滑核函數(shù)即插值權(quán)重函數(shù),h是光滑核函數(shù)W影響區(qū)域的半徑;
把計算得到的濕度變化值加上該粒子濕度,得到該粒子處新的濕度屬性;
ii)各粒子的溫度計算
粒子的溫度變化量取決于鄰居粒子的溫度差:
其中T代表溫度,t代表時間,cd代表熱傳導系數(shù),Nj是粒子j的鄰居粒子集合,m是質(zhì)量,是二階微分算子,r是粒子的位置,W是光滑核函數(shù)即插值權(quán)重函數(shù),h是光滑核函數(shù)W影響區(qū)域的半徑;當相鄰粒子材質(zhì)不同時,為了保持邊界處屬性的連續(xù)性,熱傳導系數(shù)定為兩種材質(zhì)熱傳導系數(shù)的算術(shù)平均值;
把計算得到的溫度變化值加上該粒子溫度,得到該粒子處新的溫度屬性;
iii)各粒子的凝結(jié)判斷
使用August-Roche-Magnus方程對Clausius-Clapeyron方程近似:
式中T代表溫度,Tdp為露點溫度,RH代表相對濕度,常量系數(shù):b=17.67,c=243.5℃;計算出對于每個氣體粒子的露點溫度;當氣體粒子溫度低于該粒子處的露點溫度時,判斷該氣體粒子發(fā)生凝結(jié)現(xiàn)象,完成粒子模型的凝結(jié)現(xiàn)象的仿真。
本發(fā)明在完成一幀凝結(jié)現(xiàn)象的仿真后,判斷氣體粒子距離固體-氣體交界面的距離,如果該距離遠大于固體邊界粒子的核函數(shù)半徑h,那么這種粒子只進行速度和位移的計算;當粒子遠離固體邊界粒子的時間超過時間閾值,刪除該粒子。這一篩選可為下一幀運算加速。
本發(fā)明的有益效果:
本發(fā)明使用光滑粒子流體動力學對凝結(jié)現(xiàn)象進行仿真,保留了細節(jié),構(gòu)建了氣體在固體表面凝結(jié)現(xiàn)象的離散模型。在進行凝結(jié)模擬時還考慮露點溫度以及濕度擴散模型中相對濕度屬性對于凝結(jié)現(xiàn)象的影響,通過濕度來控制空氣粒子凝結(jié)出的液滴尺寸,同時可以有效避免局部粒子反復凝結(jié)造成的非真實性和粒子數(shù)量過多的問題。對于滲透問題,本發(fā)明提出氣-固耦合的邊界密度校正算法,彌補了邊界處SPH參與計算粒子缺失的問題,在不降低時間步長的情況下防止粒子滲透。
總之,應(yīng)用本發(fā)明可以精細、快速地對氣-固耦合場景進行仿真。在模型的直觀性、計算的高效性和仿真結(jié)果的真實感方面,都有顯著提高。
附圖說明
圖1為氣體-固體交互區(qū)間示意圖;
圖2為三種邊界處理方法比較的示意圖;
圖3為本發(fā)明液滴凝結(jié)細節(jié)的效果圖;
圖4為本發(fā)明真實凝結(jié)場景仿真效果圖。
具體實施方式
下面結(jié)合附圖及實施例對本發(fā)明詳細描述。
本發(fā)明的具體內(nèi)容:
1)構(gòu)建了氣體在固體表面凝結(jié)現(xiàn)象的離散模型:考慮露點溫度以及濕度擴散模型中相對濕度屬性對于凝結(jié)現(xiàn)象的影響。
2)提出氣-固耦合的邊界密度校正算法:彌補了邊界處SPH參與計算粒子缺失的問題,在不降低時間步長的情況下防止粒子滲透。
3)引入空氣粒子建模:對氣-固交互界面的仿真更加精細,同時易于調(diào)整和設(shè)計。
SPH的基本框架:
光滑粒子流體力學(smoothed-particle hydrodynamics,簡稱SPH)將流體場離散成粒子系統(tǒng)進行計算;計算單個粒子的屬性時,根據(jù)屬性連續(xù)的假設(shè),使用鄰居粒子的同一屬性根據(jù)距離進行插值計算:
其中Aj是粒子j的屬性值,Nj是粒子j的鄰居粒子集合,m是質(zhì)量,rj是粒子j的位置,W是光滑核函數(shù)即插值權(quán)重函數(shù),h是光滑核函數(shù)W影響區(qū)域的半徑。
粒子的運動控制方程是經(jīng)典的動量守恒方程Navier-Stokes方程:
其中u為流體速度,t為時間,ρ為粒子密度,p為壓強,μ為黏性系數(shù),是一階微分算子,是二階微分算子,fext為外力;方程等號右邊依次為壓力項,黏性力項和外力項;方程等號右邊依次為壓力項,黏性力項和外力項。在每一幀對每個點計算以上三部分力,匯總得到該點的加速度,更新點的位置。
本發(fā)明所述的考慮熱傳導的SPH流體模型,其具體為:
(1)粒子的溫度變化量取決于鄰居粒子的溫度差,而改變速率則由熱傳導系數(shù)決定。熱傳導過程可通過SPH離散計算:
其中T代表溫度,cd代表熱傳導系數(shù)。當相鄰粒子材質(zhì)不同時,為了保持邊界處屬性的連續(xù)性,熱傳導系數(shù)定為兩種材質(zhì)熱傳導系數(shù)的算術(shù)平均值。
濕度擴散模型根據(jù)菲克定律,其中擴散系數(shù)定義為:沿擴散方向,在單位時間每單位濃度梯度的條件下,垂直通過單位面積所擴散某物質(zhì)的質(zhì)量或摩爾數(shù)。擴散系數(shù)的大小主要取決于擴散物質(zhì)和擴散介質(zhì)的種類及其溫度和壓力。空氣相對濕度的擴散模型:
其中RH代表相對濕度,cdiff代表擴散系數(shù)。
當空氣發(fā)生凝結(jié)現(xiàn)象,凝結(jié)所得到的水滴體積取決于空氣的相關(guān)濕度。在完成凝結(jié)后,空氣的相對濕度降低,通過濕度擴散模型平衡周圍空氣的濕度。
(2)發(fā)生熱交換的區(qū)域主要是在具有較大溫度差的不同材質(zhì)的交界處,當空氣粒子到固體邊界的距離遠大于邊界固體粒子的核函數(shù)半徑,那么該空氣粒子對于交界面處固體粒子屬性的貢獻很小,所以迭代計算該粒子的屬性價值很低,在本發(fā)明中稱為低效用粒子。
在交界面處的粒子,離開交界面作用域后,根據(jù)速度和受力判斷出其持續(xù)遠離的趨勢,那么這種粒子也判定為低效用粒子。對于低效用的粒子只考慮速度、位移,不考慮鄰居粒子之間的熱交換,力交互以及相變。當粒子跑出場景,或者變成低效用粒子的時間超過時間閾值后,進行刪除操作。
本發(fā)明所述的凝結(jié)現(xiàn)象的仿真,其具體為:
(1)露點溫度指空氣在水汽含量和氣壓都不改變的條件下,冷卻到飽和時的溫度。在離散系統(tǒng)中相變過程的壓強和溫度的關(guān)系可以通過Clausius-Clapeyron方程來表示:
其中L是單位質(zhì)量的物質(zhì)所含有的潛伏熱能,v是單位質(zhì)量的物質(zhì)所占有的體積。
August-Roche-Magnus對公式(5)給出了一個近似估計:
式中有幾個常量系數(shù),根據(jù)用途取不同的值,本發(fā)明中常量系數(shù)取:b=17.67,c=243.5℃出自David Bolton的論文。根據(jù)公式(6)可以得到在環(huán)境溫度T時,相對濕度為RH的空氣粒子對應(yīng)的露點溫度Tdp。
(2)在氣體-固體的交界面,由于SPH計算氣體粒子密度時,核半徑內(nèi)的固體粒子對密度計算沒有貢獻,同時占據(jù)氣體粒子的空間,導致氣體-固體交界面附近的氣體粒子密度小于空氣粒子靜止密度,且由于密度差生成指向固體內(nèi)部的壓力,會導致滲透現(xiàn)象。另外較大的時間步長也會導致氣體粒子滲入固體內(nèi)部。一旦氣體粒子進入固體內(nèi)部,最直接的影響就是氣體-固體的熱交換發(fā)生在固體內(nèi)部,而不是固體表面,出現(xiàn)諸如內(nèi)部先凝結(jié)出液滴這種不符合物理規(guī)律的相變情況。
對于防止粒子滲透的方法,基于物理的經(jīng)典方法有虛擬力法以及Ghost粒子法。虛擬力法是通過對粒子小半徑范圍內(nèi)的其他粒子,施加與相對距離相關(guān)較大的力,迫使其離開受力范圍。這種處理方法有明顯的人為痕跡,以氣-固為例,氣體和固體之間會形成明顯的真空層,大大降低了熱傳導的能力。Ghost粒子法的主要思想是在固體表面和內(nèi)部隨機采樣更密集的粒子并通過松弛算法使粒子分布均勻化,采樣粒子用來補足交界處SPH計算的有效粒子數(shù),從而消去由于交界處密度差而產(chǎn)生的壓力。但是Ghost粒子法算法十分耗時,需要額外的采樣和松弛步驟,有很高的復雜度。
在時間復雜度和基于物理的要求下,本發(fā)明提出了一種基于SPH邊界密度的校正算法。以氣體-固體耦合為例:構(gòu)造標量場,對于固體粒子賦值為1,其余賦值為0,類似2D下的高度場。對每個固體粒子計算標量值cs:
在這之后對cs標量場求梯度,那么對于固體內(nèi)部,cs梯度都是零,而對于邊界粒子則梯度非零。同時梯度是一個從固體內(nèi)部指向外部,沿表面法向的矢量。設(shè)定該矢量模的閾值cgrad,如果某粒子處cs梯度值大于cgrad那么判定這個固體粒子是表面粒子。在使用SPH計算空氣密度的時候,范圍內(nèi)如果存在這樣的邊界固體粒子,在計算該空氣粒子密度時,把邊界固體粒子的密度設(shè)為空氣密度的常數(shù)倍,累加到密度核函數(shù)。由于固體粒子原本的分布要比Ghost粒子稀疏,為了能達到相同的貢獻,需要增加一個常數(shù)項作為倍數(shù)。而當固體粒子局部數(shù)量足夠多時,只需要把固體粒子密度設(shè)為距離最近的空氣粒子密度即可。這一算法完全內(nèi)嵌在現(xiàn)有的SPH里,十分易于實現(xiàn)和移植,而且時間復雜度等于SPH算法的復雜度,在GPU并行的情況下幾乎沒有額外的時間復雜度。
(3)在凝結(jié)過程中,空氣粒子通過與較冷固體表面進行熱交換,凝結(jié)成液態(tài)水,并依附在固體表面。附著的液滴很好地覆蓋了固體表面,造成局部真空,產(chǎn)生內(nèi)外氣壓差。而當液滴體積較小時,液滴受到由大氣壓作為正壓力產(chǎn)生的摩擦力,平衡了重力,使液滴靜止在固體表面。然而現(xiàn)有的SPH中,粘滯力無法提供這個摩擦力,粘滯力公式為:
力的大小取決于離散系統(tǒng)相鄰粒子的速度差,當液滴靜止時力為零,顯然無法達到液滴靜止在固體表面的現(xiàn)象。
本發(fā)明基于上述原理引入液滴阻力:
ffriction=μf×(p·s) (9)
其中ffriction為液滴阻力,μf為摩擦系數(shù),p為壓強,s為液滴填充的面積。
實施例
圖2展示了三種不同的邊界處理方法,依次為虛擬力方法,Ghost粒子法和本發(fā)明方法。圖中中間圓形粒子代表邊界處理方法所涉及到的固體粒子,包圍在外部的其余粒子為空氣粒子??諝饬W拥倪\動趨勢是從左向右。
左邊圖片表示的虛擬力方法對于近距離的粒子施加較大的力,在圖片左半部可以看到空氣和固體之間有一條真空帶,而在圖片的右半部分可以看到空氣粒子有明顯的遠離固體粒子的趨勢。中間的Ghost粒子法涉及了大量的粒子,能很好處理邊界粒子,然而需要頻繁對固體的表面和體積進行采樣和松弛操作,時間復雜度高且并行難度大。右邊圖片展示的本發(fā)明方法,僅需要修正空氣粒子密度計算時固體表面粒子的貢獻,就能夠達到防滲透同時不推開空氣的效果,由于其容易嵌入現(xiàn)有SPH框架,可以并行加速。實驗中的Ghost粒子最大嘗試數(shù)為30。由于算法中每采樣一個新點都需要比較鄰居區(qū)域中其他采樣點的距離,并行的難度較大,選擇在CPU上運行。需要注意的是Ghost粒子方法需要對物體進行體采樣,所以物體的體積大小對于時間復雜度影響較大。
圖3展示的是本發(fā)明空氣在玻璃表面的凝結(jié)現(xiàn)象。左圖中空氣粒子在固體表面液化凝結(jié),受到表面張力和大氣壓的影響,停留或者沿著固體表面滑落。另外液滴生成有局部密集的現(xiàn)象,這是因為濕度擴散模型則起到濕度擴散傳播的效果,使得凝結(jié)過液滴的空氣粒子可以受到周圍空氣粒子的濕度傳播,在適當?shù)臈l件下再次凝結(jié)。中間圖片顯示了當相鄰水滴靠近時,兩個水滴會進行合并成為一個更大的水滴。右圖中固體表面生成了大小不一的液滴粒子,這是因為空氣粒子凝結(jié)時相對濕度的差異性會直接影響凝結(jié)水滴的體積。
圖4展示的是本發(fā)明對桌面上的玻璃制品施加濕度較大的空氣,對真實場景的凝結(jié)現(xiàn)象進行仿真。
以上列舉的僅是本發(fā)明的具體實施例。顯然,本發(fā)明不限于以上實施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導出或聯(lián)想到的所有變形,均應(yīng)認為是本發(fā)明的保護范圍。