interPhaseChangeFoam 算例配置

《模拟弹头在水中的空化现象》一文中,用到了 interPhaseChangeFoam 求解器,这一求解器的功能是求解有界面、有相变的流动,常用来模拟空化。一些朋友对这个求解器的配置感兴趣,本文将详细说明这个求解器的配置文件。

我们还是以 cavitatingBullet 这个算例为例,算例的位置是$FOAM_TUTORIALS/multiphase/interPhaseChangeFoam/cavitatingBullet。这个文件夹中包含了 0.orig/、constant/ 和 system/ 三个文件夹,还有 Allrun 和 Allclean 两个脚本文件。用文本编辑器打开 Allrun 脚本,便可知道这个算例的运行过程。

Allrun 脚本的每一行都有注释,可读性很好。可以看到,这个算例的几何模型是从另一个文件夹复制过来的,网格是用 blockMesh 和 snappyHexMesh 工具生成的。在调用 interPhaseChangFoam 之前,先用 potentialFoam 初始化了流场,这一用法详见《用 potentialFoam 初始化流场》。

不同于一些算例,本算例的初边值条件被保存在 0.orig/ 文件夹。运行 potentialFoam 求解器之前,0.orig/ 文件夹被复制为 0/。这是因为运行 potentialFoam 后 0/ 中的初边值条件会被替换、覆盖,因而需要一个保存最原始边界条件的文件夹,orig 正是 original 的缩写。

0.orig/ 文件夹中有四个文件,分别是水的百分比 alpha.water、速度势 Phi、压强 p_rgh 和流速 U。其中, Phi 是势流方程的初边值条件,用于 potentialFoam。

需要注意的是,用 potentialFoam 求解器初始化流场不是必须的,完全可以直接调用 interPhaseChangFoam。这一简化版见 GitHub phresher/OpenFOAM_Tutorials_Plus

还有一点不同于一些求解器,inter…Foam 系列求解器使用压强 p_rgh 而非运动压强 p。

初边值条件介绍完了,再来看下 constant/ 文件夹中的模型常数。文件夹中 g 和 turbulenceProperties 这两个文件大家都很熟悉了,我们看下 transportProperties 这个文件,空化特性全在这儿。phaseChangeTwoPhaseMixture 关键词定义了空化模型,空化模型是用来刻画相变过程的,OpenFOAM 里有 SchnerrSauer、Kunz 和 Merkle 三种可选,其中 SchnerrSauer 是基于简化 Rayleigh-Plesset 方程的,使用范围最广,fluent 里也有。另外两种都是“基于经验的比例化空化模型”[1],不太常用。

最后看下 system/ 文件夹,需要注意的是 controlDict 里开启了自适应时间步,最大库朗数是5,程序会根据流场调整时间步,使得库朗数小于5。

adjustTimeStep          on;
maxCo                   5;

interPhaseChangFoam 求解器使用 PIMPLE 算法进行流速压强耦合,可以在较大的库朗数下收敛。

更多求解器细节请参考《 interPhaseChangeFoam求解器解析》。

[1] 洪峰等. 改进 Schnerr-Sauer 模型在水翼空化模拟中的评估分析. 哈尔滨工程大学学报. 2016

常恭

作者: 常恭

略懂 OpenFOAM

发表评论