SPH算法簡介(二): 粒子受力分析
2011年03月31日 |本網站遵守CC版權協議 轉載請註明出自www.thecodeway.com
SPH算法的基本設想,就是將連續的流體想象成一個個相互作用的微粒,這些例子相互影響,共同形成了複雜的流體運動,對於每個單獨的流體微粒,依舊遵循最基本的牛頓第二定律
(2.1) |
---|
這是我們分析的基礎,在SPH算法裏,流體的質量是由流體單元的密度決定的,所以一般用密度代替質量
(2.2) |
---|
這裏的的作用力F的量綱發生變化,dim F=MT-2L-2,後面的分析都是用這個量綱的“作用力”,這一點一定要注意。作用在一個微粒上的作用力由三部分組成
(2.3) |
---|
其中FExternal稱爲外部力,一般就是重力,所以
(2.4) |
---|
FPressure是由流體內部的壓力差產生的作用力,試想一下在水管中流動的液體,進水口區域的壓力一定會比出水口區域大,所以液體纔會源源不斷的流動,數值上,它等於壓力場的梯度,方向由壓力高的區域指向壓力低的區域。
(2.5) |
---|
FViscosity是由粒子之間的速度差引起的,設想在流動的液體內部,快速流動的部分會施加類似於剪切力的作用力到速度慢的部分,這個力的大小跟流體的粘度係數μ以及速度差有關
(2.6) |
---|
帶入公式2.2,可以得到
(2.7) |
---|
加速度形式:
(2.8) |
---|
如果你學習過流體力學,一定會發現上面這個公式就是Navier-Stokes方程的一個簡單形式,但N-S方程有更嚴格的形式和推導過程,感興趣的朋友可以從流體力學相關的書中找到,這裏有一篇比較比較淺顯的文檔可以參考,經過聯繫作者flysea,拿到這篇文檔的原始文件放在這裏,再次感謝flysea的幫助。
實際運算過程中,有時還要考慮表面張力的影響,所謂表面張力大家應該並不陌生,肥皂泡、毛細管等有趣的物理現象都跟表面張力有關,這個力可以簡單理解爲流體試圖減小表面而產生的力。
由於表面張力只涉及到表層的粒子,所以計算方法和上面的有所不同,這部分會在以後的章節介紹。
經過上面的分析,我們基本上搞清楚了SPH粒子的運動計算方法,下節我們將正式開始介紹SPH算法的關鍵部分,如何通過光滑核函數計算粒子運動規律。