3.1.4. 非结构网格下的 PDE 求解

以积分形式对流-扩散方程 (Eq.3.1.31) 为例:

\[\frac{\partial}{\partial t} \int_V{\phi \, dV} + \int_S{\mathbf{n} \cdot (\phi \mathbf{v}) dA} = \int_S{\mathbf{n} \cdot (\Gamma \nabla \phi) dA} + \int_V{S_{\phi} \, dV}\]

(1) 对流项的离散

对流项离散形式为 (Eq.3.1.37):

\[\int_S{(\phi \mathbf{v}) \cdot d\mathbf{A}} \approx \sum_f \dot m_f \phi_f\]

其中, 质量流率 \(\dot m_f = \mathbf{v}_f \cdot \mathbf{A}_f\), 定义对流通量 (convective flux) 为 \(F_f = \dot m_f \phi_f\)

在不可压流体模拟中, 计算网格面中心的 \(\mathbf{v}_f\) 需要动量差分方法 (momentum interpolation method, Rhie and Chow)。

对流项由于存在双曲性质,因此需要对网格面中心的 \(\phi_f\) 进行合理的重构 (迎风格式)。

(1.a) 一阶迎风格式

(3.1.55)\[F_f^U = \max(\dot m_f, 0) \phi_P + \min(\dot m_f, 0) \phi_N\]

(1.b) 二阶迎风格式

(3.1.56)\[\begin{split}\tilde{\phi}_f = \left\{ \begin{array}{l} \phi_P + \nabla \phi_P \cdot \mathbf{r}_{Pf}, & \dot m_f \ge 0 \\ \phi_N + \nabla \phi_N \cdot \mathbf{r}_{Nf}, & \dot m_f \lt 0 \end{array}\right.\end{split}\]

其中, \(\nabla \phi_P, \nabla \phi_N\) 的计算见式 Eq.3.1.41

在显式时间推进中, \(F_f = \dot m_f \tilde{\phi}_f\)

在隐式时间推进 (Eq.3.1.22) 中,通常仅将一阶重构部分使用隐式格式:

(3.1.57)\[\begin{split}F_f =& \hat{F}_f^U - F_f^U + \left\{ \begin{array}{l} \phi_P + \nabla \phi_P \cdot \mathbf{r}_{Pf}, & \dot m_f \ge 0 \\ \phi_N + \nabla \phi_N \cdot \mathbf{r}_{Nf}, & \dot m_f \lt 0 \end{array}\right. \\ \hat{F}_f^U =& \max(\dot m_f, 0) \hat{\phi}_P + \min(\dot m_f, 0) \hat{\phi}_N\end{split}\]

(1.c) Rhie-Chow interpolation

Rhie-Chow 差分是非交错网格上 (collocated grid) 不可压缩流动模拟中避免奇偶失联现象 (checkerboard oscillations) 的一种修正的网格中心向网格面中心的插值方法 (交错网格, staggered grid)。

(2) 扩散项的离散

扩散项离散形式为 (Eq.3.1.36):

\[\int_S{(\Gamma \nabla \phi) \cdot d\mathbf{A}} \approx \sum_f (\Gamma \nabla \phi)_f \cdot \mathbf{A}_f\]

根据式 Eq.3.1.50 计算 \(\nabla \phi_f \cdot \mathbf{A}_f\), 根据式 Eq.3.1.39 计算 \(\Gamma_f\) 即可。

以上计算过程中只用到了相邻的网格 (neighbors), 因此相当于结构网格的中心格式。

(3) 源项的离散

源项离散形式为 (Eq.3.1.38):

\[\int_V{S_{\phi} \, dV} \approx S_{\phi} V\]

(4) 时间推进