格子玻尔兹曼机(Lattice Boltzmann Method)系列5:LBM多相流实例之Shan-Chen模型
Shan-Chen模型
在格子玻爾茲曼方法的發展過程中,出現過許多的多相流動算法,其中Shan-Chen模型是最為人熟知也是應用最多的一種,因為這是所有多相流模型中最簡單的一個。
LBM用于模擬多相流動一個十分重要的特點就是簡單。如果研究過FVM的多相流動的話,捕捉界面是永遠無法避免的。Diffuse Interface方法,或者是對界面存在拓撲損失問題的Level-Set方法,等等,絕對是FVM多相流領域中最叫人頭疼的一部分。但是LBM則完全不同,由于粒子的角度觀,多相流界面的捕捉是完全不需要程序員來寫的,不需要寫界面捕捉函數就可以模擬多相流代碼,就奠定了LBM在CFD領域的一個無可撼動的位置。
然而有得必有失,LBM不需要寫界面捕捉程序帶來的直接缺陷就是密度比的問題。在現實世界,液氣密度比可達1000左右,但是在LBM的多相流動中,密度比最多也就只能達到十幾而已。對于Shan-Chen模型,這個缺陷更加明顯。然而,相較于其代碼的簡單程度,這樣的缺陷并算不上什么大的問題。
Shan-Chen模型的主要思想是通過增加了流體粒子與固體壁面之間的作用力來進行兩相流體分離。
這個變量的計算除了密度以外還需要用到壓力的信息。在多相流動中一般會引入一個狀態方程來計算壓強,這里計算壓強我使用的是:Edlich-Kwong(R-K)EOS。
這里的a和b都是常數,我在程序中設定為a=2/49, b=2/21, T=0.85*0.1961,R=1.于是壓強p就是密度的單變量函數。
上式中的作用力描述的是流體粒子(不論是否同相)之間的相互作用力,g是一個由自己設定的常數,w是方向向量的權重。
上式中的作用力描述的是流體粒子與固體壁面之間的作用力,s函數用于檢測是否是固體粒子,如果是固體壁面,就置為1,否則就置為0.
之前在這里貼的算法的C++實現我刪掉了,有興趣的話可以直接去這里找taichi實現的版本:https://github.com/GeCao/taichi-LBM
同時也很希望有緣能看到這篇文章的同學也可以嘗試用taichi來寫你們的代碼,方便易上手,taichi社區除了圖形和游戲領域以外,也同樣非常歡迎CFD類代碼的貢獻~
這里是運行一個算例后的具體結果:
懶得寫接觸角測量函數了,所以就直接輸出來信息然后用Tecplot畫出界面,之后用SCA20_U進行的接觸角測量。我在這里設置的是液體密度為6.06,氣體密度為0.5,固體密度為0.8.
實際上固體的密度越接近0.5,那么接觸角就會越大,反過來越接近6.06,那么接觸角就會越小。這里就看出了Shan-Chen模型一個十分大的限制:沒有辦法手動設置接觸角。
上圖是一篇文獻中的結果,這個程序的所有參數都是引用的這篇文獻中的設置:[5].Haibo Huang, Zhitao Li, Shuaishuai Liu, Xi-yun Lu. Shan-and-Chen-type multiphase lattice Boltzmann study of viscous coupling effects for two-phase flow in porous media. Int. J.Numer. Meth. Fluids. 2008.
Shan-Chen模型的基本情況就是這么多,也許你很疑惑是在計算粒子間作用力和固體-液體作用力的時候,參數g的作用究竟是什么。實際上g顯然是一個表面張力的相關量。而盡管在現實世界中一般會認為表面張力越大,接觸角也會越大。以我曾經實驗測量了無數種流體的接觸角經驗來說,統計意義上的確是有這樣的相關性,但是也經常會有表面張力大接觸角反而小的流體存在,而且比例還不低。所以在所有的數值模擬中,接觸角和表面張力都是解耦分開的。
下一篇會寫一寫多相流模擬中的HCZ模型,然后這個系列基本上就到了尾聲了。再后面可能會挑個時間寫一寫浸入邊界法。
總結
以上是生活随笔為你收集整理的格子玻尔兹曼机(Lattice Boltzmann Method)系列5:LBM多相流实例之Shan-Chen模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARM9处理器总结
- 下一篇: jmeter生成接口测试报告