主廚先前曾在《穩態與暫態模擬差異在哪?從方程式到實務判斷!》與各位介紹穩態與暫態的不同,有興趣的各位可以前往看看。這次要跟大家介紹的是求解暫態方程的時間積分法 (Time Integration Method),包含顯式法與隱式法,如何使用這兩個方法來求解暫態方程?這兩種方法又有什麼不同呢?讓我們一起來看看吧!
顯式與隱式基本意義
我們知道暫態問題的狀態變數會隨著時間變化。只要一開始給定初始條件,我們就可以一步步往後推算,找出每個時間點的狀態,而時間積分法就是一種用來求解此類方法的數值方法。
簡單來說,時間積分法把時間導數轉換成一個個可計算的時間步 (time steps),讓電腦能用離散方式近似連續的時間演化。根據離散方式不同,可以分成顯式法和隱式法,這兩種方法的基本概念整理如下:
- 顯式法 (Explicit Method):下一步的解直接用當前時間離散方程右邊的已知值計算,不需解聯立方程。
- 隱式法 (Implicit Method):下一步的解會同時出現在時間離散方程的左右兩邊,導致無法直接求解變數。因此,在每個時間步都必須解聯立方程,才能求得新的狀態變數。
光是看這個說明可能還是有點疑惑,底下直接來看個例子吧!
一維熱傳問題
我們考慮一維熱傳方程如下:
\frac{\partial T}{\partial t} = \alpha \frac{\partial^2 T}{\partial x^2}
其中T為溫度,t為時間,\alpha為熱擴散係數。我們使用前向差分來離散時間項,而空間項則採用中央差分法來離散。
\frac{T^{n+1}_{i} - T^{n}_{i}}{\Delta t} = \alpha \frac{T^{n}_{i+1} - 2T^{n}_{i} + T^{n}_{i-1}}{\Delta x^2}
其中n表示已知的上個時間步,i表示一維空間的待求解節點。我們稍微整理上式,如下所示:
T^{n+1}_{i} = T^{n}_{i} +\lambda(T^{n}_{i+1} - 2T^{n}_{i} + T^{n}_{i-1})
\lambda=\frac{\alpha \Delta t}{\Delta x^2}
從上式我們可以得知方程式右側項都是已知時間步的解。因此只要代入上個時間步的解就能直接得到這次時間步的解,不需要額外解聯立方程式,此為顯式法。
那隱式法是如何求解呢?我們將時間項用後向差分來離散,結果如下:
\frac{T^{n}_{i} - T^{n-1}_{i}}{\Delta t} = \alpha \frac{T^{n}_{i+1} - 2T^{n}_{i} + T^{n}_{i-1}}{\Delta x^2}
其中n表示未知的當下時間步,我們再稍微整理上式,如下所示:
\lambda T^{n}_{i-1}- (1+2\lambda) T^{n}_{i} + \lambda T^{n}_{i+1}=-T^{n-1}_{i}
上式是針對單一節點 i 的線性方程式。將此式應用於計算域內的所有節點,即可構成涵蓋整個溫度場的聯立方程組來求解。因此,在每個時間步,我們都必須求解這個方程組,才能得到該時間步的完整溫度分佈。
顯式與隱式比較
前面段落說明顯式與隱式的基本意義並透過熱傳方程來具體兩個方法的不同,那這兩種方法在特性及應用上有什麼差異呢?
首先顯式法為了避免發散,通常使用較小時間步以求穩定,而隱式法可採用較大時間步,求解較為穩定,但由於每步都需要求解線性方程的矩陣,因此單步計算成本較高,實作也較困難。
基於上述特性,我們可以知道顯式法適合應用在需要精細時間步的應用場景,像是短時間內產生大變形的撞擊或是衝擊波模擬等等,而隱式法則適合用在變化相對較慢的情況,像是接觸變形或是熱擴散等問題。
主廚結語
這次跟大家介紹顯式法與隱式法的基本意義與差異,而前面提到顯式法只能採用較小時間步長,那要如何知道時間步長該設多少?有沒有什麼判斷標準可以幫助判斷呢?下回就來跟大家聊聊CFL條件,讓我們更進一步吧!如果對這類CAE知識有興趣的話,歡迎追蹤科技雞湯Facebook,持續關注最新消息!
參考資料
- Fidelis, Time integration Methods For Implicit And Explicit FEA – What Are They And How Do They Work?
- HOYETEK,有限元素分析/結構應力分析中顯式求解(Explicit Solver)和隱式求解(Implicit Solver)的差異與應用

主廚您好,您在「顯式與隱式比較」這part有提到”發散”這個詞,讓我有點疑惑。
就我的理解,提到發散/收斂的情況指的是 計算出來的值和某個參考值之間的差(error),如果這個error一直不能滿足收斂準則的話就判定發散。
但在你的熱傳例子中,不論顯式、隱式,好像沒有看到有哪些地方會有發散、收斂的問題。好像「下一個時間點的溫度」算出來是說少就是多少。好像沒有一個收斂準則來判定這個算出來的結果。
希望主廚能再說明一下這個部分,謝謝!