Müller, M., Charypar, D., & Gross, M. (2003). Particle-Based Fluid Simulation for Interactive Applications. Proceedings Of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation, 154–159. Retrieved from http://dl.acm.org/citation.cfm?id=846298

Summary

In this paper, Müller et al. describe a method for online simulation of fluids with free surfaces (i.e., liquids rather than gases) based on smooth particle hydrodynamics (SPH). SPH is essentially just an interpolation equation:

where $A$ is the quantity being interpolated and $\mathbf{r}$ is the location of interest. The variables $m_j$, $\rho_j$, and $\mathbf{r}_j$ are the mass, density, and position of the $j$th particle, respectively. The function $W(\mathbf{r},h)$ is the smoothing kernel with radius $h$ that integrates to 1. In this paper, they use three different smoothing kernels, $W_\mathrm{poly6}$, $W_\mathrm{spiky}$, and $W_\mathrm{viscosity}$.

To apply SPH to fluid simulation, Müller begin with a modified version of Navier-Stokes for particle systems (which excludes a convective term because it is not needed for particles which move with the fluid):

where $\mathbf{v}$ is the velocity field, $\rho$ is the density field, $p$ is the pressure field, $\mathbf{g}$ is an external force density field, and $\mu$ is the viscosity of the fluid. They compute the density field using SPH:

Then, they define the force density terms separately also using SPH. For the pressure term:

which uses the mean of the pressures of interacting particles. The pressure is computed as $p=k(\rho-\rho_0)$, where $k$ is a gas constant that depends on temperature, and where $\rho_0$ the rest density.

The external force density term is applied directly to the particles and does not involve SPH.

The viscosity term is:

which uses the difference in velocity between the two particles.

They additional define a surface tension force density:

where $\sigma$ is a tension coefficient, $c_S$ is a color field and $\mathbf{n}$ is the gradient of the color field. A color field is 1 at particle locations and 0 everywhere else. Interpolating it with SPH gives: