根据选择的湍流模型,有新的物理场被引入到仿真中,这些物理场也需要求解。为了简单起见,以k−ω湍流模型为例。基本上有两种类型的边界条件可用于模拟边界处的湍流模型的参数:标准条件和湍流特定条件。

1、标准边界条件

如果用户知道特定的流入值,则可以使用标准边界条件,例如fixedValue或inletOutlet边界条件。这些值,即湍流动能 k 和特定耗散率 ω 可以根据湍流强度 I 或混合长度 L 手动计算(参见 [4]):

这里湍流强度应选择为,对于自由流,I = 0.05 是常见的选择。假设流入边界处的湍流粘度比 非常低,通常选择为 ,正如 Fluent [4] 所讨论的那样。当混合长度已知时,通常使用公式(7.4),而公式(7.3)可以直接用于其他情况。当这些值被确定时,它们可以简单地分配给各自的边界。

2、湍流指定边界条件

在某些情况下可以使用湍流特定的边界条件,这反过来又实现了上述一些方程,然后可以将其用于流入的初始化。这些特殊流入边界条件中的第一个是 turbulentIntensityKineticEnergyInlet,它根据方程 (7.2) 初始化 。将此边界条件应用于边界 INLET,会得下面的代码。

INLET
{
    type turbulentIntensityKineticEnergyInlet;
    I 0.05;
}

此外,可以使用 turbulentMixingLengthFrequencyInletFvPatchScalarField 直接定义基于湍流混合长度初始化(方程(7.4))的 ω 入口。与 turbulentIntensityKineticEnergyInlet 类似,此边界条件只需要一些附加参数,然后根据方程 (7.4) 计算 ω。这里列出了名为INLET的边界所需的字典,Cμ直接从选定的湍流模型中读取,不需要再次指定。

INLET
{
    type turbulentMixingLengthFrequencyInlet;
    L 0.005;
}

对于其他湍流模型引入的其他领域,OpenFOAM 框架中包含等效的边界条件。

7.2.1 预处理

其他一些有用的预处理应用程序包括 boxTurb 和 applyBoundaryLayer。 boxTurb 可用于初始化非均匀且出现湍流的速度场,这对于湍流效应起主要作用且必须从模拟开始时就存在的情况很方便。得到的速度场仍然满足连续性方程,因此散度为零。

使用 applyBoundaryLayer 可以简化近壁流的开发并提高其收敛性。它根据 1/7 次幂律计算边界层(参见 [4, 2]),并相应地调整速度场。

此工具提供了两个自定义命令行参数 Cbl。 Cbl 将边界层厚度计算为其参数和到壁面的平均距离的乘积。可选地,湍流粘度场 可以存储到磁盘,湍流模型不要求存在该物理场。

7.2.2 后处理

结合前面描述的预处理工具,在OpenFOAM中有各种各样的后处理应用。在每次使用湍流模型的模拟之后,需要检查 y+ 值。为此,有 yPlusRAS和 yPlusLES。它们分别可以用于RANS或LES模拟。它们的工作原理非常相似,不再赘述。要计算特定的 y+ 值,必须在有问题的模拟案例中调用相应的命令。默认情况下,为案例的每个可用时间目录计算 y+。可以通过传递带有适当参数的 -times 参数或简单的 -latestTime 选项来将其限制为特定的类型。

(缩短的)输出如下所示:

?>  simpleFoam -postProcess -func yPlus -latestTime
Reading field p
Reading field U
Reading/calculating face flux field phi
Selecting incompressible transport model Newtonian
Selecting turbulence model type RAS
Selecting RAS turbulence model kOmegaSST
Selecting patchDistMethod meshWave
[...]
No finite volume options present
yPlus yPlus write:
writing field yPlus
patch FOIL y+ : min = 62.8783, max = 151.871, average = 122.018

从上面的列表可以看出,wall类型的边界的最小、最大和平均 y+ 值被打印到屏幕上。

有时,为了后处理的目的,必须计算雷诺应力 并将其写入物理场。命令行工具 R 专门为此而定制,不需要额外的参数,并以与 yPlus 后处理函数类似的方式执行,如图所示。

simpleFoam -postProcess -func R -latestTime