“ OpenFOAM 研究”博文集
【第一集】
苏军伟 原著
田 超 编纂
2011 年 3 月
说明
本文档内容是根据 苏军伟 博士的 “ OpenFOAM 研究” 博客的博文
整理而成,版权归 苏军伟 博士所有,供国内 OpenFOAM fans 学习使
用,严禁用于商业用途。
OpenFOAM 研究网址: http://blog.sina.com.cn/openfoamresearch
OpenFOAM 开源计算群: 34757558(国内最大,人数最多的在线
CFD 交流平台)
本博文可以作为初学者关于 OpenFOAM 的 Frequently Asked
Questions (FAQ) 文件,用于解答学习 OpenFOAM 中的基础问题,请
new Foamers 详细阅读自己感兴趣的部分。文中不免有疏漏和错误,
恳请广大 Foamers 批评指正。
田 超
2011 年 3 月于北航
387210626(超人不会飞)
2
目录
说明 .................................................................................................................................................... 2
1. 如何做动画 ................................................................................................................................ 5
2. OpenFOAM 第 5 次 workshop ................................................................................................... 5
3. OpenFOAM 中不可压缩湍流大涡求解器 oodles 说明 ............................................................ 5
4. OpenFOAM 中的神奇方程定义方式的背后 ............................................................................. 8
5. OpenFOAM 中雷诺时均湍流求解器 turbFoam 使用 ............................................................... 9
6.
pimple 算法简述 (2009-09-30 09:22:33) 转载 ........................................................................ 16
7. 粒子方法讨论版开版 ............................................................................................................... 18
8. 面向对象—我的一点理解 ....................................................................................................... 18
9. 如何搞多面体网格 ................................................................................................................... 19
OpenFOAM-1.6-ext 的安装过程探讨 ................................................................................. 20
10.
11. 多态实现及其子类父类数据传递的方式
........................................................................... 23
OpenFOAM 与有限元程序包 deal.II 的无缝耦合方法 ....................................................... 24
12.
13.
CAD->GAMBIT->CFD几何 .................................................................................................... 24
OpenFOAM 中非均匀初始场的设定 ................................................................................... 25
14.
15.
OpenFOAM-1.6 中 sample 的使用 ....................................................................................... 28
16. 利用 pyFOAM 残差的输出 ................................................................................................... 31
17. 也来谈谈传值和传址 ........................................................................................................... 32
18. 从 pisoFoam 谈谈 OpenFOAM-1.6 湍流模型的结构变化 .................................................. 33
19. 非惯性旋转系统稳态求解器 simpleSRFFoam的使用 ....................................................... 34
20.
linux 常用命令集 .................................................................................................................. 36
21. 一起看看 OpenFOAM- 1.6 中的 pisoFoam ........................................................................ 38
22. 一起看看 OpenFOAM- 1.6 中的 pisoFoam ........................................................................ 38
23. 深入解析 OpenFOAM 时间控制参数字典文件 controlDict ............................................... 39
24.
OpenFOAM 中的智能指针 autoPtr ..................................................................................... 41
25. 如何实现同一用户下的 OpenFOAM 多版本编译 .............................................................. 42
26. 商业软件划分的网格向 OpenFOAM 转换应注意的问题 .................................................. 44
27.
OpenFOAM 如何定义与时间有关的边界条件 ................................................................... 45
OpenFOAM 中 transportModel 与 viscosityModels 关系 ................................................... 46
28.
29.
OpenFOAM 不可压缩流边界条件的设定之我见
............................................................... 47
OpenFOAM 中气液双欧拉求解器 bubbleColumn 的使用 ................................................. 48
30.
31.
OpenFOAM 不可压缩非牛顿流体层流求解器使用说明
................................................... 50
32.
OpenFOAM 中不可压缩稳态求解器 simpleFoam 的使用 ................................................. 51
33. 深入解析 OpenFOAM 离散格式参数字典文件 fvSchemes................................................ 53
34. 如何使得 OpenFOAM 的 solver 自动调节时间步长 .......................................................... 56
35.
OpenFOAM 中不可压缩流大涡求解器 oodles 的使用 ...................................................... 60
36.
OpenFOAM 中的不可压缩湍流流动求解器 turbFoam 的说明 ......................................... 64
37. 深入解析 icoFoam 下的顶盖驱动流 (cavity) ....................................................................... 68
3
38.
39.
40.
41.
42.
43.
OpenFOAM 中的参数字典使用剖析 ................................................................................... 71
OpenFOAM>>solver>>incompressible>>icoFoam 的说明 ................................................... 72
OpenFOAM 安装详解 ........................................................................................................... 75
OpenFOAM>>solver>>basic>>scalarTransportFoam 的说明 ............................................... 77
OpenFOAM>>solver>>basic>>potentialFoam 的说明 ......................................................... 79
OpenFOAM>>solver>>basic>>laplacianFoam 的说明 .......................................................... 82
4
1. 如何做动画
前几天有网友问怎么将计算结果输出成动画,我想可以分以下几个步骤
1)计算结果 case 文件夹中,输入 paraFoam 打开后处理软件 paraview ,并作后处理作出你想
要的效果。 关于 paraview 怎么用?我以前在 QQ 爱好者群 2 中发过那个 guide,看看就行了,
不是很难。
2)作出想要的效果后,点击 file 菜单下的 save animation 按钮,将每一针都输出成图片。
3)将所有输出的图片能到 windows 中,用 img2ani 将所有的图片转成动画, 或者用 imageReady,
后面这个软件功能强大,但是占的内存超大,动不动就几
理方便多了就。
G,你的图片多了,用前面那个处
2. OpenFOAM 第 5 次 workshop
于 2010 年 6 月 21- 24 日在瑞典 chalmers 科技大学举行。 这次 workshop 的 slide 可以从下
面网址下载
http://web.student.chalmers.se/groups/ofw5/Program.htm
这次 workshop 的参加人数较多,涉及到很多领域。有兴趣的不妨去看看
?
3. OpenFOAM 中不可压缩湍流大涡求解器 oodles 说明
(2009-05-06 05:47:58) 转载
标签: openfoam solver 教育 分类: OpenFOAM 求解器说明
本文谈谈 OpenFOAM 中不可压缩湍流流动大涡求解器
oodles,这也许和研究湍流的同志
们课题更紧密一些。闲言少叙。
OpenFOAM 中湍流模型架构相似,所以大涡求解器和
RAS求解器具有很大的相似之处,
本文在介绍 oodles 时候和 RAS求解器 turbFoam 进行比较。如果大家该求解器不熟悉请参看
本站博文“ OpenFOAM 中的不可压缩湍流流动求解器
( 1)求解器位置: applications\solvers\incompressible\oodles
( 2)求解器文件夹结构
turbFoam 的说明”。
|-options
|-files
| - Make
|
|
|-createFields.H
|-oodles.C
( 3)求解器功能
任意不可压缩湍流流动,湍流模拟大涡模拟(
LES)
( 4)文件说明
1.options
// 编译选项,用于指定编译用到的头文件位置及其动态库
// 文件内容
#用到的头文件文件夹
EXE_INC = \
#大涡湍流模型头文件
-I$(LIB_SRC)/turbulenceModels/LES \
#大涡 delta 函数头文件
-I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \
#传输模型头文件,牛顿流体或者非牛顿流体选择。
-I$(LIB_SRC)/transportModels \
#有限容积方法头文件
-I$(LIB_SRC)/finiteVolume/lnInclude
#网格工具头文件
5
-I$(LIB_SRC)/meshTools/lnInclude \
#取样头文件,比如从场中取出模型符合一定条件的点
-I$(LIB_SRC)/sampling/lnInclude
#用到的动态连接库
EXE_LIBS = \
#不可压缩雷诺时均模型库
-lincompressibleLESModels \
#不可压缩传输模型库(牛顿流体传输模型和非牛顿流体传输模型)
-lincompressibleTransportModels \
#有限容积库
-lfiniteVolume \
#网格相关工具库
-lmeshTools
从上面的 options 可以看出, oodles 和 turbFoam 的编译选项仅仅差别在湍流模型的选择上。
// 用于指定当前要编译的文件,这里不包含头文件,都是
2.files
// 文件内容
oodles.C
// 编译后求解器的名字和存放位置
EXE = $(FOAM_APPBIN)/oodles
// 主文件
*.C 文件。
3.createFields.H
createFields.H 中 oodles 求解器和 turbFoam 几乎完全相同。 差别在湍流模型的创建上。
turbFoam 创建了 RAS模型。
autoPtr turbulence
(
);
incompressible::RASModel::New(U, phi, laminarTransport)
而 oodles 创建了大涡模型
autoPtr turbulence
(
);
incompressible::RASModel::New(U, phi, laminarTransport)
autoPtr 后面会有专门博文介绍这个只能指针,当前你就看成普通指针吧。
createFields.H 其
他代码说明, 请参看本站博文 “ OpenFOAM 中的不可压缩湍流流动求解器 turbFoam 的说明”。
4.oodles.C
// 有限容积离散相关文件
#include "fvCFD.H"
// 单相传输模型。
#include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H"
// 牛顿非牛顿传输
#include "incompressible/transportModel/transportModel.H"
// 大涡模型库
#include "incompressible/LESModel/LESModel.H"
// 文件输入流
#include "IFstream.H"
// 文件输出流
#include "OFstream.H"
// 随机数发生器
#include "Random.H"
6
OpenFOAM 中的不可
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// 主程序入口
int main(int argc, char *argv[])
{
// 设置根目录
#include "setRootCase.H"
// 创建时间对象 runTime
#include "createTime.H"
// 创建网格
#include "createMeshNoClear.H"
// 前面刚谈到的那个文件
#include "createFields.H"
// 连续性误差
#include "initContinuityErrs.H"
Info<< "\nStarting time loop\n" << endl;
// 主流程和 turbFoam 大部分一样,不再累述。具体参看本站博文“
压缩湍流流动求解器 turbFoam 的说明”,下面主要针对差异的地方说明。
for (runTime++; !runTime.end(); runTime++)
{
Info<< "Time = " << runTime.timeName() << nl << endl;
#include "readPISOControls.H"
#include "CourantNo.H"
//turbFoam 的 correct 在后面,大涡在前面,我感觉无所谓了
// 就是时候在第一次动量预测的时候考虑湍流模型。
sgsModel->correct();
fvVectorMatrix UEqn
(
fvm::ddt(U)
+ fvm::div(phi, U)
// 亚格子模型,包括分子扩散项和亚格子应力项的偏分量。
+ sgsModel->divDevBeff(U)
);
// 如果动量预测,则求解动量方程。
if (momentumPredictor)
{
solve(UEqn == -fvc::grad(p));
}
// --- PISO loop
for (int corr=0; corr