如何处理界面
可压缩两相算例里,卡住的往往不是通量。是两种流体相接的那一面,在单元里怎么记下来。
分叉有三条。
- Volume of Fluid (VOF)
- Level Set
- Diffuse Interface (扩散界面)
模式开关在 VOF、Level Set、Diffuse 之间拨动,同一个圆的厚度和符号会变。
VOF 用单元里的一段直线把颜色关住。Level Set 的零等值线很光。Diffuse 则铺开一条占几个单元的带子。
1. Volume of Fluid (VOF)#
原理
追踪每个网格中特定流体所占的体积分数 (volume fraction) α。
∂t∂α+u⋅∇α=0
如果 α=1,表示该网格充满流体 A;
如果 α=0,表示充满流体 B;如果 0<α<1,则界面穿过该网格。
界面重构 (Interface Reconstruction)#
VOF 的核心是根据 α 值重构网格内部的界面位置:
- SLIC (Simple Line Interface Calculation):将界面近似为平行于坐标轴的直线。
- PLIC (Piecewise Linear Interface Calculation):将界面近似为具有任意斜率的直线。
在 PLIC 中,界面的法向量 n 通过 α 场的梯度来估计:
n=∣∇α∣∇α
优缺点
- 优点:质量严格守恒(守恒型)。
- 缺点:界面重构复杂且计算量大。难以扩展到 3D。曲率计算不准确。
2. Level Set Method#
原理
将界面定义为符号距离函数 (signed distance function) ϕ 的零等值线。
∂t∂ϕ+u⋅∇ϕ=0
- ϕ>0:流体 A
- ϕ<0:流体 B
- ϕ=0:界面
重初始化 (Re-initialization)#
在平流 (advection) 过程中,ϕ 会失去符号距离函数的性质 (∣∇ϕ∣=1)。
为了恢复这一性质,需要求解重初始化方程:
∂τ∂ϕ+sign(ϕ0)(∣∇ϕ∣−1)=0
其中 τ 是虚拟时间 (pseudo-time)。
曲率与表面张力
Level Set 的一大优点是几何量的计算非常自然:
κ=−∇⋅(∣∇ϕ∣∇ϕ)
表面张力通过 CSF (Continuum Surface Force) 模型转化为体积力:
fs=σκδ(ϕ)∇ϕ
优缺点
- 优点:曲率/法线计算容易。能自然处理拓扑结构变化 (topology change)。
- 缺点:质量不守恒。在重初始化过程中,界面位置可能会移动。
CLSVOF:两种方法的结合#
结合了 VOF 的质量守恒和 Level Set 的几何优点的 Coupled Level Set and VOF (CLSVOF) 方法被广泛应用。
3. Diffuse Interface Method (扩散界面)#
哲学的转变
前两种方法将界面视为尖锐 (sharp) 的,而扩散界面法则认为界面本质上具有有限的厚度。
在这种方法中,不需要单独的界面追踪方程,体积分数被包含在守恒律系统的一部分中。
5-equation Model (Allaire et al., 2002; Kapila et al., 2001)#
这是应用最广泛的简化模型 (reduced model):
∂t∂(α1ρ1)+∇⋅(α1ρ1u)=0
∂t∂(α2ρ2)+∇⋅(α2ρ2u)=0
∂t∂(ρu)+∇⋅(ρu⊗u+pI)=0
∂t∂E+∇⋅((E+p)u)=0
∂t∂α1+u⋅∇α1=0
最后一行才是分叉。α1 的输运是非守恒型 (non-conservative)。界面压力不晃,靠的是这一行。
为什么需要非守恒型?
如果以守恒型求解 α1:
∂t∂α1+∇⋅(α1u)=α1∇⋅u
右端的 α1∇⋅u 在离散散度里不是 0,压力就会晃。
把非守恒输运 ∂α/∂t+u⋅∇α=0 展开,得到 ∂α/∂t+∇⋅(αu)−α∇⋅u=0。最后一项挪到右边,就是上面的式子。接触面上压力和速度均匀,∇⋅u 应当是 0。离散散度给不出这个 0,右端就留下来。界面单元 α=0.5,把残余散度记成 δ,右端就是 0.5δ。α 挪了这么多,混合密度就变了,状态方程回不到原来的压力。振荡的种子是这一项。
非守恒形式不制造这个右端。α 跟着 u 走,单元面上的通量差不直接增减 α。五方程最后一行写成非守恒,原因在这里。质量由上面两行 ∂(αkρk)/∂t+∇⋅(αkρku)=0 单独守住。α 不写成守恒型,各相质量仍然有人负责。
重初始化的数字也已经在公式里。∣∇ϕ∣=1 一旦破了,sign(ϕ0)(∣∇ϕ∣−1) 就用虚拟时间 τ 去推 ϕ。∣∇ϕ∣ 大于 1,这一项削 ϕ;小于 1,就往反方向推。停下来的地方只有 ∣∇ϕ∣=1。这个过程里零点 ϕ=0 哪怕滑过一个单元,质量就漏了。VOF 的 α 积分没有这种滑动。反过来,n=∇α/∣∇α∣ 取出的法向,只在 α 介于 0 和 1 的格子里才有斜率。曲率会骑上那些格子的噪声。κ=−∇⋅(∇ϕ/∣∇ϕ∣) 在 ϕ 是距离函数时,把同一条法向给得很光。所以 CLSVOF 把两者接上。质量用 α,曲率用 ϕ。
7-equation Model (Baer-Nunziato type)#
每一相可以各自带着压力和速度。这条路 Baer–Nunziato 七方程已经写开了。
∂t∂αkρk+∇⋅(αkρkuk)=0,k=1,2
通过松弛 (relaxation) 过程收敛到压力/速度平衡。
在数学上最完整,但计算成本高。
比较摘要
| 技术 | 质量守恒 | 界面清晰度 | 拓扑变化 | 实现复杂度 | 压缩性适用度 |
|---|
| VOF (PLIC) | O | 高 | 困难 | 高 | 中 |
| Level Set | X | 高 | 自然 | 中 | 中 |
| CLSVOF | O | 高 | 自然 | 极高 | 中 |
| 5-eq Diffuse | O | 中 | 自然 | 低 | 极好 |
| 7-eq Diffuse | O | 中 | 自然 | 高 | 极好 |
把α按守恒型来更新,接触面上的压力会晃
可压缩问题里,表上留下的是底下两行。五方程用 ∂(αkρk)/∂t+∇⋅(αkρku)=0 守住质量,只把 α 的输运留成非守恒。离散散度若不能把 α∇⋅u 收成 0,α=0.5 的界面单元会推动混合密度,压力跟着晃。
要不要每步把抹开的带子拉回来,是另一个决定。那一步写在用反扩散把界面重新立起来里。