CFD: 多相VOF算法 + 相变
VOF多相流方法可用于求解多相流的界面问题,如崩塌的堤坝、极少量的气泡界面、液体晃荡等。界面类存在两个关键问题:
-
界面尽可能要薄;
-
在界面失稳的情况下算法要尽可能的稳定;
本文从最基本的液膜压力降开始分析,一步一步推导VOF模型。对于大量气泡/液滴存在的情况,VOF模型对网格分辨率要求较高。在这种情况下可以使用多流体模型来计算。在有重力以及源项的情况下,有不可溶多相体系动量方程:
其中各项的含义可参考CFD:不可压瞬态PISO算法,
若考虑两种流体均为不可压缩的,也即考虑某种流体运动的流体微元,其密度
在这种情况下,方程(1)和(4)组成了不可压缩多相界面类模型中关于速度和压力的方程。其中不同的相具有不同的密度。在速度
表面张力模化
VOF方程在动量方程右侧存在一个表面张力项需要模化。表面张力最重要的特征即其会导致界面处存在一个尖锐的界面压力降
图中
方程(5)中的
现用
也即:
同理对于
对于纵向,
其中
综合
即:
由于
其中
方程(16)表示界面两端处的压力降,为一个间断函数,只适用于非常尖锐的界面,从物理上更倾向于是一个在界面处施加一个边界条件。在实际计算中,这种情况很难达到且难以实施。Continuum Surface Force模型可以较为容易的模化表面张力。参考上图,在界面处的
其中
方程(17)在
若考虑任意方向,在界面处方程(17)可以写为:
方程(20)表示在任意位置、任意方向上表面张力与压力降相平衡。
VOF方程
方程(20)的右侧即为动量方程的表面张力项。方程(1)还需要做进一步的变化,以使得边界条件的定义更加简单(在双流体模型中也可以进行类似的数学操作)。
首先定义
其中
将其代入到方程(1)有:
其中的
其中粘度为
即粘度为随着空间位置变化的量,其并非一个定值。因此,方程(24)可以简化为:
将其代入到方程(23)有VOF模型的动量方程:
下面来推导VOF中的相方程。方程(1)中的密度
即:
方程(29)即为不可压缩VOF模型中的相方程。综合考虑,不可压缩VOF模型中的方程为:
可见,VOF方程与单相流方程并无本质区别,均包含一个动量方程、一个连续型方程。其中连续性方程完全一致。动量方程,VOF模型中附加了随空间变化的粘度,以及附加表面张力项。在宏观流动中,附加的表面张力项
界面压缩
除此之外,包含了一个相传输方程,其可以看做是一个标量传输方程。但最重要的是,这里的标量传输,容不得半点的假扩散,否则会引起严重的数值问题。考虑网格非常细密的情况下,相分数应该只存在两个数值:0或者1。这种非常致密的网格会导致异常高的计算资源需求,因此VOF模型中不可避免的会存在
方程(33)中的第三项为人工添加的可压缩项,其在纯相(非界面处)计算域为
另一个问题是压缩速度的大小问题。很明显压缩速度不能过分大,这并不符合物理。因此压缩速度最大值也只不过是
其中的
离散化与MULES
VOF模型的速度方程、连续性方程的离散化与单相流大同小异。详细的步骤可参考CFD:不可压瞬态PISO算法。在这里对其做简述。首先对方程(31),省略方程右侧的项,进行有限体积离散有:
求解后有预测速度
如果能用压力表示方程(38)中的
定义
有
插值后,面上的速度为
即
求解方程(44)既有收敛的压力。另外,interFoam中最重要的代码为
相变
若气相和液相存在相变,则控制方程会存在额外的源相来处理这些关系。在不存在相变的情况下,存在关系:
Warning
在interPhaseChangeFoam求解器中,一般认为
方程(45)与(46)相加,同时进一步考虑不可压缩,即为方程(2)。若存在相变,方程(45)与(46)要考虑相变的影响:
其中
二者加和后有:
方程(51)可以用来处理存在相变的压力方程。
由于相变一般由俩种机理构成,因此
其中
其中
OpenFOAM的相变模型中,对相方程的源项进行了数值处理,首先定义:
相方程右侧的源项可以表示为:
因此,方程(49)可以表示为:
那么问题是为什么做这个数值处理?这是因为
现在回到方程(51),其可以用于组建压力方程。由于速度的散度不为零,因此压力方程其存在相变源相。
定义:
很明显有
很明显,
其中
关键代码
interFoam中的速度方程通过下面的代码组建:
solve
(
UEqn
==
fvc::reconstruct
(
(
mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
) * mesh.magSf()
)
);
其中的mixture.surfaceTensionForce()表示网格面上的表面张力,ghf*fvc::snGrad(rho)表示定义在网格面上的浮力项,顺气而然的,fvc::sngrad(p_rgh)表示定义在网格单元面上的压力项。这三项对应于方程(42)右边括号内的三项。之所以将这些力定义在面上,是为了消除可能的振荡的分布。
最后编辑:秦晓川 更新时间:2026-08-11 11:23