描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787122422286
1.本书分两大部分:基础和应用,满足初学者和提升者的不同需求。2.详细的使用说明和案例分析,为非计算机专业的工程技术人员和科研工作者提供一种使用OpenFOAM解决本领域多物理场计算问题的方法。3.涵盖Linux系统的基本操作、C 语言的基本原理、ParaView后处理软件的使用方法、OpenFOAM程序组织结构,将具体物理场的数学模型转换为计算程序源代码。4.书中附有大量源代码、操作截图、表格数据,易读易学。
工程技术中越来越依赖于多物理场的有效求解来理解所遇到实际问题的物理本质,OpenFOAM 是工程和科学计算领域解决多物理场数值计算的有力工具。本书内容涵盖使用OpenFOAM 必须掌握的基础知识和针对特定物理问题编制OpenFOAM 求解器的应用实例,既能满足初学者的学习需求,又能供熟练使用OpenFOAM 的人员用于提高OpenFOAM 编程能力。全书共分为11 章,前5 章为基础部分,包括Linux 操作系统基础、ParaView 数据分析和可视化基础、OpenFOAM 编程的C 基础、OpenFOAM 编程基础和有限体积法基础;后6 章为应用部分,包括编写OpenFOAM 算例、编写OpenFOAM 求解器、不可压缩流体流动求解器、多区域静磁场求解器、铁磁流体磁-流耦合流动求解器和纳米颗粒直接荷电过程多场耦合求解器。本书可作为高等院校机械工程、动力工程及工程热物理、航空航天等专业的研究生教材,也可以供从事计算多物理场研究和使用OpenFOAM 的技术人员参考。
第1 章 Linux 操作系统基础 001
1.1 Linux 操作系统简介 001
1.2 Shell 及其基本操作 002
1.3 Linux 文件系统结构及管理 005
1.4 gedit 文档编辑 011
第2 章 ParaView 数据分析和可视化基础 013
2.1 ParaView 图形用户界面组成 013
2.2 由数据源生成数据集和可视化 014
2.3 加载数据文件 016
2.4 ParaView 数据模型 018
2.5 显示数据 023
2.5.1 创建视图 023
2.5.2 渲染视图(Render View) 024
2.5.3 图表视图(Chart View) 028
2.5.4 比较视图(Comparative View) 033
2.6 过滤数据(Filtering Data) 034
2.6.1 创建和修改过滤器 034
2.6.2 用于提取子数据集的过滤器 036
2.6.3 用于几何操作的过滤器 039
2.6.4 用于数据采集的过滤器 040
2.6.5 用于属性操作的过滤器 044
2.7 选择数据(Selecting Data) 046
2.7.1 使用视图创建数据选择 046
2.7.2 使用Find Data 面板创建数据选择 047
2.7.3 提取和冻结数据选择 049
2.8 动画 050
2.8.1 动画视图(Animation View) 050
2.8.2 为包含时间值的数据集创建动画051
2.8.3 设置动画中的相机参数 052
2.9 保存结果 053
2.9.1 保存数据集 053
2.9.2 保存渲染结果054
2.9.3 保存动画056
2.9.4 保存状态056
2.9.5 提取器(Extractors) 057
2.10 ParaView 高级设置058
2.10.1 颜色设置058
2.10.2 多块数据检查器(Multiblock Inspector) 062
2.10.3 注释 063
2.10.4 坐标轴设置 063
2.10.5 定制ParaView064
第3 章 OpenFOAM 编程的C 基础067
3.1 C 程序组成067
3.1.1 C 程序的总体组成067
3.1.2 C 语句068
3.1.3 代码块 072
3.1.4 函数简介 075
3.2 C 支持的数据类型076
3.2.1 基本数据类型 077
3.2.2 复合类型078
3.2.3 数据的存储方式082
3.2.4 名称空间082
3.3 C 函数083
3.3.1 处理数组的函数083
3.3.2 处理字符串的函数084
3.3.3 处理结构的函数084
3.3.4 内联函数085
3.3.5 使用引用变量作为函数形参085
3.3.6 函数的默认参数087
3.3.7 函数重载087
3.3.8 函数模板088
3.4 类和对象 089
3.4.1 类的定义和使用089
3.4.2 对象数组 093
3.4.3 操作符重载 093
3.4.4 友元094
3.4.5 类对象作为返回值时的返回种类095
3.4.6 静态数据成员和静态成员函数096
3.4.7 类的类型转换096
3.4.8 指向对象的指针 097
3.4.9 类继承 098
3.4.10 类模板 102
第4 章 OpenFOAM 编程基础 106
4.1 OpenFOAM 介绍 106
4.1.1 OpenFOAM 简介及功能106
4.1.2 OpenFOAM 安装107
4.1.3 OpenFOAM 的目录结构 110
4.2 OpenFOAM 中的张量运算 113
4.2.1 张量表示法 114
4.2.2 张量运算 115
4.2.3 二阶张量及其代数运算 117
4.2.4 常用矢量公式 118
4.2.5 张量运算在OpenFOAM 中的表示 119
4.2.6 OpenFOAM 中的基本张量类 121
4.2.7 OpenFOAM 中的量纲和单位制 127
4.3 OpenFOAM 的基本数据类型 131
4.3.1 简单数据类型 131
4.3.2 Tuple2 135
4.3.3 多项式方程 135
4.3.4 链表 137
4.3.5 HashTable 139
4.3.6 autoPtr140
4.3.7 物理常数 141
4.4 编程中常用的OpenFOAM 标准类 142
4.4.1 tmp 142
4.4.2 refCount143
4.4.3 IOobject 143
4.4.4 dictionary 144
4.4.5 Time 147
4.4.6 argList 148
4.4.7 token 149
4.5 Foam 名称空间 151
4.5.1 Foam 名称空间中的函数 151
4.5.2 Foam 名称空间中的变量 153
4.5.3 Foam 名称空间中的别名154
4.6 OpenFOAM 中的物理场类 156
4.6.1 Field156
4.6.2 FieldField 158
4.6.3 DimensionedField 159
4.6.4 GeometricField 160
4.6.5 Boundary 166
4.6.6 fvPatchField 167
4.7 OpenFOAM 编程语句 169
4.7.1 简单语句 169
4.7.2 与字典操作相关的语句 170
4.7.3 输入输出 172
第5 章 有限体积法基础 173
5.1 物理现象的数学描述173
5.1.1 控制微分方程的物理含义 173
5.1.2 质量守恒方程 174
5.1.3 动量守恒方程 175
5.1.4 能量守恒方程 175
5.1.5 化学组分守恒方程 177
5.2 离散方法178
5.2.1 偏微分方程数值求解的总体过程 178
5.2.2 有限体积法离散 180
5.2.3 以单元为中心的FVM 182
5.2.4 离散方法需满足的基本原则 183
5.2.5 有限体积网格 184
5.3 代数方程组求解 188
5.3.1 直接法 188
5.3.2 迭代法191
5.3.3 求解代数方程的松弛技术 199
5.3.4 方程的残差 200
5.4 扩散项的离散202
5.4.1 二维规则笛卡儿网格内部单元上的离散 202
5.4.2 二维规则笛卡儿网格边界单元上的离散 203
5.4.3 非均匀扩散系数的处理 205
5.4.4 非正交非结构化网格时的离散206
5.4.5 非正交网格时的边界条件 207
5.4.6 网格偏斜时的离散208
5.4.7 各向异性扩散208
5.4.8 正交曲线坐标系中的离散 209
5.5 梯度计算210
5.5.1 笛卡儿网格中的梯度计算 210
5.5.2 非结构化网格上的梯度计算——Green-Gauss 梯度 210
5.5.3 非结构化网格上的梯度计算——小二乘梯度 212
5.5.4 由单元质心上的梯度插值得到面的上梯度 213
5.6 对流项的离散 213
5.6.1 一维网格时的中心差分法 213
5.6.2 一维网格时的迎风格式 214
5.6.3 一维网格时的顺风格式 215
5.6.4 一维网格时的截断误差 215
5.6.5 数值稳定性 216
5.6.6 高阶迎风格式 217
5.6.7 二维稳态对流项的离散 220
5.6.8 非结构化网格时的高阶方法 221
5.6.9 迁延修正法222
5.7 对流项离散的高精度格式222
5.7.1 NVF 222
5.7.2 对流有界性准则 224
5.7.3 NVF 框架下的HR 格式 225
5.7.4 TVD 框架及该框架下的HO 和HR 格式 226
5.7.5 非结构化网格中的HR 格式 230
5.7.6 HR 格式的迁延修正、DWF 和NWF 方法 230
5.7.7 对流边界条件232
5.8 瞬态项的离散 233
5.8.1 有限差分法 233
5.8.2 有限体积法 237
5.8.3 非均匀时间步时的离散 241
5.9 源项的离散 243
第6 章 编写OpenFOAM 算例245
6.1 OpenFOAM 算例的基本目录结构 245
6.2 OpenFOAM 算例文件的基本格式 246
6.3 划分网格 248
6.3.1 OpenFOAM 中与网格有关的类 249
6.3.2 OpenFOAM 中的网格描述 252
6.3.3 使用blockMesh 划分网格 256
6.4 设置微分方程离散方法 260
6.5 设置代数方程求解方法和误差 265
6.6 求解过程控制 269
6.6.1 全局控制 269
6.6.2 时间和数据输入/输出控制 270
6.7 边界和边界条件272
6.7.1 边界 272
6.7.2 OpenFOAM 中与边界有关的类和函数274
6.7.3 边界条件 275
6.7.4 OpenFOAM 中边界和边界条件的关系280
6.8 使用#codeStream 的内联编程280
6.8.1 使用#codeStream 代码定义边界条件 281
6.8.2 使用#codeStream 代码定义初始条件283
6.8.3 使用#codeStream 代码同时定义初始条件和边界条件284
6.9 模型和物理特性286
6.9.1 热物理模型286
6.9.2 紊流模型 290
6.9.3 输运/黏度模型 293
6.10 后处理296
6.10.1 后处理命令行 296
6.10.2 数据采样和监测 302
6.11 算例管理工具305
第7 章 编写OpenFOAM 求解器308
7.1 OpenFOAM 求解器组成308
7.2 编写OpenFOAM 求解器时常用的标准头文件310
7.3 定义描述物理场的变量和常量313
7.3.1 定义常量 313
7.3.2 定义变量 314
7.4 方程离散317
7.4.1 fvMatrix 类模板 317
7.4.2 fvc 和fvm 名称空间 318
7.4.3 微分方程的表示 319
7.5 编写OpenFOAM 求解器时常用的语句块321
7.5.1 物理场典型操作语句 321
7.5.2 访问Time 和fvMesh 类对象的属性 321
7.5.3 访问GeometricField 类对象的属性 323
7.6 求解器编译323
7.6.1 使用wmake 编译 324
7.6.2 使用wclean 删除依赖列表 326
7.6.3 编译库 326
7.6.4 调试消息 326
7.6.5 将用户定义的库链接到应用程序 327
7.7 运行求解器327
7.7.1 运行求解器的方法 327
7.7.2 并行运行应用程序 329
7.8 编写新求解器的一般方法 333
7.9 OpenFOAM 中的常用标准求解器 336
7.9.1 基本CFD 代码 336
7.9.2 不可压缩流动求解器 337
7.9.3 可压缩流动求解器 338
7.9.4 多相流 338
7.9.5 传热和浮力驱动流求解器 338
7.9.6 其他求解器 340
7.10 OpenFOAM 中的标准实用程序 341
第8 章 物理场计算实例——不可压缩流体流动求解器345
8.1 动量方程的离散 345
8.2 压力修正方程 348
8.3 求解算法 350
8.3.1 SIMPLE 和SIMPLEC 算法 350
8.3.2 PISO 算法 357
8.3.3 PIMPLE 算法 360
第9 章 物理场计算实例——多区域静磁场求解器 361
9.1 静磁场的控制方程 361
9.2 控制方程的有限体积离散 362
9.3 同一磁介质内单元间界面上的相对磁导率 363
9.4 不同磁介质间界面上的边界条件 364
9.5 基于多区域耦合方法的求解器编制 367
9.5.1 创建网格、场和不同种类的区域 369
9.5.2 控制方程的离散和求解 369
9.5.3 定义边界条件 370
9.6 求解器验证 372
第10 章 物理场计算实例——铁磁流体磁-流耦合流动求解器375
10.1 控制方程 376
10.2 方程离散和求解方法 378
10.2.1 磁场方程的离散和求解 378
10.2.2 动量方程的有限体积法离散和求解 380
10.2.3 磁化方程的有限体积法离散和求解 384
10.2.4 总体求解过程387
10.3 求解器编制 388
10.3.1 求解器组成388
10.3.2 建立参数和变量389
10.3.3 控制方程的离散和求解 390
10.3.4 后处理——铁磁流体对壁面的平均剪切应力和铁磁流体内涡旋强度的计算 391
10.3.5 算例组成 393
10.4 求解器验证395
10.4.1 无磁场作用时的铁磁流体平面Couette-Poiseuille 流395
10.4.2 铁磁流体平面Couette 流在小剪切率时垂直于外磁场方向上的磁化强度396
10.4.3 垂直于流动方向恒定磁场作用下的铁磁流体平面Couette-Poiseuille 流397
第11 章 物理场计算实例—纳米颗粒直接荷电过程多场耦合求解器399
11.1 控制方程402
11.1.1 电晕放电过程 402
11.1.2 Fuchs 扩散荷电模型 403
11.1.3 边界条件和初始条件406
11.2 求解方法 408
11.2.1 区域离散和方程离散408
11.2.2 求解过程411
11.2.3 计算结合系数? 的方法 412
11.3 求解器编制413
11.3.1 求解器组成 413
11.3.2 建立参数和场量 415
11.3.3 控制方程的离散和求解 416
11.3.4 计算离子-颗粒结合系数 417
11.3.5 定义边界条件 420
11.3.6 算例组成 422
11.4 求解器验证423
11.4.1 电场分布计算结果验证 424
11.4.2 离子-颗粒结合系数计算结果验证424
11.4.3 荷电效率计算结果验证 424
参考文献426
随着计算机技术的发展,数值计算已成为科学研究和解决工程实际问题的重要技术手段。各领域中不可避免地遇到多种物理现象的共同作用,而且有时这些物理现象间还存在相互耦合。OpenFOAM 为解决多物理场的数值计算提供了有效手段,已成为工程和科学计算的有力工具。编写本书的目的正是为非计算机专业的工程技术人员和科研工作者提供一种使用OpenFOAM 解决本领域多物理场计算问题的方法。
OpenFOAM 是运行在Linux 环境下,用于物理场操作和处理的开源C 应用程序库。基于OpenFOAM 的计算多物理场方法是一门交叉学科,涉及物理学、计算数学、计算机科学等诸多内容。但本书在基础部分不针对具体的物理场,侧重从使用OpenFOAM 的角度出发,内容尽量涵盖使用OpenFOAM 前必须掌握的基础知识,包括与OpenFOAM 相关的Linux 系统、C 语言、ParaView后处理软件以及OpenFOAM 编程基础等,这些内容能够满足OpenFOAM 初学者的学习需求。在本书的实例部分,分别针对特定物理场,如不可压缩流体流场、多介质区域静磁场和较为复杂的耦合多物理场,介绍相应OpenFOAM 求解器的编制方法,作为OpenFOAM 的熟练使用者提高编程技术的学习内容。
OpenFOAM 中虽然内置了大量标准求解器和物理模型,使操作人员能够像使用传统商业计算软件那样解决物理场计算问题,但编著者认为OpenFOAM 引人之处在于:操作人员可以在OpenFOAM 的基本框架内按照自己的意愿修改各数学模型和求解算法的底层代码,创建针对具体问题的专门模型和求解方法,这对于进行数学建模和算法研究的人员极具诱惑力。而能够做到理解OpenFOAM 标准库中的代码,并能够轻松自如地修改和编写代码,达到求解自定义模型的目标,要求使用人员熟练掌握Linux 系统的基本操作、C 语言的基本原理、ParaView 后处理软件的使用方法、OpenFOAM 程序组织结构,还要熟练应用有限体积法这一数值计算方法,将具体物理场的数学模型转换为计算程序源代码,这些要求正是本书内容安排的初衷所在。
本书的部分内容为编著者前期研究成果的总结,这些研究得到了国家自然科学基金(52005033)和北京市自然科学基金(3214048)等项目的资助,在此深表谢意!
限于编著者水平,书中难免出现不妥之处,恳请批评指正。
编著者
评论
还没有评论。