1. 程式人生 > >Visual Simulation of Smoke 筆記

Visual Simulation of Smoke 筆記

有了上一篇的詳細分析後,這裡其實沒有太多的新東西,主要是提出了溫度的影響,加了兩個力,提出mac網格,提出共軛梯度法求解。大概列一下

 

一、力

1、浮力與重力

煙霧會由於重力下沉,由於浮力上升,對於這兩個力本文建立了一個模型,令:

α、β是正常量,z是向上的單位向量( 0 , 0 , 1 ),Tamb是空氣溫度。順帶一提,這裡的溫度場也遵循advection流動。

2、旋轉力

另一個力是控制旋渦,在本文之前有一些方法是隨機地新增一個無散度的速度場來製造一些細節,剛好看過一個圖拿過來:

本文研究的是物理正確的細節。首先旋度 w = ∇ × u

,單位化向量 η= ∇ |w|,N = η / |η|,最後

其中 ε>0 ,控制細節的數量;h是離散化體元(cell)的間距。最後在算NS方程的時候吧這兩個力加進去即可。

二、佔用體

類似上一篇的情況,之前是把標量和向量場都放在網格中心,現在把標量放中心,向量放在cell的每個邊介面的中心,減少數值耗散。這就是mac網格。

討論流體時,模擬空間內可能存在一些障礙物,與這些障礙物相交的cell被標記為佔用。這裡分別討論一些情況:

1、advection:對於水平對流來說,可能有時候會讓流體進入到佔用體裡,那麼就採用半拉格朗日法同樣的線性回溯到佔用體的外表面。

2、邊界狀態:邊界也是類似,對於佔用體,其速度等於障礙物速度,溫度等於障礙物溫度,密度顯然等於0,這裡討論的是流體的密度。對於其邊界,密度取與之最近的一個未佔用cell的密度,以免密度突變為0。

三、共軛梯度法

上一篇是用高斯-賽德爾迭代來求解泊松方程,這裡換個更好的方法,先貼個過程後面再慢慢研究。說完了。