开源 CFD 工具库
用户指南-5.0
2018 年 03 月 26 日
东岳流体®荣誉出品
版权声明©2011-2018 OpenFOAM Foundation Ltd.
作者:Christopher J. Greenshields
2.3 版译者(2015 年发布):李东岳、田春来(第 5.5.2 节)、李建治(第 2.3 节)、周后村
(第一章)
3.0 版修订(2016 年发布):李东岳
5.0 版修订(2018 年发布):李东岳、徐笑笑
本指南翻译内容由 OpenFOAM Foundation 授权发布。
勘误、增补请前往 http://www.cfd-china.com/topic/1441
或联系 Email: li.dy@dyfluid.com
前 言
计算流体力学(CFD)是一门朝气蓬勃的学科。
相对于传统的实验研究,CFD 将数学、流体力学、计算机编程进行糅合,主要的研究内
容为采用计算机求解控制流体流动的偏微分方程组,相关的结果可用于指导工业设计。CFD
的特殊性在于只需要计算机即可进行工作。目前大量的行业已经开始使用 CFD 理论来指导
实践,如空气动力学外形优化、气动噪声控制、多相流动混合模拟、化工过程装备设计、大
气环境预测等。
在国外,将 CFD 真正的用于工业设计已经成为大量公司必须进行的作业流程。巨型的
跨国企业有专业的业务部门做 CFD 分析。最近几年,国外也出现一批中小企业提供专业的
CFD 咨询服务。在国内,虽然 CFD 的学术水平与国外平分秋色,但 CFD 的工程应用和国
外相比尚具备一定差距。正因如此,国内 CFD 的工程应用具有极大的发展空间。同时,在
未来的移动互联时代,CFD 必将如一支利箭刺入形形色色的业务部门 。如果以国外的
CFD/CAE 行业为对比标准,国内的 CFD/CAE 行业,将在未来面临势如破竹的发展。
你去了那么多地方,走了那么多的路,你要学会的就是包容和接受这个世界的一切观念
- 我的妻子 “胖猫 ”
OpenFOAM 为世界最大的免费的 CFD 开源软件。英文版的 OpenFOAM User Guide 为
OpenFOAM 自带的权威教材。中文版的《OpenFOAM 用户指南》及《OpenFOAM 编程指南》
(以下简称指南)的翻译工作开始于 2014 年 9 月份,当时我刚到意大利都灵理工大学进行
博士联合培养,彼时尚不具备独立科研能力。利用空闲时间将 OpenFOAM User Guide 进行
全文翻译后获版权发布。指南的翻译工作我认为是有意义的事情。虽然目前英语的普及水平
越来越高,但依然有大量的 CFD 从业者喜欢阅读中文书籍。当然翻译的初心,我只是为了
自己能吸纳 OpenFOAM 领域旷世之作的精髓。为达到这个高度,逐字逐句的原著翻译是惟
一的途径。这奠定了指南的工作背景。
翻译工作进行的时候,业内存在各种不一样的声音。那个时候,我逐一的退出各种
CFD/OpenFOAM 交流群,不受外界干扰,潜心翻译。随后,第一版本的指南于 2015 年 3 月
末如期发布。
我曾经跨过山和大海,也穿过人山人海
- 朴树《平凡之路》
意大利的学业完成后,我于 2017 年前往德国亥姆霍兹计算流体力学研究所进行博士后工作,
后于 2018 年年前回国。在去意大利的时候,每个人都问我为什么去意大利。在回国的时候,
每个人都问我为什么不继续在国外做科研。
我对第一个问题的答案是:为了追随纯粹的 CFD。为追求 CFD,我放弃全美前 100 高
校的博士联培机会(方向略偏离 CFD)而去了意大利。第二个问题的答案是:为了不愧对于
我的家庭。执笔之际,我正值 31 周岁。与胖猫恋爱 7 年,我有近 3 年为了提高自己的 CFD
技术独居海外。在随后胖猫备孕的 2018 年,需要丈夫的陪伴。
回国前的 15 天,我独自去了一个荒凉的小岛(富埃特文图拉)。我理解要做好一个丈
夫,我舍弃的是国外那令人向往的 CFD 科研氛围。在欧洲的近三年,我没去过任何地方游
玩,因为我不想牺牲做 CFD 的时间。相反的,我频繁和 CFD 大牛建立联系。我联系
OpenFOAM 基金会商议 OpenFOAM 中国发展事宜,我联系 ESI 集团讨论 ESI-OpenCFD 的
走向,我和帝国理工大学的 Issa 讨论 PISO 算法,我参加世界级 CFD 大会只为了见那些活
在文献里的 CFD 人物。
工作和生活的难以平衡在我身上是一个鲜活的例子。曾经我为了追随 CFD 穿过人山人
海。现在,我需要承担家庭的责任。
裂痕是什么,那是阳光照进来的地方
在北京生存,面临的是最高的房价,需要竞争的是顶尖的人才。2014 年,我创立东岳流体。
2015 年,我创立 CFD 界。2016 年,我创立 CFD 中文网。2017 年,我创立 CFD 百科并举办
OpenFOAM Knowledge Share 课程。这一系列平台广为人知。另一方面,我也时刻警惕,恪
守在 China 生存的各种规则。特定时期,我的平台不会有我的名字。体制内已退休的家父,
以及我在学术界的朋友都建议我关闭我的全部平台保持低调。不是毛头傻小子,我深谙China
自古以来的处事规则。是龙得盘着,是虎得卧着。然而一方面我身背每月 5 位数的房贷,一
方面我脱离不开体制内。万幸的是我做的是 CFD,可以一个记事本+电脑走天下。
这一段话可能写的你不知所以然。因为有些话,到了嘴边,只能咽下去。未来的某一天,
极少一部分人也会面临跟我一样的境遇。这些人,是那些心存向往、内心不安、为生活躁动
的人。在这些时代弄潮儿广为人知的一面,存在着别人无法体会的裂痕,但这或许,才是阳
光照进来的地方。
感谢我的父母在这 30 年来倾其所有的支持我的学业和事业。感谢我的妻子义无反顾的支持
我近 3 年的独自出国留学。
最重要的感谢,献给那些一直以来默默支持和关注我的人们。
我是李东岳,我对我国所有令人钦佩的 CFD 从业者,
此致
敬礼!
2018 年3 月25 日
北京五道口
目录
第一章 .............................................................................................................................................. 1
第二章 .............................................................................................................................................. 3
2.1 顶盖驱动流........................................................................................................................ 4
2.1.1 前处理 .................................................................................................................... 4
2.1.1.1 网格生成 ...................................................................................................... 4
2.1.1.2 边界和初始条件 .......................................................................................... 6
2.1.1.3 物理特性 ...................................................................................................... 8
2.1.1.4 控制.............................................................................................................. 8
2.1.1.5 离散方法和矩阵求解器设置 ...................................................................... 9
2.1.2 查看网格............................................................................................................... 10
2.1.3 运行算例............................................................................................................... 11
2.1.4 后处理 .................................................................................................................. 12
2.1.4.1 面场显示 .................................................................................................... 12
2.1.4.2 切面............................................................................................................ 14
2.1.4.3 云图............................................................................................................ 14
2.1.4.4 矢量图........................................................................................................ 14
2.1.4.5 绘制流线图 ................................................................................................ 17
2.1.5 网格细化............................................................................................................... 17
2.1.5.1 使用存在的算例创造新算例 .................................................................... 17
2.1.5.2 生成细网格 ................................................................................................ 19
2.1.5.3 映射算例结果 ............................................................................................ 19
2.1.5.4 控制参数 .................................................................................................... 19
2.1.5.5 后台运行 .................................................................................................... 20
2.1.5.6 在细网格上绘制矢量 ................................................................................ 20
2.1.5.7 绘制数据图 ................................................................................................ 21
2.1.6 网格非均匀分布 ................................................................................................... 23
2.1.6.1 创建非均匀化网格 .................................................................................... 24
2.1.6.2 调整时间步 ................................................................................................ 26
2.1.6.3 映射场........................................................................................................ 26
2.1.7 增加雷诺数........................................................................................................... 26
2.1.7.1 前处理........................................................................................................ 27
2.1.7.2 运行算例 .................................................................................................... 27
2.1.8 高雷诺数流动 ....................................................................................................... 28
2.1.8.1 前处理........................................................................................................ 28
2.1.8.2 运行............................................................................................................ 30
2.1.9 改变算例几何 ....................................................................................................... 31
2.1.10 后处理 ................................................................................................................ 34
2.2 带孔盘体应力分析 .......................................................................................................... 34
2.2.1 网格生成............................................................................................................... 35
2.2.1.1 边界和初始条件 ........................................................................................ 39
2.2.1.2 物理特性 .................................................................................................... 40
2.2.1.3 热物理特性 ................................................................................................ 40
2.2.1.4 控制............................................................................................................ 40
2.2.1.5 离散格式和求解器控制 ............................................................................ 41
2.2.2 运行 ...................................................................................................................... 43
2.2.3 后处理 .................................................................................................................. 43
2.2.4 练习 ...................................................................................................................... 45
2.2.4.1 增加网格数量 ............................................................................................ 45
2.2.4.2 引入网格非均匀化 .................................................................................... 45
2.2.4.3 改变平板尺寸 ............................................................................................ 45
2.3 溃坝 ................................................................................................................................. 46
2.3.1 生成网格............................................................................................................... 46
2.3.2 边界条件............................................................................................................... 48
2.3.3 设置初始场........................................................................................................... 49
2.3.4 流体特性............................................................................................................... 50
2.3.5 湍流模型............................................................................................................... 51
2.3.6 时间步长控制 ....................................................................................................... 51
2.3.7 离散格式............................................................................................................... 52
2.3.8 矩阵求解器控制 ................................................................................................... 53
2.3.9 运行程序............................................................................................................... 53
2.3.10 后处理 ................................................................................................................ 53
2.3.11 并行运行............................................................................................................. 53
2.3.12 算例的并行后处理 ............................................................................................. 56
第三章 ............................................................................................................................................ 59
3.1 OpenFOAM 编程语言 ....................................................................................................... 59
3.1.1 普适性编程语言 ................................................................................................... 59
3.1.2 面向对象和 C++ ................................................................................................... 60
3.1.3 方程呈现............................................................................................................... 60
3.1.4 求解器代码........................................................................................................... 61
3.2 编译程序和库.................................................................................................................. 61
3.2.1 头文件:.H ........................................................................................................... 61
3.2.2 使用 wmake 进行编译 ......................................................................................... 63
3.2.2.1 包含文件头 ................................................................................................ 63
3.2.2.2 链接库........................................................................................................ 64
3.2.2.3 编译源文件 ................................................................................................ 64
3.2.2.4 运行 wmake ............................................................................................... 65
3.2.2.5 wmake 环境变量设置 ................................................................................ 65
3.2.3 移除依赖包文件:wclean ................................................................................... 65
3.2.4 编译库 .................................................................................................................. 66
3.2.5 编译实例:pisoFoam 求解器 .............................................................................. 67
3.2.6 调试与优化........................................................................................................... 69
3.2.7 链接自定义库 ....................................................................................................... 70
3.3 运行程序 ......................................................................................................................... 71
3.4 并行计算 ......................................................................................................................... 71
3.4.1 网格分解与初始场数据 ....................................................................................... 72
3.4.2 并行文件输入和输出 ........................................................................................... 74
3.4.2.1 选择 fileHandler ......................................................................................... 74
3.4.2.2 变更现存文件 ............................................................................................ 75
3.4.2.3 多线程支持 ................................................................................................ 75
3.4.3 运行并行算例 ....................................................................................................... 75
3.4.4 多硬盘数据阵列分布 ........................................................................................... 76
3.4.5 并行后处理........................................................................................................... 77
3.4.5.1 重组网格和数据 ........................................................................................ 77
3.4.5.2 分解场后处理 ............................................................................................ 77
3.5 标准求解器...................................................................................................................... 77
3.5.1 基本求解器........................................................................................................... 77
3.5.2 不可压缩求解器 ................................................................................................... 78
3.5.3 可压缩求解器 ....................................................................................................... 78
3.5.4 多相流求解器 ....................................................................................................... 79
3.5.5 直接模拟求解器 ................................................................................................... 80
3.5.6 燃烧求解器........................................................................................................... 80
3.5.7 传热求解器........................................................................................................... 80
3.5.8 颗粒跟踪求解器 ................................................................................................... 81
3.5.9 分子动力学模拟 ................................................................................................... 81
3.5.10 电磁求解器......................................................................................................... 82
3.5.11 应力分析求解器 ................................................................................................. 82
3.5.12 金融分析求解器 ................................................................................................. 82
3.6 标准工具 ......................................................................................................................... 82
3.6.1 前处理工具........................................................................................................... 82
3.6.2 网格生成............................................................................................................... 83
3.6.3 网格转换............................................................................................................... 83
3.6.4 网格处理............................................................................................................... 84
3.6.5 其他网格工具 ....................................................................................................... 85
3.6.6 后处理 .................................................................................................................. 85
3.6.7 数据后处理........................................................................................................... 86
3.6.8 面处理工具........................................................................................................... 86
3.6.9 并行后处理........................................................................................................... 87
3.6.10 热物理模型程序 ................................................................................................. 87
3.6.11 其他程序............................................................................................................. 88
第四章 ............................................................................................................................................ 89
4.1 OpenFOAM 文件结构 ....................................................................................................... 89
4.2 基本输入输出格式 .......................................................................................................... 90
4.2.1 通用语法规则 ....................................................................................................... 90
4.2.2 字典 ...................................................................................................................... 90
4.2.3 文件头 ................................................................................................................... 91
4.2.4 链表 ...................................................................................................................... 92
4.2.5 Scalar 标量、Vector 矢量、Tensor 张量 .............................................................. 93
4.2.6 量纲 ...................................................................................................................... 93
4.2.7 单位类型............................................................................................................... 94
4.2.8 场 .......................................................................................................................... 94
4.2.9 宏 .......................................................................................................................... 95
4.2.10 文件包含............................................................................................................. 96
4.2.11 常规表达式......................................................................................................... 97
4.2.12 关键词顺序......................................................................................................... 97
4.2.13 内嵌代码............................................................................................................. 98
4.3 时间和输入输出控制 .................................................................................................... 100
4.3.1 时间控制............................................................................................................. 100
4.3.2 数据写入............................................................................................................. 100
4.3.3 其他设定............................................................................................................. 101
4.4 离散格式 ....................................................................................................................... 102
4.4.1 时间格式............................................................................................................. 104
4.4.2 梯度格式............................................................................................................. 104
4.4.3 散度格式............................................................................................................. 105
4.4.4 面法向梯度格式 ................................................................................................. 107
4.4.5 拉普拉斯格式 ..................................................................................................... 108
4.4.6 插值格式............................................................................................................. 109
4.5 求解和算法控制 ............................................................................................................ 109
4.5.1 矩阵求解器......................................................................................................... 110
4.5.1.1 求解残差 .................................................................................................. 110
4.5.1.2 预条件共轭梯度求解器 .......................................................................... 111
4.5.1.3 光顺器...................................................................................................... 112
4.5.1.4 多重网格求解器 ...................................................................................... 112
4.5.2 亚松弛 ................................................................................................................ 113
4.5.3 PISO、SIMPLE 及 PIMPLE .................................................................................... 114
4.5.3.1 参考压力 .................................................................................................. 115
4.5.4 其它参数............................................................................................................. 115
4.6 算例管理工具................................................................................................................ 115
4.6.1 文件管理脚本 ..................................................................................................... 115
4.6.2 foamDictionary 工具 ............................................................................................ 116
第五章 .......................................................................................................................................... 119
5.1 网格 ............................................................................................................................... 119
5.1.1 网格规范以及限制 ............................................................................................. 119
5.1.1.1 点 ............................................................................................................. 119
5.1.1.2 面 ............................................................................................................. 120
5.1.1.3 网格单元 .................................................................................................. 120
5.1.1.4 边界.......................................................................................................... 121
5.1.2 polyMesh .............................................................................................................. 121
5.1.3 cellShape .............................................................................................................. 122
5.1.4 一维、二维以及轴对称问题 ............................................................................. 122
5.2 边界 ............................................................................................................................... 122
5.2.1 几何边界类型 ..................................................................................................... 125
5.2.2 基本边界类型 ..................................................................................................... 126
5.2.3 衍生边界类型 ..................................................................................................... 127
5.2.3.1 inletOutlet ................................................................................................. 127