在求解瞬態模型時,需要考慮各物理量隨時間的變化。為此,COMSOL 軟件會基于給定的初始條件,使用一種時間積分算法來計算未知變量會如何隨時間變化。在計算過程中,有時收斂較慢,有時不完全收斂。本文針對如何解決這種情況提供相關指導。
解決方法
背景
COMSOL Multiphysics 瞬態(時間相關)求解器能夠求解以下形式的方程組:
其中,
和
可以是常數,或者是
和
的非線性函數。這些方程既可以是獨立的常微分方程 (ODE),也可以是耦合方程組,它們是通過有限元法 (FEM) 對邊界值問題 (BVP) 進行空間離散化產生的。您在 COMSOL 中求解的大多數時變場和空間變化場問題都屬于后一類。結合上述方程,軟件可以求解一般形式的代數方程組:
,這兩組方程形成微分代數方程(DAE)。這個微分代數方程加上一組初始條件
,就可以完全定義瞬態模型。另請注意,軟件還可以處理具有更高階時間導數的模型,只需引入額外的中間變量即可。
時間步進法
COMSOL 提供了三種方法,可用于求解微分代數方程:向后差分公式法、廣義 α 法和龍格-庫塔法。向后差分公式法和廣義 α 法是隱式方法,龍格-庫塔法是顯式方法。顯式方法根據當前狀態下的解直接計算未來狀態下的解。隱式方法根據未來狀態和當前狀態下的解形成一個方程組并進行求解。隱式方法通常比顯式方法更穩定、快速,但顯式方法使用的內存更少。軟件將根據所用的物理場接口自動確定最合適的方法,一般不建議替代默認的求解器方法。
要查看所使用的求解器,您可以在求解器配置的瞬態求解器節點中查看時間步進設置,如下面的屏幕截圖所示。
查看所用求解器方法的位置。
龍格-庫塔法主要用于求解常微分方程組以及涉及時域顯式壓力聲學和時域顯式電磁波物理場接口的模型。因此,這種方法的使用范圍非常狹窄,不在本文的討論范圍內。
對于已確定解本質上是振蕩的(類似波)模型,例如聲學模型、電磁波模型以及包含慣性項的結構瞬態模型,通常默認使用廣義 α 法。這類問題最好通過指定單元大小和求解器時步來求解。遵循上述準則應該可以解決此類模型的大多數收斂問題。
對于涉及擴散、對流和反應的有限元模型,通常默認使用向后差分公式法,這類問題代表了受益于求解器設置調整的大多數情況。系統使用自適應或自由時間步進方案求解這類問題,求解器將自動調整時間步長。這正是本文重點討論的情況。
需要注意的是,默認情況下,求解器按請求的時間步長(而不是求解器實際采用的時間步長)返回解。有關這方面的更多詳細信息,以及如何替代此特征,請查看文章:控制瞬態求解器的時間步長。
調整瞬態求解器
對于默認使用向后差分公式法和自由時間步進求解的擴散、對流和反應問題,需要注意以下幾點。以下各方面相互結合,將影響求解器的收斂性。
使用事件接口模擬步長變化
如果模型中的載荷或邊界條件將隨時間發生瞬時變化(在已知時間或已知條件下),則應通過引入事件接口來求解此類問題。“事件”接口可確保求解器準確捕獲載荷的所有階躍變化。
求解器相對容差
在使用自適應時間步進(使用任意求解器方法)時,軟件會自動調整所用的時間步長,以滿足所需的相對容差。盡管在這種情況下,精確選擇時間步長相當復雜,并且無法直接控制,但您可以控制相對容差,如下面的屏幕截圖所示。您應該始終執行容差細化研究:用更嚴格的容差重新求解模型并比較結果。
用戶控制的相對容差設置。
相對容差與瞬時誤差和隨時間累積的誤差都相關。由于誤差會累積并增大,因此,過于寬松的相對容差會產生誤差主導的解,如果您發現求解器最初采用相對較大的時步,隨后采用相對較小的時步,可能就是這個原因造成的。用更嚴格的相對容差重新求解將導致求解器最初采用較小的時步,但累積誤差會更小,因此在后續時步中,求解器可能不需要減小時步來克服累積誤差。也就是說,相對容差越小,總體收斂速度越快。
網格
網格必須足夠細化才能解析建模域中解場的變化。特別是對于涉及擴散、對流和反應的問題,不可能提前知道場中具有顯著空間變化的具體位置。如果網格過于粗化,求解器可能需要采用非常小的時步來減小誤差。因此,細化網格會導致求解器采用較大的時步,但代價是模型更大。
網格細化和相對容差細化是相輔相成的。您可以執行這兩種研究,在相對容差與網格細化研究之間來回交替。
一致初始化
您可以建立邊界條件與初始值不一致的模型。在使用一致初始化(默認情況下處于啟用狀態)時,仍然可以求解此類模型。但是,這可能不會完全達到預期效果,并可能在仿真開始時導致非常小的時步。有關更多詳細信息以及如何解決此問題的指導信息,請參考文章:求解初始值不一致的瞬態模型。
縮放
由于數值原因,軟件總是對要求解的未知數進行縮放。此操作是自動進行的,如果縮放得當,就不會有問題。但是,如果縮放比例不合適,則需要對場進行手動縮放。要了解如何檢查和手動調整變量縮放比例,請參考文章:手動設置變量的縮放比例。
非線性求解器設置
在求解包含重要非線性項的模型時,求解器可能無法使用默認設置計算隱式方程組的解。請參見官網知識庫:
提高非線性瞬態模型的收斂性。
初始時步
當求解器啟動時,它會根據總仿真時間來估計要采用的初始時間步長。因此,如果您對同一模型求解兩次,并且其總時間不同,則初始時步可能不同。如果在開始求解后立即發生了一些重大事件,這可能會導致不同的結果。要指定初始時間步長,請轉到瞬態求解器設置,在時間步進欄中啟用初始步長:選項,并輸入固定的初始步長大小,如下面的屏幕截圖所示。請注意,軟件仍然可以自由選擇小于該值的時步,但不會使其變大。此外,您還可以酌情考慮是否可以改用事件。
指定求解器嘗試采用的初始時間步長。
分離方法 vs. 全耦合方法
在求解多物理場模型時,軟件的默認行為通常是以分離的方式來處理問題,先求解第一個物理場,然后求解下一個,并在每個時步中迭代所有物理場。這可能會嚴重影響收斂,具體取決于問題的性質。如果模型是用“分離”方法求解的,請嘗試使用“全耦合”方法,反之亦然。在通過“全耦合”方法求解模型時,可能需要使用“直接”線性方程組求解器。
處理非收斂模型
如果瞬態求解器無法收斂,它要么在初始條件下立即求解失敗,要么在整個仿真過程的某個時間點失敗。
如果是在仿真過程中的某個時間點失敗,可以使用上述所有技巧來提高收斂性。此外,輸出求解器得到的結果,參考文章:控制瞬態求解器的時間步長中所述。繪制求解器失敗時的時步的解以及該時步的前一時步的解,并觀察這些解。如果網格不夠細化或者存在一些正在傳播的累積誤差,則繪制結果會特別突出顯示。
如果求解器立即求解失敗,首先需要仔細檢查每個物理場接口中指定的初始條件,以及模型中各物理場的所有邊界條件、載荷和約束。如果這些因素不一致,可能會導致求解器失效。默認情況下,求解器將試圖通過找到與所有邊界條件都一致的初始條件來更正這一問題,但這可能與預期有很大的不同。這種情況在涉及流動的模型中尤其常見,參考文章:求解初始值不一致的瞬態模型中所述。
如果此操作符合您的實際情況,還建議您嘗試建立一個等效或幾乎等效的穩態(時不變)模型,此模型可以作為一個很好的測試平臺,用于研究網格細化和縮放,以及比較分離方法與全耦合方法。有關處理非線性穩態模型的信息,請參考文章:提高非線性穩態模型的收斂性的 7 種有效方法。
本文內容來自 COMSOL 知識庫