1. This paper gives a detailed but fairly-low-math explanation of Stam's stable fluids paper.

2. Navier-Stokes equations are an accepted physical description of the things that affect fluid simulation. 
These equations describe the behavior of fluid at one point in a fluid volume. Equation 1 says that at any point, 
the velocity in and out of the point must sum to zero. Equation 2 lists the factors that govern the movement of velocity. 
The first term says that velocity moves along itself, and it moves faster at regions of high velocity. The second term says 
that velocity moves along a pressure gradient. The third term says that velocity tends to diffuse along the velocity gradient.
The last term allows external forces.

3. Foster and Metaxas's method to solve Navier-Stokes
3.1 Discretize the fluid volume into cubes.
3.2 Use explicit timestepping; i.e. at each timestep, grab density and velocity from each cell and move it along 
the velocity field to neighboring cells.
3.3 Use "relaxation" technique to enforce incompressibility.

4. Stable Fluid: Stam presents a semi-Lagrangian/implicit method for solving the Navier-Stokes equations that is
unconditionally stable for any timestep.
4.1 Helmholtz-Hodge decomposition: decompose every vector field  into a gradient field (of a scalar function) and a divergence-free vector.
4.2 Solve the N-S equations as follows:
a. Add external force.
b. Advect: move the velocity field along itself.
c. Diffuse: let the velocity field spread out to represent viscosity.
d. Project: get rid of all the divergence.

4.3 These steps let you update the velocity field given the previous velocity field. Use nearly the
same steps for moving density around
a. Add source: if the user wants more density at some places, do it
b. Convect: move the density field along the velocity field
c. Diffuse: spread the density out according to a user-defined diffusion constant