Fluid Simulation for Computer Graphics第二版,8.2节。
在求解自由表面流体时,简单地把计算域划分为液体格和气体格,会导致artifact.如果能更精确地追踪表面,可以修改一下在水-气界面附近计算压强差的方式。
根据Gibou et al. 2002的ghost fluid方法,可以把更新流体速度节点[latex]u_{i+1/2,j,k}[/latex]的方程写作
假设(i,j,k)在流体内部,而(i+1,j,k)在空气中,即[latex]\phi_{i,j,k}\leq 0<\phi_{i+1,j,k}[/latex].认为流体表面处压强p=0。我们可以算出来一个
(注意其分子分母都是负数),界面位置在[latex](i+\theta)\Delta x,j,k)[/latex]的地方。
然后,假设我们在(i+1,j,k)处有一个ghost pressure,可以求出来:
所以方程就是:
这个额外的系数可以叫做[latex]\theta[/latex].
注意[latex]\phi{i,j,k}[/latex]小的话,可能会把对角项搞得很大,但这没关系,这样更正定了,岂不美哉。
《Robert Bridson书中关于自由表面求解的笔记》有一个想法