Graphics Reference
In-Depth Information
Transfer particle values q p to the grid q i,j,k , through equations like
(10.1) or (10.2), and extrapolate on the grid as necessary.
Save the grid values q i,j,k .
Compute all other terms on the grid, such as pressure projection, to
get an updated q new
i,j,k .
= q new
For each particle, interpolate the change Δ q i,j,k
i,j,k
q i,j,k
from
the grid to add it to the particle's value.
Advect the particles in the grid velocity field.
Zhu and Bridson [Zhu and Bridson 05] introduced FLIP to incompressible
flow and demonstrated how effective it can be at producing highly detailed
motion on fairly coarse grids. It essentially eliminates all numerical dis-
sipation from advection, though of course the loss of vorticity from our
first-order time-splitting remains. At the same time, it is almost trivial to
implement, and especially if you are using particles for other tasks (e.g.,
marker particles for liquid tracking) it is highly recommended.
One issue with FLIP is that it may develop noise. Typically we use
eight particles per grid cell, meaning there are more degrees of freedom in
the particles than in the grid: velocity fluctuations on the particles may,
on some time steps, average down to zero and vanish from the grid, and
on other time steps show up as unexpected perturbations. Of course ba-
sic PIC doesn't have this problem, since the particle velocities are simply
interpolated from the grid there. Therefore it may be useful to actually
blend in a small amount of the PIC update with the FLIP update, causing
any noise to decay to zero while hopefully not introducing significant dis-
sipation. That is, for some small regularization parameter α in the range
[0 , 1], set the new particle velocities to
α ) u old
p
+interp(Δ u grid ,x p ) .
u new
p
= α interp( u new
grid ,x p )+(1
When α = 0 this is the pure FLIP update; when α = 1 it is the basic PIC
update.
A little analysis of the numerical dissipation implied by PIC, similar to
our analysis of the first-order semi-Lagrangian method back in Chapter 3,
shows that we can actually relate α to the kinematic viscosity of the fluid ν :
α =
Δ x 2 .
Of course, if this formula gives an α> 1, you should clamp it to one, use
the PIC update (or just a regular Eulerian advection scheme) and probably
even add in a viscous step as in Chapter 8.
Search WWH ::




Custom Search