ofsp2026 25_pimpleSol

Created time
Mar 28, 2026 08:56 AM
type
Post
status
Published
date
Mar 28, 2026
slug
ofsp2026 25_pimpleSol
summary
tags
ofsp2026
OpenFOAM
category
post
icon
password
Place
Last edited time
Mar 28, 2026 09:16 AM
📌
Important
访问 https://aerosand.cc 以获取最近更新。

0. 前言

在上一篇讨论中,我们详细讨论了 PIMPLE 算法,也粗略看了 OpenFOAM 中 PIMPLE 算法主框架的代码片段。
这里,我们将基于对算法的讨论,进行代码实现,理解一些代码的使用。
本文主要讨论
PIMPLE算法实现
计算 cavity 算例

1. 控制方程

控制方程如下
连续方程(质量方程)
动量方程为
依然有如下处理
  • 粘性项已经简化
  • 不考虑重力
  • 密度已经处理
注意,动量方程存在瞬态项。

2. 项目准备

终端输入命令,建立项目

2.1. 说明文件

为项目提供说明文件

2.2. 脚本文件

我们依然使用之前的脚本。以后除非改动,不再赘述。
终端输入命令,新建脚本
清理脚本 Allclean 如下
运行脚本 Allrun 如下
不同担心脚本,随着讨论深入,我们会不断扩充脚本的内容,尝试和熟悉不同的写法。

3. 项目实现

我们用最简单的代码去实现 PISO 算法。

3.1. 主源码

考虑 24_pimple 中的讨论,在主源码中实现 PIMPLE 算法主要框架
可以看到算法主框架和上一篇的讨论一样。

3.2. 场的接入

场的接入 createFields.H 和之前的求解器一样,具体如下

3.3. 动量预测

动量预测在 UEq.H 中,代码如下

3.4. 压力动量修正

压力动量修正在 pEqn.H 中,代码如下
📌
Tip
注意,为了方便理解,这里同样没有进行非正交修正。因为后面使用的 cavity 算例网格简单,所以也没有什么影响。

3.5. 项目Make

如上面讨论的那样,该求解器并没有使用更多的库,所以项目 Make 文件无需额外增加链接的指定。
其中的 Make/files 内容如下
其中的 Make/options 内容如下

3.6. 编译

终端输入命令,编译整个项目
编译成功,没有问题。

3.7. 测试算例

我们调整拷贝的测试算例,用来测试上述求解器。
控制字典 controlDict 中修改如下
求解字典 fvSolution 中修改如下
其他文件保持不变。

3.6. 编译运行

编译项目
运行项目
后处理可视化
可以在 paraview 中查看计算结果。

4. 小结

通过求解器项目的实现和讨论,相信我们现在应该对 PIMPLE 算法和求解器实现有了较为全面的理解。
回顾这几篇算法讨论,我们大概讨论清楚了各种算法的主要思路和简单版本的代码实现。压力速度耦合的思想几乎贯穿了OpenFOAM中各种类型的计算流体动力学求解器。很多情况都是基于这些主要算法进行拓展的。
读者在自动调整代码的时候,比对原生求解器,探索原生求解器其他代码语句,会发现很多被我们讨论所精简掉的内容。
一方面,为了方便理解算法主要思路,我们避免对其他内容的涉及。不用担心,以后我们都会一一讨论解释。另一方面,我们使用 cavity 算例作为调试算例,较为简单,即使没有“边界条件约束”、“一致性检查”等等,也可以计算得到可用的结果。
本文完成讨论
PIMPLE算法实现
计算 cavity 算例
 

支持我们

📌
Tip
希望这里的分享可以对坚持、热爱又勇敢的您有所帮助。
如果这里的分享对您有帮助,您的评论或赞助将对本系列以及后续其他系列的更新、勘误、迭代和完善都有很大的意义,这些行动也会为后来的新同学的学习有很大的助益。
赞助打赏时的信息和留言将用于展示和感谢。
Alipay
Alipay
 
Copyright @ 2026 Aerosand
  • OpenFOAM 开发代码 :GPL v3
 
 
Loading...