三十九、Fluent時間步長的估算與庫朗數(shù)
1. 庫朗數(shù)
1.1 概念理解
什么是庫朗數(shù)?庫朗數(shù)是用來衡量數(shù)值計算穩(wěn)定性的一個物理量,也被稱為CFL數(shù)、CFL準則
在流體力學仿真軟件中,都能找到庫朗數(shù)(Courant number)的解釋和定義。在CFX的幫助文件里給出了一個比較直觀的公式來定義一維網格的庫朗數(shù)(Courant Number):
其中,u為流體速度;Δt為時間步長;Δx為網格尺寸;
形象點理解,u*Δt表示流體在Δt時間內流動的距離,除以網格尺寸,則表示流體在一個時間步長內流過了多少個網格。顯然一個時間步長內流過的網格越多,計算就越快,但收斂性就會越差。
類似于人賽跑,跑得快固然很快能跑完,但也可能中間摔跟頭。
庫朗數(shù)主要受流速u、時間步長Δt和網格尺寸Δx的影響。而流速u和網格尺寸Δx主要由實際工況決定,不能人為控制,因此主要由時間步長Δt來控制庫朗數(shù)。
1.2 取值標準
一般來說,考慮收斂性的話,庫朗數(shù)肯定越低越好,但相應的時間步長也會很小,收斂速度變慢。
一般取值在1~10之間比較合適,當然要根據實際情況,如收斂性比較差,可適當降低這個數(shù)值。收斂性比較好,收斂速度慢,可適當增加庫朗數(shù)。Fluent幫助文檔認為對于大多數(shù)問題,庫朗數(shù)設置為1能夠滿足要求。
實際上,F(xiàn)luent很多案例的庫朗數(shù)都是50,這主要是選擇了隱式算法的原因
1.3 庫朗數(shù)于亞松馳因子
亞松馳因子under-relaxation factor
單元格內物理量φ取決于舊值φold、變化量△φ和亞松弛因子α。也就是說亞松弛因子是一個調節(jié)物理量變化的系數(shù)。
基于壓力的耦合算法中庫朗數(shù)可用亞松馳因子表示出來:
2. 庫朗數(shù)的設置
2.1 基于密度求解器Density-based
顯示格式Explicit Formulation
默認是1,對于2維問題可適當增加庫朗數(shù),但不要超過2.0。如果設置沒有問題,但是計算發(fā)散了,或者殘差上升得非常快,就必須降低 Courant number,可能需要降低到0.5,甚至0.1。但如果收斂性很好,就可以增加 Courant number。
隱式格式Implicit Formulation
默認庫朗數(shù)為 5.0。通??梢?增加到 10、20、100 甚至更高。與顯示一樣可根據收斂情況進行更改。
注:
1.基于密度求解器
General界面可選擇求解器
Solution Methods界面可設置是顯式格式還是隱式格式
Solution Controls可設置庫朗數(shù)
2.時間步長的設置
由前面庫朗數(shù)的定義可知,時間步長和庫朗數(shù)相互決定,因此設置了庫朗數(shù),那么時間步長就確定了。
無論是基于什么求解器,F(xiàn)luent如果可以設置庫朗數(shù),那么軟件會自動計算時間步長,盡管在Run Calculation界面仍然有Time Step Size欄,仍然可以輸入數(shù)值,但這欄是不起任何作用的。既不會對計算收斂性起作用,也不代表真正的流動時間,這一點要千萬注意。
實際測試了一下,確實如此,更改庫朗數(shù)會改變收斂性和流動時間,而Time Step Size不起作用。
2.2 基于壓力求解器Pressure-based
使用基于壓力求解器,速度壓力耦合pressure-velocity scheme 選擇Coupled,在?Solution Controls界面會出現(xiàn)Flow Courant number
默認值是200,F(xiàn)luent幫助文檔中多設置為50,在實際計算過程中可減小到4。然后等計算比較穩(wěn)定時,再增加庫朗數(shù)。
3. 時間步長
上面我們用了非常多的篇幅介紹了庫朗數(shù)及庫朗數(shù)的設置,但是在實際的設置中,我們會發(fā)現(xiàn)很少能夠在設置中看到庫朗數(shù)選項,更別提設置庫朗數(shù)了。
這主要是因為大多數(shù)的算例都是基于壓力求解器的,因此無法直接設置庫朗數(shù)。
如果設置中不出現(xiàn)庫朗數(shù),那要如何間接設置庫朗數(shù)呢??? 設置時間步長?。?!
通過上面的定義可知,庫朗數(shù)與時間步長存在直接的關系,
對上式進行變形,可以得到時間步長為
流體的流速u,最小網格尺寸Δx都能大致估算出來,Courant number一般設置在1-10之間,可取5。由此我們可以大致估算出時間步長。
如:流速u=2.0m/s,最小網格尺寸Δx=0.0002m,CFL=5,可以計算出時間步長Δt=5e-4s
上面的計算過程很容易通過編程實現(xiàn),因此我寫了個圖形界面小程序,直接輸入數(shù)值就可以得到時間步長。
我把這個小程序放群文件里,想要的小伙伴可加群獲取,或者公眾號輸入“時間步長”關鍵詞獲取
但要注意,上式只是庫朗數(shù)在一維網格上的定義,實際的定義要復雜很多,因此只能用來估算。
微信公眾號:Fluent學習筆記。為了方便大家學習交流,我創(chuàng)建了QQ群:群一人數(shù)已滿員,可加二群:876525686,大家可以在其中討論相關的問題,同時我會將所有文章的源文件都放到QQ群中,還會放一些其它的學習文件。歡迎大家加入。