六十三、一文說清楚Fluent壓力-速度耦合
1.?介紹
壓力速度耦合(Pressure-velocity Coupling)問題僅在基于壓力求解器時才會出現(xiàn),用于控制壓力和速度的迭代方式。為什么會產(chǎn)生壓力和速度耦合的問題呢??
這主要是因?yàn)閯恿糠匠讨邪藟毫龊退俣葓鲞@兩個未知數(shù),而壓力場沒有單獨(dú)的方程進(jìn)行求解,因此求解過程需要先假定壓力場,根據(jù)動量方程先求解出速度場,然后再使用連續(xù)性方程對壓力場進(jìn)行修正,修正的壓力場再對速度場進(jìn)行更新。
不同的壓力速度耦合方式可以控制壓力和速度更新順序,比如分別更新segregated方式,或者同時更新Coupled方式
注:基于密度的求解器不需要考慮壓力速度耦合問題,因?yàn)榛诿芏鹊那蠼馄魇强蓧嚎s流動,方程組中包含了理想氣體狀態(tài)方程,可用于求解壓力
當(dāng)勾選Density-Based后,Solution Methods界面不再出現(xiàn)Pressure-velocity Coupling選項
2.?算法類型
segregated算法和coupled算法主要不同的地方在于如何對壓力進(jìn)行修正
segregated算法主要有以下類型:
SIMPLE
SIMPLEC
PISO
coupled算法主要類型:
Coupled
3.?SIMPLE和SIMPLEC算法
先介紹兩種segregated算法SIMPLE和SIMPLEC算法
3.1 SIMPLE算法
SIMPLE算法使用速度和壓力修正之間的關(guān)系來滿足質(zhì)量守恒,同時獲得壓力場。
先假設(shè)初始的壓力場p*,通過動量方程可以求得面質(zhì)量流量Jf*。(上標(biāo)*表示為假設(shè)值)
但由于上述的壓力場是假設(shè)的,因此求得的Jf*是不滿足質(zhì)量守恒方程的,需要對其進(jìn)行修正,Jf’表示修正項,則修正后的真實(shí)值Jf為(上標(biāo)’表示修正值)
經(jīng)過修正后,Jf滿足質(zhì)量守恒方程。SIMPLE算法中假設(shè)修正項Jf’公式為
其中的c0及c1即相鄰的網(wǎng)格cell
SIMPLE算法通過對質(zhì)量守恒方程進(jìn)行推導(dǎo)可得到壓力修正方程,p’為壓力修正項
因此壓力真實(shí)值p為
為了加強(qiáng)收斂性,對p’進(jìn)行一定的縮小乘以系數(shù)αp
αp即為下圖中的亞松弛因子,參考文章
3.2 SIMPLEC算法
SIMPLEC算法與SIMPLE算法的流程基本相同,所不同的是對Jf的修正,修正公式如下:
已經(jīng)證明,SIMPLEC算法可以明顯加速收斂。
SIMPLEC算法涉及到網(wǎng)格的偏斜度修正Skewness Correction。當(dāng)網(wǎng)格的Skewness(網(wǎng)格的一個質(zhì)量標(biāo)準(zhǔn))較大時,相鄰網(wǎng)格的壓力修正梯度即(p’c0-p’c1)并不準(zhǔn)確,因此在壓力修正后,需要重新計算壓力修正梯度,并用于修正Jf。
網(wǎng)格偏斜度較大時,Skewness Correction可以顯著地增加計算的收斂性。默認(rèn)設(shè)置為0,表示不修正;大于0表示修正。
4.?適用情況
SIMPLE算法是默認(rèn)設(shè)置,但大多數(shù)的問題使用 SIMPLEC算法更好,尤其是當(dāng)亞松弛因子較大時。
對于簡單問題,如不附加其他模型的層流問題,使用SIMPLEC算法,能夠快速收斂。在SIMPLEC算法下,壓力校正欠松弛因子通常設(shè)置為1.0,有助于加速收斂。
但是對于一些問題,將壓力校正欠松弛因子增加到1.0可能會由于高網(wǎng)格偏度而導(dǎo)致收斂不穩(wěn)定。在這種情況下,使用低欠松弛因子(如0.7)或者使用SIMPLE算法,可以幫助收斂。
對于復(fù)雜的問題,如湍流或者涉及到其他的物理模型,SIMPLE算法和SIMPLEC算法收斂速度基本相同。
通過以上分析,SIMPLE和SIMPLEC算法,優(yōu)先選擇SIMPLEC算法。
5. PISO算法
PISO算法是對SIMPLE算法的一種改進(jìn),是基于壓力和速度修正之間的更高程度的近似關(guān)系。前面我們提過SIMPLE算法和SIMPLEC算法在對壓力進(jìn)行修正后,得到新的速度和通量是不滿足動量方程的,需要重復(fù)計算直到滿足動量守恒為止。
這種計算方式比較耗費(fèi)資源。為了提高計算的效率,PISO算法在SIMPLE算法的基礎(chǔ)上進(jìn)行了兩個額外的校正:neighbor correction和skewness correction。
5.1 Neighbor Correction
所謂的Neighbor Correction就是將SIMPLE算法和SIMPLEC算法所需的重復(fù)計算移動到壓力修正方程中。
這使得計算時會多出一個或多個額外的PISO循環(huán),但通過這種方式后,修正后的速度能夠更接近地滿足連續(xù)性方程和動量方程。
因此PISO算法在每次迭代中需要更多的CPU時間,但它可以顯著減少收斂所需的迭代次數(shù),特別是對于瞬態(tài)問題。
默認(rèn)的設(shè)置都為1,表示考慮了修正。設(shè)置為0,表示不進(jìn)行修正。
5.2 Skewness Correction
前面的SIMPLEC算法也提到過Skewness Correction,這里的Skewness Correction和前面的相同。當(dāng)網(wǎng)格的Skewness(網(wǎng)格的一個質(zhì)量標(biāo)準(zhǔn))較大時,相鄰網(wǎng)格的壓力修正梯度即(p’c0-p’c1)并不準(zhǔn)確,因此在壓力修正后,重新計算壓力修正梯度,并用于修正Jf。
網(wǎng)格偏斜度較大時,Skewness Correction可以顯著地增加計算的收斂性。默認(rèn)設(shè)置為1,表示修正;設(shè)置為0,表示不進(jìn)行修正。
5.3 Skewness - Neighbor Coupling
對于Skewness比較大的網(wǎng)格,同時進(jìn)行Neighbor Correction和Skewness Correction的修正可能會導(dǎo)致發(fā)散或穩(wěn)定性不好。
PISO的一種處理方式是對每個迭代步的Neighbor Correction應(yīng)用一次或多次Skewness Correction。這種方式會耗費(fèi)更多的資源,但也會使得壓力速度修正更加準(zhǔn)確。
5.4 適用條件
1)?對于所有瞬態(tài)計算,強(qiáng)烈推薦使用帶有neighbor correction的PISO算法,特別是當(dāng)使用較大的時間步長時(Fluent幫助文檔)。PISO對于較大的時間步長,高松弛因子如動量和壓力的亞松馳因子為1.0,可以保持計算的穩(wěn)定性。
2)?對于LES湍流模型,一般需要使用較小的時間步長,使用PISO會增加計算成本,可以使用SIMPLE或者SIMPLEC算法。
3)?對于穩(wěn)態(tài)問題,帶有neighbor correction的PISO算法與SIMPLE和SIMPLEC算法沒有任何明顯的優(yōu)勢。
4)?無論穩(wěn)態(tài)還是瞬態(tài),只要網(wǎng)格歪斜度較大,都推薦使用帶有skewness correction的PISO算法
5)?skewness correction的應(yīng)用
如果使用帶有neighbor correction的PISO算法,則所有方程的亞松馳因子都可以調(diào)整到1.0或者接近1.0;
如果使用帶有skewness correction而不帶有neighbor correction的PISO算法,推薦將動量方程和壓力方程的亞松馳因子之和設(shè)置為1.0,如動量設(shè)置為0.7,壓力設(shè)置為0.3。
對于大多數(shù)問題,不需要禁用Skeweness-Neighbor coupling。但是對于高歪斜度網(wǎng)格問題,建議不勾選Skeweness-Neighbor coupling。
6. Coupled算法
基于壓力的分離算法(SIMPLE算法、SIMPLEC算法和PISO算法)分別求解了動量方程和壓力修正方程,這種半隱式算法收斂速度較慢。
耦合算法(Coupled)同時求解動量方程和連續(xù)性方程。通過對動量方程中壓力梯度項和面質(zhì)量通量的隱式離散,可以實(shí)現(xiàn)一種全隱式的算法。
Coupled算法中動量方程中的壓力梯度項離散形式
動量方程可以離散為
連續(xù)性方程的離散形式
最終,這個控制方程可以寫成矩陣的形式
其中的A,X和B分別為
Coupled算法可以通過一組方程可以直接耦合求解,而不需要像SIMPLE算法那樣分開求解壓力和速度。
Coupled算法相較于分離方法有一定的優(yōu)點(diǎn),對于穩(wěn)態(tài)單相問題,此算法更穩(wěn)定、高效。
在某些情況下,使用多孔跳躍邊界條件,耦合算法可能會遇到收斂問題。如果遇到這種情況,建議更換分離式算法。
6.1 不勾選Pseudo Transient
選擇Coupled算法,而沒有勾選Pseudo Transient。需要在Solution Controls界面設(shè)置庫朗數(shù),默認(rèn)值200。
需要設(shè)置顯式松弛因子Explicit Relaxation Factors,默認(rèn)為0.5。如果網(wǎng)格歪斜度較大,可將值設(shè)置為0.25以增強(qiáng)收斂。
如果出現(xiàn)diverges in the AMG solver這種發(fā)散信息,說明庫朗數(shù)過高,需要降低。但不建議將庫朗數(shù)降低到10以下,可以將Coupled算法更改為分離算法。
在大多數(shù)瞬態(tài)計算中,CFL數(shù)應(yīng)該設(shè)置成很大的數(shù)如10^7,而顯式松弛因子設(shè)置為1.0
6.2 勾選Pseudo Transient
需要對偽瞬態(tài)進(jìn)行設(shè)置,參考四十三、Fluent增強(qiáng)收斂性-偽瞬態(tài)計算
總結(jié):對于穩(wěn)態(tài)問題,推薦使用SIMPLEC算法。而對于穩(wěn)定單相流問題,推薦使用Coupled算法(勾選偽瞬態(tài)可以大大加快收斂);對于瞬態(tài)問題,推薦使用PISO算法。
公眾號:Fluent學(xué)習(xí)筆記。為了方便大家學(xué)習(xí)交流,我創(chuàng)建了QQ群:群一群二人數(shù)已滿員,可加三群:466988009,大家可以在其中討論相關(guān)的問題,同時我會將所有文章的源文件都放到QQ群中,還會放一些其它的學(xué)習(xí)文件。歡迎大家加入。