ofsp2026 23_pisoSol

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

0. 前言

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

1. 控制方程

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

2. 项目准备

终端输入命令,建立项目

2.1. 说明文件

为项目提供说明文件

2.2. 脚本文件

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

3. 项目实现

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

3.1. 主源码

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

3.2. 场的接入

场的接入 createFields.H0fsp_21_simpleSol 一样,具体如下

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. 小结

通过求解器项目的实现和讨论,相信我们现在应该对 PISO 算法和求解器实现有了较为全面的理解。
下一篇,我们将讨论 PIMPLE 算法。
本文完成讨论
PISO算法实现
计算 cavity 算例
 

支持我们

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