流体体积法(VOF)求解两相流问题的步骤

北京理工大学 | 李明健

控制方程:

对于两相流动,采用 one-fluid 模型,即用统一的物理场描述两种流体,用体积分数的方式区分。例如,密度场可表示为如下形式:

(1)ρ=αρ1+(1α)ρ2

其中 α 为体积分数,ρ1ρ2 分别为两种流体的密度。对于粘度等其他物理量,用同样的方式处理。

连续性方程

不可压流体问题的连续性方程通常写为速度无散形式如下:

(2)u=0
动量方程

Navier-Stokes方程采用守恒形式如下:

(3)ρut+ρ(uu)=p+μ[u+(u)T]+f

式中upρμf 分别为速度、密度、压力、粘度、体力。

求解方法:

采用 Chorin 投影法,我们把N-S方程分裂成以下形式:

(4)uunΔt=Cn+1ρn(Dn+fn)un+1uΔt=1ρnp

其中 CD 分别为对流项和扩散项,两式相加即为N-S方程。

对第二式取散度得到压力泊松方程:

(5)(1ρnp)=1Δtu

采用交错网格,在格心求解压力, 面心求解速度。

对流项

对流项具体展开形式为:

(6)C=(uu)=[(uu)x+(uv)y+(uw)z(uv)x+(vv)y+(vw)z(uw)x+(vw)y+(ww)z]

在有限体积法中,根据奥-高公式,将体积分变成面积分,对流项表示如下:

(7)C=1VV(uu)dV=1VAu(un)dA

x 方向面心对流项分量为例:

(8)(Cx)i+1/2,j,k=1V{[(uu)i+1,j,k(uu)i,j,k]Ax+[(uv)i+1/2,j+1/2,k(uv)i+1/2,j1/2,k]Ay+[(uw)i+1/2,j,k+1/2(uw)i+1/2,j,k1/2]Az}

vof1

其中 Ax,Ay,Az 表示三个方向的面积,黑色圆点表示待计算的物理量,白色圆点表示插值模板点。计算面心上的对流项,需要用到格心和棱心的速度,这些速度需要从其他面心位置插值过来,用QUICK(Quadratic upstream interpolation for convective kinematics)三阶迎风格式插值,相比普通中心差分可以达到更高的精度。以 x 方向格心速度 u 为例,插值形式如下:

(9)ui,j,k={38ui+1/2,j,k+34ui1/2,j,k18ui3/2,j,k,12(ui+1/2,j,k+ui1/2,j,k)>038ui1/2,j,k+34ui+1/2,j,k18ui+3/2,j,k,12(ui+1/2,j,k+ui1/2,j,k)<0

vof1

x 方向棱心速度 u 为例,插值形式如下:

(10)ui+1/2,j+1/2,k={38ui+1/2,j+1,k+34ui+1/2,j,k18ui+1/2,j1,k,12(vi,j+1/2,k+vi+1,j+1/2,k)>038ui+1/2,j1,k+34ui+1/2,j,k18ui+1/2,j+1,k,12(vi,j+1/2,k+vi+1,j+1/2,k)<0

vof3

类似可以得到所有速度分量,并得到对流项所有分量。

扩散项

粘性扩散项具体展开形式为:

(11)D=τ=[τxxx+τxyy+τxzzτyxx+τyyy+τyzzτzxx+τzyy+τzzz]

其中粘性应力具体展开形式为:

(12)τ=[2uxuy+vxuz+wxvx+uy2vyvz+wywx+uzwy+vz2wz]

扩散项写成面积分的形式为:

(13)D=1VVτdV=1VAτndA,τ=μ[u+(u)T]

x 方向面心分量为例:

(14)(Dx)i+1/2,j,k=τi+1,j,kxxτi,j,kxxΔx+τi+1/2,j+1/2,kxyτi+1/2,j1/2,kxyΔy+τi+1/2,j,k+1/2xzτi+1/2,j,k1/2xzΔz

vof1

粘性应力分量采用二阶中心差分得到,以其中两个分量为例:

(15)τi,j,kxx=2μi,j,kui+1/2,j,kui1/2,j,kΔxτi+1/2,j+1/2,kxy=μi+1/2,j+1/2,k(ui+1/2,j+1,kui+1/2,j,kΔx+vi+1,j+1/2,kvi,j+1/2,kΔy)

vof1

其余分量同理,最终得到扩散项所有分量。

速度预测

Chorin 投影法第一步是预测一个中间速度:

(16)u=unΔtCn+Δt1ρn(Dn+fn)

预测速度在面上求解:

(17)ui+1/2,j,k=ui+1/2,j,knΔt{Ci+1/2,j,kn+1ρi+1/2,j,kn(Di+1/2,j,kn+fi+1/2,j,kn)}
压力泊松方程

Chorin 投影法第二步是求解压力泊松方程:

(18)(1ρnp)=1Δtu

在格心求解格式为:

(19)1Δx2(pi+1,j,kpi,j,kρi+1/2,j,kpi,j,kpi1,j,kρi1/2,j,k)+1Δy2(pi,j+1,kpi,j,kρi,j+1/2,kpi,j,kpi,j1,kρi,j1/2,k)+1Δz2(pi,j,k+1pi,j,kρi,j,k+1/2pi,j,kpi,j,k1ρi,j,k1/2)=1Δt(ui+1/2,j,kui1/2,j,kΔx+vi,j+1/2,kvi,j1/2,kΔy+wi,j,k+1/2wi,j,k1/2Δz)

vof1

压力泊松方程可以采用SOR(successive over-relaxation)迭代法求解,或共轭梯度等其他方法。

速度修正

在面心用压力梯度修正中间速度,得到最终的速度场:

(20)un+1=uΔtρnp

在面心求解格式为:

(21)ui+1/2,j,kn+1=ui+1/2,j,kΔtρi+1/2,j,kpi+1,j,kpi,j,kΔx

vof1

密度和粘度

为了处理大密度比和粘性比,首先在面心通过PLIC中的切割等方法得到体积分数,随后,在面上用体积分数更新密度和粘度:

(22)ρi+1/2,j,k=αi+1/2,j,kρ1+(1αi+1/2,j,k)ρ2μi+1/2,j,k=αi+1/2,j,kμ1+(1αi+1/2,j,k)μ2