猜你喜欢
OpenFOAM多物理场计算基础与建模

OpenFOAM多物理场计算基础与建模

书籍作者:杨文明 ISBN:9787122422286
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:2838
创建日期:2023-06-06 发布日期:2023-06-06
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

工程技术中越来越依赖于多物理场的有效求解来理解所遇到实际问题的物理本质,OpenFOAM 是工程和科学计算领域解决多物理场数值计算的有力工具。本书内容涵盖使用OpenFOAM 必须掌握的基础知识和针对特定物理问题编制OpenFOAM 求解器的应用实例,既能满足初学者的学习需求,又能供熟练使用OpenFOAM 的人员用于提高OpenFOAM 编程能力。
全书共分为11 章,前5 章为基础部分,包括Linux 操作系统基础、ParaView 数据分析和可视化基础、OpenFOAM 编程的C++基础、OpenFOAM 编程基础和有限体积法基础;后6 章为应用部分,包括编写OpenFOAM 算例、编写OpenFOAM 求解器、不可压缩流体流动求解器、多区域静磁场求解器、铁磁流体磁-流耦合流动求解器和纳米颗粒直接荷电过程多场耦合求解器。
本书可作为高等院校机械工程、动力工程及工程热物理、航空航天等专业的研究生教材,也可以供从事计算多物理场研究和使用OpenFOAM 的技术人员参考。

编辑推荐

1.本书分两大部分:基础和应用,满足初学者和提升者的不同需求。
2.详细的使用说明和案例分析,为非计算机专业的工程技术人员和科研工作者提供一种使用OpenFOAM解决本领域多物理场计算问题的方法。
3.涵盖Linux系统的基本操作、C++语言的基本原理、ParaView后处理软件的使用方法、OpenFOAM程序组织结构,将具体物理场的数学模型转换为计算程序源代码。
4.书中附有大量源代码、操作截图、表格数据,易读易学。

前言

随着计算机技术的发展,数值计算已成为科学研究和解决工程实际问题的重要技术手段。各领域中不可避免地遇到多种物理现象的共同作用,而且有时这些物理现象间还存在相互耦合。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)等项目的资助,在此深表谢意!
限于编著者水平,书中难免出现不妥之处,恳请批评指正。

编著者

目录

第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

短评

写的不错,非常适合自学使用

2023-02-21 13:28:27

书包装的很好,纸质和印刷非常棒,内容编排的很不错

2023-02-18 17:15:34

还行还行还行还行还行还行还行

2023-02-14 16:06:41

学习openfoam很有用的书,全面详细

2023-01-29 15:48:38

难得的好书!

2023-02-03 09:28:39

内容包含OpenFoam入门的几乎全部基础知识,物理场计算案例详实,对Openfoam入门和编制求解器很有帮助。

2023-02-03 21:20:04

比较粗糙,只能用来参考

2023-02-01 08:54:14

书本质量不错,内容等仔细看完再来

2023-01-11 18:18:37

挺好

2022-12-18 18:53:17

书很有用!推荐

2022-12-13 20:05:08

作为一款开源的多物理场计算软件,OpenFOAM被广泛应用于工程领域的各种模拟和优化问题。它提供了丰富的模拟模型和求解器,能够处理流体动力学、热传递、化学反应、结构力学等多个物理场,并能够扩展到更多复杂的模型。同时,由于其开源的特性,用户可以根据自己的需求进行自由的定制和改进,使得OpenFOAM的可扩展性和适用性更加广泛。 OpenFOAM的建模过程虽然需要一定的数学和物理背景知识,但其操作上却比较简便,具体步骤如下: 1、准备物理模型:确定要研究的物理现象、求解器和网格模型等基本参数。 2、建立几何模型:根据研究的物理现象,选择合适的几何建模软件,构建出所需的三维几何模型。 3、网格划分:借助OpenFOAM的网格划分工具,将几何模型划分成一系列小网格,形成计算网格。 4、边界条件设置:根据物理问题,设置各个边界的物理特征,例如速度、压力、温度等。 5、求解器设置:根据不同的物理问题,选择不同的求解器,并设置求解器所需的参数。 6、运行求解器:在计算机上运行OpenFOAM的求解器,进行物理场的计算。 7、结果分析:利用OpenFOAM提供的后处理工具或者其他可视化工具,对计算结果进行分析和展示。 总之,OpenFOAM多物理场计算基础与建模需要一定的数学和物理背景知识,但其操作上并不十分复杂,只要熟悉了基本的建模过程和求解技巧,就能够高效地进行多物理场计算。

2023-03-17 07:12:05

作为一个自由开源的计算流体力学(CFD)软件,OpenFOAM具有广泛的应用领域,包括流体力学、热传导、材料科学等。OpenFOAM具有良好的可扩展性和灵活性,可以方便地进行多物理场的计算和建模。以下是OpenFOAM多物理场计算基础与建模的一些特点和优势: 1. 多物理场计算:OpenFOAM可以计算流体力学、热传导、化学反应、声学等多种物理场的耦合问题。用户只需按照预先设定的通用格式输入物理场参数和边界条件,即可进行组合计算。 2. 开放源代码:OpenFOAM是一款完全开源的软件,用户可以自由获取并使用代码,也可以通过GitHub等平台参与软件改进、完善工作。 3. 灵活的模型构建:OpenFOAM提供了一系列模型构建工具,用户可以选择已有模型或按照自己的需求编写新模型,实现自由组合和仿真。 4. 均质和非均质介质模型:OpenFOAM支持均质和非均质介质的建模,可以实现复杂的地下水流动、气体渗透等物理过程的模拟。 5. 开发模块丰富:OpenFOAM内置的模块具有广泛的交互和引入性。用户可以使用和开发新的模块来扩展和完善系统。 总之,OpenFOAM具有非常丰富的功能和适用范围,对于科学家、工程师等对多物理场计算有需求的人士而言,它是一个不错的选择。

2023-03-17 07:12:05

对于OpenFOAM多物理场计算基础与建模,作为一个AI助手,我没有亲身经验可以分享。但是,从相关资源资料的角度出发,OpenFOAM是一款多用途的开源CFD软件,支持多种物理模型和求解器,包括但不限于: 1.稳态和非稳态流动,液固相变; 2.传热、辐射和化学反应; 3.多相流、燃烧和湍流模拟; 4.结构分析和声学。 在使用OpenFOAM进行多物理场计算和建模时,需要掌握以下基础知识: 1.了解OpenFOAM软件的优势和限制; 2.建立CFD问题的物理模型和计算域; 3.选择适当的物理模型和求解器; 4.对求解器进行配置和调试; 5.使用预处理器和后处理器进行数据处理和可视化。 目前有很多开源的实例提供了OpenFOAM多物理场计算和建模的基础教程和案例,可以帮助读者快速入门。同时,也有很多视频课程可以帮助读者更深入地理解OpenFOAM的使用方法和技巧。综上所述,OpenFOAM多物理场计算基础与建模是一门较为复杂的科学技术,需要不断地实践和学习才能够熟练掌握。

2023-03-17 07:12:05