本系列来看看 OpenFOAM 中的壁面函数。壁面函数的本质,是边界条件。这里主要来看看壁面函数的基本原理,OpenFOAM 中实现了的壁面函数,以及选择壁面函数的一些参考依据。
OpenFOAM-3.0 的湍流模型(四)
最后来看一个小问题:OpenFOAM-3.0 中的湍流模型是怎么编译的。在这之前,湍流模型的编译很直观,将需要编译的湍流模型的代码的 .C
文件写到 Make/files
里就好了。可是,在 OpenFOAM-3.0 里,很多湍流模型代码的 .C
文件并没有写到 Make/files
里,而是在 makeTurbulenceModels.C
里类似这样写1
2#include "mykEpsilon.H"
makeRASModel(mykEpsilon);
然后在 Make/files
里写的是这个 makeTurbulenceModels.C
文件。为什么呢?
这里来分析一下这个问题。
OpenFOAM-3.0 的湍流模型(三)
有了上一篇的基础,就很容易做到添加新的湍流模型了,这里分别给出对四类湍流模型增加新模型的方法。探索过程不详述了,仅给出结果。
OpenFOAM-3.0 的湍流模型(二)
本篇分析 OpenFOAM-3.0 中湍流模型的 RTS 机制。RTS 机制主要是通过调用几个相关的宏函数来实现的,所以,分析 RTS 机制需要将相关的宏函数展开。四类湍流模型,机制是类似的,这里以单相不可压缩湍流模型为例,后文会给出所有其他湍流模型相关的宏函数的展开结果,供读者参考。
RTS 机制的基础这里不再重复了,读者若对这里涉及到 RTS 机制的名称感兴趣,可以参考我以前对 RTS 机制的解读。
OpenFOAM-3.0 的湍流模型(一)
本系列分析 OpenFOAM-3.0 版本的湍流模型。从 3.0 版开始,OpenFOAM 中的湍流模型架构发生了较大的变化,其实这种变化在 2.3 版开始已经初露端倪,在 2.3 版里,多相流的湍流模型已经开始跟单相流湍流模型分开。从 3.0 开始,单相流湍流模型和多相流湍流模型统一到了一个架构下。本系列将对 3.0 版的湍流模型进行详细的分析,分为四部分:结构概览,RTS 机制分析,编译新模型的方法,以及一些补充说明。
OpenFOAM 中的边界条件(四)
JohnsonJackson 边界条件
本篇来看用于气固两相流模拟的 JohnsonJackson 边界条件。这组边界条件用于设定双流体模型中固相在壁面的速度和颗粒温度。根据 N. Reuge 2008, CES,壁面上的固相速度和颗粒温度可以表示为:
其中,$u_m$ 指的是 m 相在壁面切向上的滑移速度。
下面来看 OpenFOAM 中对这两个边界条件的实现
OpenFOAM 中的边界条件(三)
OpenFOAM 中有很多复杂的边界都是继承自上篇中提到的三个基础边界条件,这些边界条件的代码在上一篇的基础上就很容易看懂了。只不过,还有一些边界条件,不是继承自这三个基础边界条件的,其中有一些都直接或间接继承自另一个重要的边界条件: transformFvPatchField
。本篇来看看这个 transformFvPatchField
以及几个继承自它的边界条件。
OpenFOAM 中的边界条件(二)
本篇在上一篇的基础上来解读 OpenFOAM 中的基础边界条件。基础边界条件一般包括三类,一是Dirichlet 边界,二是 Neumann 边界,三是混合 Dirichlet 和 Neumann 的边界。
OpenFOAM 中的边界条件(一)
本系列解读 OpenFOAM 中边界条件的实现。主要关心一些几个问题:
- OpenFOAM 中边界条件是怎样与有限体积离散部分交互的?
- 怎么从代码看懂一个边界条件具体是怎么计算边界上的值的?
- 怎么定制一个边界条件?
本篇先阐述第一个问题。
fvOptions 之 semiImplicitSource
上篇浅析了 fvOptions 框架的结构,这篇来看一个具体的源项类: semiImplicitSource
。