ofsp2024-09 SIMPLE求解器

ofsp2024-09 SIMPLE求解器
Created time
Jul 10, 2025 11:12 AM
type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jul 10, 2025 11:14 AM
😀
前言: Preface:
 
参考:
感谢原作者们的无私引路和宝贵工作。
前置: OpenFOAM基础算法 SIMPLE & PISO & PIMPLE | 𝓐𝓮𝓻𝓸𝓼𝓪𝓷𝓭 (aerosand.cn)
前面已经讨论了定常标量输运方程的求解、非定常波动方程的求解。如果我们想进一步学习,可能在网上很多教程都推荐从 icoFoam 开始学习,但是当我们打开 icoFoam 求解器的源代码,会发现手足无措,陌生的代码和算法把我们蒙在了窗户纸后面,阻碍我们前进。
事实上,初学者在看 OpenFOAM 标准求解器之前应该有两件事要做
  1. 理解算法 OpenFOAM算法 SIMPLE & PISO & PIMPLE | 𝓐𝓮𝓻𝓸𝓼𝓪𝓷𝓭 (aerosand.cn)
      • 这篇算法讨论其实已经写了不少代码的实现部分
  1. 直观的 SIMPLE 算法实现
      • 没有任何 SIMPLE 以外功能的代码
所以我们仍然不急于看 icoFoam 求解器或者其他标准求解器。下面我们不考虑任何的优化、也不考虑收敛检查等等额外的功能,单从 SIMPLE 算法出发,直观地在 OpenFOAM 中实现该算法的求解器。
控制方程如下
$$ \nabla\cdot U = 0 \tag{1}$$ $$ \frac{\partial U}{\partial t} + \nabla\cdot UU - \nabla\cdot(\mu\nabla U) = -\nabla p \tag{2} $$
建立本文项目文件夹

应用准备

脚本和说明

略。

求解器

createFields.H

文件 /userApp/createFields.H 内容如下

主源码

主源码中应用 SIMPLE 算法,实现如下
参考压力解释可见 关于fluent中的压力(一) - 希望先生 - 博客园 (cnblogs.com)

编译

调试算例

  • system/blockMeshDict 无需修改,我们仍然使用原几何模型和几何网格
  • system/controlDict 无需修改,我们仍然使用求解控制的设置(步长步数等)
  • decomposedParDictPDRblockMeshDict 不用管,本文用不到
  • constant/transportProperties.H 无需修改,我们沿用粘度参数
  • debug_case/0/ 初始条件无需修改

fvSchemes

注意各个格式需要至少提供默认值,例如

fvSolution

最后添加语句

controlDict

自行尝试更改计算参数

计算

可以看到计算结果。

整理代码

我们可以把代码整理为如下文件结构

主源码

readfvSolution.H

UEqn.H

pEqn.H

编译计算

仍然使用上面的调试算例,结果是相同的。

小结

我们通过百分百还原数学方程,没有加入其他任何功能,最后我们得到了一个单纯基于 SIMPLE 算法的求解器。
 
 
 
💡
欢迎留言讨论,反馈建议和意见,赞助打赏。 Feel free to leave comments, feedback, suggestions, opinions, and donations..
Alipay
Alipay
 
 
上一篇
ofsp2024-10 结语
下一篇
OpenFOAM基础算法 SIMPLE & PISO & PIMPLE
Loading...