SPH算法簡介(三): 光滑核函數

SPH算法簡介(三): 光滑核函數

2011年04月1日 |本網站遵守CC版權協議 轉載請註明出自www.thecodeway.com

    和其他流體力學中的數學方法類似,SPH算法同樣涉及到“光滑核”的概念,可以這樣理解這個概念,粒子的屬性都會“擴散”到周圍,並且隨着距離的增加影響逐漸變小,這種隨着距離而衰減的函數被稱爲“光滑核”函數,最大影響半徑爲“光滑核半徑”。

光滑核函數一般具有的形態

    反過來不難理解,儘管我們將流體視爲一個個分散的粒子,但流體畢竟是連續充滿整個空間的,流體中每個位置參與運算的值都是由周圍一組粒子累加起來的。

    設想流體中某點r(此處不一定有粒子),在光滑核半徑h範圍內有數個粒子,位置分別是,r0r1r2, …, rj,則該處某項屬性A的累加公式爲:

(3.1)

    其中Aj是要累加的某種屬性,mj和ρj是周圍粒子的質量和密度,rj是該粒子的位置,h是光滑核半徑。函數W就是光滑核函數,光滑核函數兩個重要屬性,首先一定是偶函數,也就是W(-r)=W(r),第二,是“規整函數”,也就是∫W(r) dr=1


    根據上一篇的公式2.8,對於粒子i,它的位置爲ri,此處的加速度a(ri)的推導公式爲

(3.2)

    也就是說,需要逐個推出密度ρ,壓力p,速度u相關的累加函數,我們逐個來分析


    密度
    根據公式3.1,用密度ρ代替A,可以得到

(3.3)

    密度計算使用的光滑核函數稱爲Poly6函數,具體形式爲:

(3.4)

    其中,KPoly6是一個固定的係數,根據光滑核的規整屬性,通過積分計算出這個係數的具體值,在2D情況下,在極座標中計算積分:

(3.5)

    3D情況下,在球座標中計算:

(3.6)

    由於所有粒子的質量相同都是m,所以在3D情況下,ri處的密度計算公式最終爲:

(3.7)

    壓力
    根據上一節的結論,在位置ri之處的由壓力產生的作用力的計算公式爲

(3.8)

    不過不幸的是,這個公式是“不平衡”的,也就是說,位於不同壓強區的兩個粒子之間的作用力不等,所以計算中一般使用雙方粒子壓強的算術平均值代替單個粒子的壓力

(3.9)

    對於單個粒子產生的壓力p,可以用理想氣體狀態方程計算

(3.10)

    其中ρ0是流體的靜態密度,K是和流體相關的常數,只跟溫度相關。
    壓力計算中使用的光滑核函數稱爲Spiky函數

(3.11)

    在3D情況下,KSpiky=15/(π*h^6)

(3.12)

    現在可以整理出公式3.2中壓力產生的加速度部分

(3.13)

    粘度
    現在把注意力集中到公式3.2中最後一部分,由粘度產生的加速度

(3.14)

    這個公式同樣有不平衡的問題,考慮到公式中的速度其實並不是絕對速度,而是粒子間的相對速度,所以這個公式的正確寫法應該是:

(3.15)

    其中的光滑核函數形式如下:

(3.15)

    在3D情況下,KViscosity=15/(2*π*h^3)

(3.16)

    由此可得到公式3.2的粘度部分

(3.17)

    把公式3.13和3.17帶入3.2,可以得到,對於粒子i,它的加速度可以由下面的公式計算

(3.18)

    好了,我們似乎推導出一大推複雜的公式,不用擔心,你已經過了最困難的部分,下一節我們來點真的,讓這些公式運行起來看看

轉載自:http://www.thecodeway.com/blog/?p=1643
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章