Stable Fluids A paper by Jos Stam
Contributions Real-Time unconditionally stable solver for Navier-Stokes fluid dynamics equations Implicit methods allow for large timesteps Excessive damping – damps out swirling vortices Easy to implement Controllable (?)
Some Math(s) Nabla Operator: Laplacian Operator: Gradient:
More Math(s) Vector Gradient: Divergence: Directional Derivative:
Navier-Stokes Fluid Dynamics Velocity field u, Pressure field p Viscosity v, density d (constants) External force f Navier-Stokes Equation: Mass Conservation Condition:
Navier-Stokes Equation Derived from momentum conservation condition 4 Components: Advection/Convection Diffusion (damping) Pressure External force (gravity, etc)
Mass Conservation Condition Velocity field u has zero divergence Net mass change of any sub-region is 0 Flow in == flow out Incompressible fluid Comes from continuum assumption
Enforcing Zero Divergence Pressure and Velocity fields related Say we have velocity field w with non-zero divergence Can decompose into Helmholtz-Hodge Decomposition u has zero divergence Define operator P that takes w to u: Apply P to Navier-Stokes Equation: (Used facts that and )
Operator P Need to find Implicit definition: Poisson equation for scalar field p Neumann boundary condition Sparse linear system when discretized
Solving the System Need to calculate: Start with initial state Calculate new velocity fields New state:
Step 1 – Add Force Assume change in force is small during timestep Just do a basic forward-Euler step Note: f is actually an acceleration?
Step 2 - Advection
Method of Characteristics p is called the characteristic Partial streamline of velocity field u Can show u does not vary along streamline Determine p by tracing backwards Unconditionally stable Maximum value of w2 is never greater than maximum value of w1
Step 3 – Diffusion Standard diffusion equation Use implicit method: Sparse linear system
Step 4 - Projection Enforces mass-conservation condition Poisson Problem: Discretize q using central differences Sparse linear system Maybe banded diagonal… Relaxation methods too inaccurate Method of characteristics more precise for divergence-free field
Complexity Analysis Have to solve 2 sparse linear systems Theoretically O(N) with multigrid methods Advection solver is also O(N) However, have to take lots of steps in particle tracer, or vortices are damped out very quickly So solver is theoretically O(N) I think the constant is going to be pretty high…
Periodic Boundaries Allows transformation into Fourier domain In Fourier domain, nabla operator is equivalent to ik New Algorithm: Compute force and advection Transform to Fourier domain Compute diffusion and projection steps Trivial because nabla is just a multiply Transform back to time domain
Diffusing Substances Diffuse scalar quantity a (smoke, dust, texture coordinate) Advected by velocity field while diffusing ka is diffusion constant, da is dissipation rate, Sa is source term Similar to Navier-Stokes Can use same methods to solve equations, Except dissipation term
The End