PISO法 — 非定常计算的故障排除
本文已迁移至综合版本
更全面的内容请查看 piso-algorithm.html。
更全面的内容请查看 piso-algorithm.html。
PISO法 — 非定常计算的故障排除
PISO法的典型问题
用PISO法进行非定常计算时发散了,原因是什么?
让我们看看PISO法发散的五大原因。
1. CFL数太大
症状:计算开始直后或流场发展后发散
对策:
- 将
maxCo设置为0.5以下(使用OpenFOAM的adjustTimeStep时) - Fluent中将Global Courant Number设置为1以下
- 切换到PIMPLE并增加nOuterCorrectors
2. 初始条件不适当
症状:在最初几个时间步长发散
对策:
- 首先用SIMPLE法求解定常问题,将其作为初始条件
- 用非零速度场初始化,而不是零速度
- 正确初始化湍流量(k、omega)(从湍流强度和长度尺度)
3. 边界条件处的反流
出口处反流会导致发散吗?
特别是在涡脱落等问题中,出口处容易出现局部反流。
对策:
- 将出口位置设在足够下游(物体后20D以上)
- OpenFOAM:使用
inletOutlet边界条件 - Fluent:启用Backflow Direction Specification
4. 网格质量问题
PISO特别关注的质量指标:
| 指标 | 允许值 | PISO特有的注意事项 |
|---|---|---|
| 非正交性 | < 70度 | 用nNonOrthogonalCorrectors进行修正 |
| 歪斜度 | < 0.85 | 启用Skewness Correction |
| 单元体积比 | < 10:1 | 急剧变化会导致压力振荡 |
5. 时间离散化与空间离散化不匹配
症状:计算稳定但结果非物理
原因:使用2阶时间离散化(backward)但空间采用1阶迎风格式→时间和空间精度不平衡
对策:使时间和空间精度相匹配。如果时间是2阶,空间也应该是2阶或更高。
PISO vs PIMPLE的选择判断
请告诉我应该使用PISO还是PIMPLE的判断标准。
如果困惑的话,PIMPLE比较安全,追求精度就用PISO,这样理解对吗?
完全正确。将PIMPLE的nOuterCorrectors=1就相当于PISO,所以也可以先用PIMPLE开始,稳定后再将nOuterCorrectors=1减少这样的策略。
Coffee Break 闲话
"用PISO进行计算,但压力振荡不停"——常见陷阱
用PISO进行非定常计算时,压力场呈锯齿状振荡——这样的咨询意外地很多。原因大多是"nCorrectors(修正循环次数)设为1"。在默认为1的求解器中,每个时间步只进行1次压力修正,所以PISO的真正优势无法发挥。改成2~3次的话,会明显变光滑。另一个原因是边界条件的时间步不一致——入口条件随时间呈阶梯状变化的话,这种不连续会在PISO迭代中被放大。PISO的故障排除,从"算法设置参数"和"边界条件的时间一致性"这两点怀疑是诊断的定石。
相关主题
本文的评价
感谢您的回答!
有参考
价值
价值
希望
更详细
更详细
报告
错误
错误