CFD | 同位網格(Collocated Grid)加 Rhie-Chow 插值的組合
From Gemini
交錯網格與同位網格的比較:為何現代 CFD 軟體全面轉向同位網格
在計算流體力學(CFD)的早期發展中,交錯網格(Staggered Grid)(如 MAC 網格)是絕對的主流,因為它在數學上天然避免了壓力棋盤狀振盪。然而,現代商業和開源 CFD 軟體(如 ANSYS Fluent、Star-CCM+、OpenFOAM)卻幾乎全面轉向同位網格(Collocated Grid)加 Rhie-Chow 插值的組合。
主流 CFD 軟體放棄交錯網格、全面採用同位網格的核心原因在於:幾何適應性與程式開發的複雜度。
1. 核心原因對比
| 特性 | 交錯網格 (Staggered Grid) | 同位網格 (Collocated Grid) |
|---|---|---|
| 網格類型適應性 | 極差。基本只能用於結構化網格(如笛卡爾網格)。 | 極佳。天然支持任意多面體、非結構化、三角形/四面體網格。 |
| 複雜幾何處理 | 遇到邊界呈曲線或不規則形狀時,投影和法線定義極度痛苦。 | 透過貼體網格(Body-fitted)或非結構網格,輕鬆應對複雜幾何。 |
| 控制體積數量 | 3D 情況下需要 4 套控制體積(壓力 1 套,\(u, v, w\) 各 1 套)。 | 全域只需要 1 套控制體積,所有變數共用同一個網格單元。 |
| 資料結構與記憶體 | 鄰居索引與邊界條件定義極其複雜,不易模組化。 | 拓撲結構簡單,陣列儲存清晰,對高效率平行運算非常友善。 |
| 防振盪機制 | 幾何天然免疫(不需要額外修正)。 | 依賴 Rhie-Chow 插值 等數值修正來消除振盪。 |
2. 深入原因分析
① 非結構化網格與複雜幾何的災難(最關鍵原因)
交錯網格的本質是把速度分量定義在網格面上。在正交的笛卡爾網格(Cartesian Grid)中這很容易:\(u\) 在垂直於 \(x\) 軸的面上,\(v\) 在垂直於 \(y\) 軸的面上。
但當面對汽車、飛機、葉輪等複雜幾何時,我們必須使用非結構化網格(如四面體、稜柱體或任意多面體)。此時:
- 網格面不再朝向正 \(x, y, z\) 方向,而是各種奇形怪狀的傾斜面。
- 如果要在交錯網格上定義速度,你必須定義「面法向速度」,這會導致動量方程式的對流項與擴散項在非正交網格下的坐標變換極度複雜,甚至無法封閉求解。
- 同位網格將速度向量 \(\mathbf{u} = (u,v,w)\) 作為一個整體存在單元中心,無論網格怎麼變形,動量方程式的形式完全不變。
② 程式碼維護與多物理場耦合的難度
在交錯網格中,因為變數儲存在不同的幾何位置,意味著程式內部的資料結構需要為每個變數建立不同的鄰居清單(Mesh Topology)。
更糟的是,當 CFD 要耦合多物理場(如燃燒、化學反應、共軛傳熱 CHT、流固耦合 FSI)時,溫度 \(T\)、物種濃度 \(Y_{i}\) 等純量儲存在壓力中心,而速度在面上。這會導致在計算對流項或邊界條件時,需要在不同網格系統間進行大量的內插轉換,大幅降低計算效率並增加 Bug 的機率。
③ 現代計算效率與平行的需求
同位網格由於只有一套網格,在進行大規模平行運算(MPI 區域分解)或在 GPU 上加速時,其記憶體存取是連續且規律的。交錯網格則需要處理多套網格邊界的資料交換,平行化的複雜度會呈幾何級數上升。
總結
交錯網格在數學上很完美,但在工業界追求「任意複雜幾何都能算」的現實需求下遇到了瓶頸。
隨著 1983 年 Rhie 和 Chow 提出了著名的插值方法,成功在同位網格上消除了棋盤狀振盪,同位網格最後的致命缺點被補齊。這使得「同位網格 + Rhie-Chow 插值」成為了現代通用 CFD 軟體的絕對標準。