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\]