求解器與前處理¶
FrontISTR 的線性求解器可選擇直接法或反覆法;反覆法會搭配前處理器來求解線性方程式。MPC 處理方式與接觸自由度消去則是輔助選項,用於決定含有多點約束或接觸約束的線性系統要以何種形式處理。
功能概觀¶
求解器與前處理由以下選項構成。首先在線性求解器中選擇反覆法或直接法,只有選擇反覆法時才搭配前處理器。
| 類別 | 主要選項 | 作用 |
|---|---|---|
| 反覆法 | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
以較高的記憶體效率求解大型稀疏矩陣。 |
| 反覆法用前處理器 | SSOR、對角縮放、BILU、AMG、SAINV、RIF | 改善反覆法的收斂性。直接法不使用。 |
| 直接法 | MUMPS, MKL |
透過分解穩健地求解線性方程式。 |
| MPC 處理方式 | 懲罰法、MPC-CG 法、顯式自由度消去法 | 將多點約束反映到線性系統中。 |
| 接觸自由度消去 | 自動、始終啟用 | 切換 SLAGRANGE 接觸所新增接觸自由度的處理方式。 |
| 輔助功能 | 條件數估算、矩陣傾印、記錄輸出 | 輔助除錯、收斂性確認與效能評估。 |
平行執行時,可結合以區域分割為基礎的 MPI 平行與 OpenMP 執行緒平行。反覆法是大型平行分析的標準選項;直接法則用於已連結相應程式庫且需要更穩健求解的環境。
求解器與前處理器的選擇方式¶
首先決定使用反覆法或直接法;若選擇反覆法,再接著選擇前處理器。
| 判斷軸 | 建議考量 |
|---|---|
| 問題規模 | 中小型問題使用直接法較穩定且容易處理。大型問題則反覆法的記憶體效率較佳。 |
| 矩陣對稱性 | 對稱正定問題可考慮 CG。非對稱問題可考慮 BiCGSTAB、GMRES、GPBiCG 等。 |
| 平行環境 | MPI 平行時結合反覆法與區域分割。OpenMP 平行下的前處理可考慮支援多色法的 SSOR。 |
| 前處理器(選擇反覆法時) | 先嘗試預設的 SSOR,再考慮 AMG。收斂良好時 SSOR 計算較輕量;複雜的大型問題則適合 AMG 前處理。 |
| 接觸與 MPC | 含接觸分析或多點約束的分析中,MPC 處理方式與接觸自由度消去的選擇會影響收斂性與穩健性。 |
| 外部程式庫 | MUMPS、MKL、AMG 可在連結相應程式庫的建置中使用。 |
一般分析中,收斂判定值、最大反覆次數、前處理器的對角修正係數等維持預設值通常即可正常運作。僅在收斂緩慢或發散時,才依序重新檢視反覆法、前處理器、MPC 處理方式與接觸自由度消去。參數值與格式請參閱關鍵字參考的 !SOLVER。
反覆法¶
反覆法針對大型稀疏矩陣,透過反覆執行矩陣向量乘積與前處理來更新解。FrontISTR 可選擇以下反覆法。
| 反覆法 | 適用指標 | 備註 |
|---|---|---|
CG |
對稱正定問題 | 結構分析與熱傳導分析的標準候選方法。 |
BiCGSTAB |
非對稱問題 | 接觸或耦合造成強烈非對稱性時的候選方法。 |
GMRES |
非對稱問題 | 指定 Krylov 子空間大小後使用。 |
GPBiCG |
非對稱問題 | 作為 BiCGSTAB 系列的改良方法使用。 |
GMRESR |
非對稱問題、進階用途 | 以巢狀方式使用 GMRES 的選項。 |
GMRESREN |
非對稱問題、進階用途 | GMRESR 系列的遞迴版本。 |
CG 的前提是矩陣為對稱正定。若摩擦接觸、非對稱約束處理、耦合效應等造成強烈非對稱性,可考慮 BiCGSTAB、GMRES、GPBiCG 等。GMRES 增大 Krylov 子空間大小有時能改善收斂性,但記憶體使用量也會增加。
指定 METHOD2 後,當 CG 發散或失效時可切換至替代反覆法。此功能是以 CG 為主要求解器時的備援機制,其餘設定值與資料行沿用主要求解器的設定。
前處理¶
前處理是為改善反覆法收斂性而轉換係數矩陣的處理,只在選擇反覆法時套用。直接法不使用前處理。即使使用相同反覆法,不同前處理器也可能大幅改變收斂所需的反覆次數與計算時間。
| 前處理器 | 特徵 | 適用指標 |
|---|---|---|
| SSOR | 標準前處理器。支援多色排序。 | 優先嘗試的候選方法。廣泛用於結構分析。 |
| 對角縮放 | 使用對角成分的輕量前處理器。 | 希望降低計算成本時。 |
| BILU | 以區塊為單位的不完全 LU 分解。 | SSOR 難以收斂之問題的候選方法。 |
| AMG | 使用 Trilinos-ML 的代數多重網格法。 | 大型問題或由階層性誤差成分主導之問題的候選方法。 |
| SAINV | Sparse Approximate Inverse。 | 接觸問題或分散式記憶體環境中的特殊前處理候選方法。 |
| RIF | Robust Incomplete Factorization。 | 不完全分解系列的另一候選方法。 |
SSOR 是標準選項,OpenMP 平行時使用多色排序版本。對角縮放較輕量,但改善收斂的效果依問題而異。BILU 實作為以區塊為單位的不完全 LU 分解,也支援一般 DOF 的矩陣。BILU 系列在反覆法發散時,有自動增加對角修正係數 SIGMA_DIAG 並重試的路徑;值的指定方式請參閱關鍵字參考。
AMG 使用 Trilinos-ML,因此建置時必須啟用 ML。可指定平滑器、多重網格循環、粗化方法等,詳細值請參閱關鍵字參考。若在含接觸問題或 MPC 的平行分析中使用 SAINV,區域分割時的重疊深度有時會影響收斂性。
直接法¶
直接法透過分解係數矩陣來求解線性方程式。由於不依賴反覆次數,因此較為穩健,在含接觸分析或約束條件的分析中可作為穩定選項。另一方面,問題規模增大時,記憶體使用量也會增加。
| 直接法 | 平行環境 | 用途 |
|---|---|---|
MUMPS |
MPI 平行 | 在分散式記憶體環境中以直接法求解稀疏矩陣。 |
MKL |
Intel MKL / OpenMP | Intel MKL 的直接法。內部使用 Intel PARDISO。多個 MPI 程序時使用 Cluster MKL 路徑。DIRECTmkl 是 MKL 的別名。 |
直接法可用於對稱與非對稱矩陣。MUMPS 與 MKL 必須在建置時連結相應程式庫。沒有這些程式庫的環境無法使用,因此所需相依程式庫與 CMake 選項請參閱建置指南。
FrontISTR 也有不使用外部程式庫的內建直接法路徑,但一般分析選擇直接法時,通常應優先考慮 MUMPS 或 MKL。
直接法不套用前處理。即使在 !SOLVER 指定前處理器,直接法路徑也不會參照該設定。
MPC 處理方式¶
MPC 處理方式是將由多點約束連接的自由度反映到線性方程式中的方法。即使輸入中的約束式相同,不同處理方式也會改變係數矩陣的性質與收斂性。
| MPC 處理方式 | 定位 | 預設用途 |
|---|---|---|
| 懲罰法 | 對約束式加入較大的剛性,以近似滿足約束。 | 直接法的預設值。 |
| MPC-CG 法 | 在反覆法內處理含約束之矩陣向量乘積的舊式方法。 | 不建議使用。 |
| 顯式自由度消去法 | 消去受約束自由度,求解縮減後的線性系統。 | 反覆法的預設值。 |
直接法預設使用懲罰法,反覆法預設使用顯式自由度消去法。MPC-CG 法是為相容性保留的舊式選項;一般新分析應使用顯式自由度消去法或所選直接法的預設處理。
MPC 處理方式可透過 !SOLVER 的 MPCMETHOD 明確指定。各值的意義與格式請參閱關鍵字參考。
接觸自由度消去¶
接觸自由度消去是在將線性系統交給線性求解器前,先縮減 SLAGRANGE 接觸新增的接觸自由度。消去接觸自由度有時可改善反覆法所處理線性系統的性質。
預設的自動模式下,使用反覆法時會進行接觸自由度消去,使用直接法時則不進行。直接法提供直接處理含接觸自由度之擴展系統的路徑。
明確指定 CONTACT_ELIM 後,即使使用直接法也可進行接觸自由度消去。輸入端對接觸類型、接觸配對、接觸演算法的選擇,請參閱接觸與嵌入頁面。
輔助功能¶
可利用條件數估算、矩陣傾印與記錄輸出來調查求解器的收斂性與效能。一般分析不需要這些功能,主要在除錯或效能評估時啟用。
| 功能 | 用途 | 備註 |
|---|---|---|
| 條件數估算 | 在 CG 與 GMRES 中輸出條件數指標。 |
可在啟用 LAPACK 的建置中使用。 |
| 矩陣傾印 | 將交給求解器的矩陣與右側向量儲存至檔案。 | 支援 Matrix Market、CSR、BSR 格式。 |
DUMPEXIT |
矩陣傾印後結束分析。 | 僅取出矩陣供外部驗證時使用。 |
ITERLOG |
輸出反覆法的收斂歷程。 | 用於確認殘差變化。 |
TIMELOG |
輸出求解器計算時間。 | VERBOSE 會輸出更詳細的明細。 |
STEPLOG |
輸出步驟資訊。 | 用於確認分析程序。 |
矩陣傾印是用外部工具確認分析所組裝係數矩陣的功能。啟用 DUMPEXIT 後,會在儲存矩陣與右側向量時結束分析。條件數估算是可用於 CG 與 GMRES 的試驗性功能,用於診斷收斂性。
相關項目¶
- 線性求解器(理論) — 反覆法與前處理的數學原理。
- 非線性反覆與時間積分 — 呼叫線性求解器的 Newton 反覆、接觸反覆與時間積分框架。
- 區域分割 — MPI 平行分析與重疊深度的指定。
- 接觸與嵌入 — 接觸類型與接觸演算法的選擇。
- !SOLVER — 求解器與前處理器參數的值及格式。
- 必要與選用相依程式庫 —
MUMPS、MKL(Intel PARDISO)、Trilinos-ML、LAPACK 等相依程式庫。