SIMPLE vs SIMPLEC

在 CFD(计算流体力学)中,SIMPLE 和 SIMPLEC 都是压力-速度耦合(Pressure-Velocity Coupling)的经典算法。

当你的网格质量不佳,特别是存在明显的**非正交性(Non-orthogonality)歪斜度(Skewness)**时,这两种算法的表现差异会变得非常关键。

以下是针对这两种情况的详细对比和建议:

1. 核心差异:通量修正的方式

为了理解它们在劣质网格上的表现,首先要看它们在数学上怎么处理“速度修正”的:

  • SIMPLE 算法

    • 做法:在推导压力修正方程时,直接忽略了邻点速度修正项(Neighbor velocity correction terms)。
    • 后果:这个忽略过于激进。为了防止计算发散,SIMPLE 算法必须对压力修正值使用非常保守的亚松弛因子(Under-relaxation Factor)。通常压力松弛因子只能取到 0.3 左右。
    • 收敛速度:因为松弛因子小,每次迭代迈的步子很小,收敛慢。
  • SIMPLEC 算法 (SIMPLE-Consistent)

    • 做法:它没有粗暴地忽略邻点项,而是假设邻点的速度修正量近似等于中心点的速度修正量。
    • 后果:这个近似在数学上更“一致”(Consistent),保留了更多信息。因此,SIMPLEC 允许使用更激进的松弛因子(通常压力松弛因子可以设为 1.0,只要动量松弛因子合适)。
    • 收敛速度:通常比 SIMPLE 快。

2. 在非正交性(Non-orthogonality)网格下的表现

非正交性意味着网格面法向量与两个网格中心连线不平行。这会引入额外的扩散项(非正交扩散项)。

  • SIMPLE

    • 表现比较稳健但缓慢。由于 SIMPLE 本身就需要很强的亚松弛(0.3/0.7),这种“慢吞吞”的特性反而让它对非正交产生的数值误差有较强的容忍度。它不太容易直接发散,但你可能需要迭代几千步。
    • 风险:如果非正交性极高(>70-80度),压力修正方程可能变得很难求解,SIMPLE 可能会陷入震荡。
  • SIMPLEC

    • 表现如果不调整参数,容易不稳定。虽然 SIMPLEC 理论上收敛快,但在高度非正交的网格上,它那个“邻点修正量等于中心点修正量”的假设可能会失效,导致压力修正过头。
    • 策略:在非正交网格上使用 SIMPLEC 时,你通常不能完全像在正交网格上那样把压力松弛设为 1.0。你可能需要稍微降低动量松弛因子,或者启用专门的“非正交修正”(Non-orthogonal Correctors)循环。

3. 在高歪斜度(Skewness)网格下的表现

Skewness(如 CPVA 歪斜)是指网格中心连线没有穿过公共面的几何中心。这会直接影响梯度的计算精度。

  • SIMPLE

    • 表现更能抗“烂网格”。高 Skewness 会导致离散方程的系数矩阵性质变差。SIMPLE 因为每一步更新量很小(重松弛),能像“减震器”一样吸收掉部分由于 Skewness 引起的局部数值尖峰。
    • 适用性:如果你只有一套质量很差的四面体网格(Tetrahedral mesh),且 Skewness 很高(>0.85),SIMPLE 往往是救命稻草——它虽然慢,但它能算下去。
  • SIMPLEC

    • 表现容易发散。由于 SIMPLEC 步长较大,当遇到 Skewness 导致的梯度计算错误时,这种错误会迅速在压力-速度耦合中放大,导致“浮点溢出”或发散。

4. 总结与应用建议

场景 A:网格稍微有点歪,但整体还行(一般工程网格)

  • 首选:SIMPLEC
  • 设置:压力松弛因子 1.0,动量松弛因子 0.7~0.8。
  • 理由:能显著减少迭代步数,节省时间。

场景 B:网格质量很差(高 Skewness > 0.85 或严重非正交)

  • 首选:SIMPLE
  • 设置:保持默认保守设置(压力 0.3,动量 0.7)。如果还发散,继续降低动量松弛因子到 0.5。
  • 理由:这时候“稳”比“快”重要。SIMPLEC 在这种情况下经常算几步就炸。

场景 C:非稳态计算(Transient / PISO 模式)

  • 如果是非稳态计算,通常推荐 PISO 算法,它专门为处理非正交性设计了“邻点校正步”(Neighbor Correction steps)。如果只能选 SIMPLE/SIMPLEC,非稳态下 SIMPLEC 优于 SIMPLE,因为每个时间步内它能更快达到收敛标准。

怎么判断用哪个?

试错法流程:

  1. 先用 SIMPLEC 跑 50-100 步。
  2. 观察残差曲线。如果残差平稳下降,恭喜你,能省不少时间。
  3. 如果残差剧烈震荡或者直接报错 Divergence detected in AMG solver,立马切换回 SIMPLE