上一篇博文解读了 kineticTheoryModel
其中提到需要调用子模型来完成其功能,这里将 OpenFOAM 中 kineticTheoryModel
模型的子模型罗列如下。
OpenFOAM-2.3.x 中的 twoPhaseEulerFoam 解析之 kineticTheoryModel
OpenFOAM 中双流体模型的 kineticTheoryModel 是以 “ Derivation, implementation, and validation of computer simulation models for gas-solid fluidized beds, B.G.M. van Wachem, Ph.D. Thesis, Delft University of Technology, Amsterdam, 2000. “ 为蓝本来设计的,下面分析这个类的代码。需要注意的是,这个类需要调用一些别的类(如 viscosityModel 等,后面会一一分析)来完成其功能。
C++ 中派生类引用与基类引用的隐式转换
在读 OpenFOAM 代码过程中,有一类应用初看之下觉得很费解,比如 OpenFOAM-2.3.x 的 twoPhaseEulerFoam
,createFields.H 有这么一段:1
2
3
4
5phaseModel& phase1 = fluid.phase1();
phaseModel& phase2 = fluid.phase2();
volScalarField& alpha1 = phase1;
volScalarField& alpha2 = phase2;
乍看之下,感觉有点奇怪:怎么能将 phaseModel 类的引用直接赋值给 volScalarField 类的引用呢?后来查看了一下 phaseModel 类的定义,发现原来 phaseModel 类是 volScalarField 类的派生,由此上面代码就好理解了,无非是将派生类引用赋值给基类引用而已。
在 CentOS 上安装 OpenFOAM
本篇记录我在 CentOS 上编译安装 OpenFOAM 的过程。我需要在不能联网且没有 root 权限的集群上使用OpenFOAM ,最早的时候,我使用的是 centFOAM project 提供的 64bit CentOS 安装包,这个很方便,把压缩包下载,解压,然后配置一下环境变量就可以了。但是后来 centFOAM 好像不再更新了,所以我只好尝试着自己编译。
由于集群上缺少一些 OpenFOAM 依赖的包,要是一个一个去下载源码编译以补齐那些依赖的包,实在很费劲,所以我采取了另一种尝试:在虚拟机里安装跟集群上一样的系统,然后在虚拟机里编译好 OpenFOAM ,再拷贝到集群上去用(据信 cenoFOAM project 提供的安装包也是在虚拟机编译好的,而且在 cfd-online 论坛上也见有人推荐这么做)。我尝试过在 CentOS 5.4 ,CentOS 6.3 以及 Scientific Linux 6.5 上安装过 OpenFOAM-2.3.x,都成功了,过程大同小异。下面是我的安装过程的一个简要记录。
OpenFOAM-2.3.x 中的 twoPhaseEulerFoam 解析之曳力模型的调用过程
前面有三篇博文对 OpenFOAM-2.1.x 中的 twoPhaseEulerFoam
求解器进行了解读,然而 OpenFOAM-2.3.x 中,这个求解器的代码有了很大的变化。本文将以一个曳力模型的调用过程为例,介绍 OpenFOAM-2.3.x 中 twoPhaseEulerFoam
是如何调用相间作用力模型的。后续还将对 OpenFOAM-2.3.x 中的 twoPhaseEulerFoam
的其他方面进行解读。
twoPhaseEulerFoam 全解读之三
本系列将对OpenFOAM-2.1.1 中的 twoPhaseEulerFoam
求解器进行完全解读,共分三部分:方程推导,代码解读,补充说明。本篇对 twoPhaseEulerFoam
中的 alphaEqn.H
进行详细地的解读,并作一些补充说明。
在 Windows 7 下配置 OpenFOAM 运行环境
本篇介绍如何在 Windows 7 64 bit 下配置 OpenFOAM 的编译及运行环境。我并不打算在 windows 下进行 OpenFOAM 的开发,这里的折腾仅仅是作为一种测试,想看看目前的 OpenFOAM for windows 安装能做到什么程度。我使用的是Creative Fields提供的安装包,编译环境是基于 Mingw-64 来搭建的,linux模拟环境采用的是 MSYS,终端使用的是 mintty。经过一番折腾,我成功在 Windows 下安装了OpenFOAM-2.3.0,程序可以串行或并行运行,也可以用 wmake 编译新的代码。本篇博文不会一步一步详细介绍我的搭建过程,仅介绍一些基本的原则以及我遇到的坑。尤其注意的是,以下很多步骤其实对于安装 OpenFOAM for Windows 不是必需的,仅仅是因为我的特殊要求而徒增折腾而已。
foamTimeAverage
在前面的一篇博文中,我介绍了fieldAverage
这个functionObject
的用法,其中提到, 可以用window
这个参数来控制所计算的时均值的时间范围。如果 base = time
且window = 10
,那从第10s以后,每个时刻 t 输出的时均值其实相当于从 t-10 到 t 这个时间段内的时均值。但是,根据分析可以发现,这个时均值并不严格等价于从 t-10 时刻到 t 时刻某个场的时均值。有时候,需要从某个时刻才开始计算时均值,而fieldAverage
没有参数可以控制从某个时刻才开始计算时间平均。于是我参照OpenFOAM
的patchAverage.C
的代码写了一个后处理程序,用来计算指定时间段内的某个场的时均值。
twoPhaseEulerFoam 全解读之二
本系列将对OpenFOAM-2.1.1 中的 twoPhaseEulerFoam
求解器进行完全解读,共分三部分:方程推导,代码解读,补充说明。本篇对 twoPhaseEulerFoam
中的 UEqn.H
和 pEqn.H
中的代码进行详细地的解读。