Stable fluids

Jos Stam

article1999SIGGRAPH1,913 citations

Introduces an unconditionally stable numerical method for solving the Navier-Stokes equations via semi-Lagrangian advection and implicit diffusion, enabling fast, real-time, and blowup-free fluid simulation in computer graphics.

Listen

Simulating realistic fluid behaviors such as smoke, water, fire, and liquid paint is a vital requirement across visual effects, digital art, and interactive graphics. Historically, physics-based fluid animations relied on explicit numerical methods that become unstable and numerically blow up if large simulation time steps or grid resolutions are used. These numerical breakdowns forced animators to use tiny time steps, severely limiting simulation speed, increasing computational costs, and preventing real-time, interactive manipulation of fluid motion.

The article demonstrates an unconditionally stable method for solving the full, three-dimensional Navier-Stokes equations governing fluid flow. The primary objective is to enable real-time, interactive fluid modeling for computer graphics without risking numerical failure, regardless of the time step size chosen by the user.

To achieve this, the author replaced traditional explicit schemes with a four-step modular framework: adding external forces, transporting velocity by tracing particles backward along flow paths via the method of characteristics, resolving internal viscosity through an implicit diffusion solver, and applying a projection step to enforce mass conservation. The resulting software was implemented in a compact C library of roughly 500 lines of code and tested within an interactive system on an SGI Octane workstation, simulating both two-dimensional and three-dimensional fluid flows and advecting scalar properties such as density, temperature, and visual texture coordinates across grid sizes ranging from 16-cubed to 36-cubed.

The findings confirm three key breakthroughs. First, the algorithm achieves unconditional numerical stability, allowing users to take significantly larger time steps without simulation blowups. Second, the solver operates with linear computational complexity, or near-linear complexity when using Fast Fourier Transforms for periodic boundaries, enabling real-time interactive performance during 3D simulations. Third, by advecting texture coordinates alongside dynamic density fields, the system successfully produces highly detailed, wispy gaseous effects even on coarse, low-resolution computational grids.

These results demonstrate that computer graphics tools can prioritize visual realism and user interactivity over strict physical exactness. By eliminating catastrophic numerical instabilities, production teams and software developers can drastically reduce simulation turnaround times, avoid expensive re-runs, and allow artists to manipulate fluid phenomena directly in real time.

Software teams and tool developers should adopt this stable semi-Lagrangian framework for interactive fluid and gas effects, and combine the fluid solver with dynamic solid textures to maximize visual detail at minimal computational expense. When implementing periodic boundaries, teams should leverage Fourier transform methods for simple and efficient pipelines.

Decision-makers should note that the primary trade-off of this solver is high numerical dissipation, meaning fluids lose energy and dampen more rapidly than in real-world physics, making the method unsuitable for engineering or aerodynamic validation. Additionally, the baseline implementation does not address dynamically moving free boundaries, such as splashing water surfaces. Nonetheless, for computer graphics and interactive artistic tools, confidence in the algorithm's stability, interactivity, and visual quality is exceptionally high.

  • Paper: Large steps in cloth simulation, D. Baraff et al. (1998). This seminal work pioneered the use of implicit integration to achieve stable, large-time-step physical simulation in computer graphics, establishing the numerical paradigm that Stam adapted for fluid flow.
Cover for Stable fluids

Abstract

Building animation tools for fluid-like motions is an important and challenging problem with many applications in computer graphics. The use of physics-based models for fluid flow can greatly assist in creating such tools. Physical models, unlike key frame or procedural based techniques, permit an animator to almost effortlessly create interesting, swirling fluid-like behaviors. Also, the interaction of flows with objects and virtual forces is handled elegantly. Until recently, it was believed that physical fluid models were too expensive to allow real-time interaction. This was largely due to the fact that previous models used unstable schemes to solve the physical equations governing a fluid. In this paper, for the first time, we propose an unconditionally stable model which still produces complex fluid-like flows. As well, our method is very easy to implement. The stability of our model allows us to take larger time steps and therefore achieve faster simulations. We have used our model in conjuction with advecting solid textures to create many fluid-like animations interactively in two- and three-dimensions.

Table of Contents

  • 1 Introduction
  • 2 Stable Navier-Stokes
  • 2.1 Basic Equations
  • 2.2 Method of Solution
  • 2.3 Periodic Boundaries and the FFT
  • 2.4 Moving Substances through the Fluid
  • 3 Our Solver
  • 3.1 Setup
  • 3.2 The Simulator
  • 4 Results
  • 5 Conclusions
  • Acknowledgments
  • A Method of Characteristics
  • B FISHPAK Routines
  • References

Knowls

  1. Knowl 1 — Projected Incompressible Navier-Stokes Evolution Equation

    equation

    The motion of an incompressible fluid with constant density ρ\rho and kinematic viscosity ν\nu, subject to an external force f(x,t)\mathbf{f}(\mathbf{x}, t), is governed by the incompressible Navier-Stokes equations:

    ∇⋅u=0\nabla \cdot \mathbf{u} = 0 ∂u∂t=−(u⋅∇)u−1ρ∇p+ν∇2u+f\frac{\partial \mathbf{u}}{\partial t} = -(\mathbf{u} \cdot \nabla)\mathbf{u} - \frac{1}{\rho}\nabla p + \nu \nabla^2 \mathbf{u} + \mathbf{f}

    where u(x,t)\mathbf{u}(\mathbf{x}, t) is the velocity vector field and p(x,t)p(\mathbf{x}, t) is the scalar pressure field in Rn\mathbb{R}^n (n=2,3n = 2, 3).

    By the Helmholtz-Hodge decomposition, any vector field w\mathbf{w} uniquely decomposes into a divergence-free component u\mathbf{u} and the gradient of a scalar field qq:

    w=u+∇q,where ∇⋅u=0\mathbf{w} = \mathbf{u} + \nabla q, \quad \text{where } \nabla \cdot \mathbf{u} = 0

    Taking the divergence of both sides gives a Poisson equation for qq:

    ∇2q=∇⋅w\nabla^2 q = \nabla \cdot \mathbf{w}

    subject to homogeneous Neumann boundary conditions ∂q∂n=0\frac{\partial q}{\partial n} = 0 on the domain boundary ∂D\partial D. An orthogonal projection operator P\mathbf{P} is defined as Pw=w−∇q\mathbf{P}\mathbf{w} = \mathbf{w} - \nabla q.

    Applying P\mathbf{P} to both sides of the momentum equation, and using the identities Pu=u\mathbf{P}\mathbf{u} = \mathbf{u} and P(∇p)=0\mathbf{P}(\nabla p) = \mathbf{0}, eliminates the pressure term to yield the single projected evolution equation for velocity:

    ∂u∂t=P(−(u⋅∇)u+ν∇2u+f)\frac{\partial \mathbf{u}}{\partial t} = \mathbf{P}\left( -(\mathbf{u} \cdot \nabla)\mathbf{u} + \nu \nabla^2 \mathbf{u} + \mathbf{f} \right)
  2. Knowl 2 — Operator-Splitting Time-Stepping for Fluid Velocity

    algorithm

    Given the velocity field u(x,t)=w0(x)\mathbf{u}(\mathbf{x}, t) = \mathbf{w}_0(\mathbf{x}) at time tt, the simulation advances the velocity to time t+Δtt + \Delta t through four sequential steps over time step Δt\Delta t:

    1. Force addition: w1(x)=w0(x)+Δt f(x,t)\mathbf{w}_1(\mathbf{x}) = \mathbf{w}_0(\mathbf{x}) + \Delta t \, \mathbf{f}(\mathbf{x}, t).
    2. Advection: w2(x)=w1(p(x,−Δt))\mathbf{w}_2(\mathbf{x}) = \mathbf{w}_1(\mathbf{p}(\mathbf{x}, -\Delta t)), where p(x,−Δt)\mathbf{p}(\mathbf{x}, -\Delta t) is obtained by backtracing the streamline through w1\mathbf{w}_1 over duration Δt\Delta t.
    3. Viscous diffusion: implicit solve of (I−νΔt∇2)w3(x)=w2(x)(I - \nu \Delta t \nabla^2)\mathbf{w}_3(\mathbf{x}) = \mathbf{w}_2(\mathbf{x}), where II is the identity operator.
    4. Divergence-free projection: solve ∇2q=∇⋅w3\nabla^2 q = \nabla \cdot \mathbf{w}_3 and set w4(x)=w3(x)−∇q(x)\mathbf{w}_4(\mathbf{x}) = \mathbf{w}_3(\mathbf{x}) - \nabla q(\mathbf{x}).

    The final divergence-free velocity is u(x,t+Δt)=w4(x)\mathbf{u}(\mathbf{x}, t + \Delta t) = \mathbf{w}_4(\mathbf{x}).

    Input: Velocity field u\mathbf{u}, force field f\mathbf{f}, kinematic viscosity ν\nu, time step Δt\Delta t
    Output: Divergence-free velocity field u\mathbf{u} at time t+Δtt + \Delta t
    w0←u\mathbf{w}_0 \leftarrow \mathbf{u}
    w1←w0+Δt⋅f\mathbf{w}_1 \leftarrow \mathbf{w}_0 + \Delta t \cdot \mathbf{f}
    for each grid cell coordinate x\mathbf{x} do
        x0←TraceParticle(x,w1,−Δt)\mathbf{x}_0 \leftarrow \text{TraceParticle}(\mathbf{x}, \mathbf{w}_1, -\Delta t)
        w2(x)←LinInterp(x0,w1)\mathbf{w}_2(\mathbf{x}) \leftarrow \text{LinInterp}(\mathbf{x}_0, \mathbf{w}_1)
    w3←SolveLinearSystem((I−νΔt∇2)w3=w2)\mathbf{w}_3 \leftarrow \text{SolveLinearSystem}((I - \nu \Delta t \nabla^2)\mathbf{w}_3 = \mathbf{w}_2)
    q←SolvePoisson(∇2q=∇⋅w3)q \leftarrow \text{SolvePoisson}(\nabla^2 q = \nabla \cdot \mathbf{w}_3)
    w4←w3−∇q\mathbf{w}_4 \leftarrow \mathbf{w}_3 - \nabla q
    u←w4\mathbf{u} \leftarrow \mathbf{w}_4
    return u\mathbf{u}

    The algorithm has O(N)O(N) computational complexity per step when using linear-time Poisson/multigrid solvers for a grid of NN cells, and is unconditionally stable for any time step Δt>0\Delta t > 0.

  3. Knowl 3 — Unconditionally Stable Semi-Lagrangian Advection

    model/method

    To solve the nonlinear advection equation ∂a∂t=−(u⋅∇)a\frac{\partial a}{\partial t} = -(\mathbf{u} \cdot \nabla)a for any scalar or vector field aa over time step Δt\Delta t, the method of characteristics is solved backwards in time.

    Along a characteristic path p(x0,t)\mathbf{p}(\mathbf{x}_0, t) satisfying ddtp(x0,t)=u(p(x0,t),t)\frac{d}{dt}\mathbf{p}(\mathbf{x}_0, t) = \mathbf{u}(\mathbf{p}(\mathbf{x}_0, t), t) with p(x0,0)=x0\mathbf{p}(\mathbf{x}_0, 0) = \mathbf{x}_0, the total derivative vanishes:

    ddta(p(x0,t),t)=∂a∂t+u⋅∇a=0\frac{d}{dt} a(\mathbf{p}(\mathbf{x}_0, t), t) = \frac{\partial a}{\partial t} + \mathbf{u} \cdot \nabla a = 0

    Hence, the field value is invariant along the streamline: a(p(x0,Δt),t+Δt)=a(x0,t)a(\mathbf{p}(\mathbf{x}_0, \Delta t), t + \Delta t) = a(\mathbf{x}_0, t).

    To compute the updated field value at each grid node x\mathbf{x}:

    1. Trace a particle backwards from x\mathbf{x} through the velocity field u\mathbf{u} over time −Δt-\Delta t (using a 2nd-order Runge-Kutta integrator or adaptive step refinement) to locate the origin point x0=p(x,−Δt)\mathbf{x}_0 = \mathbf{p}(\mathbf{x}, -\Delta t).
    2. Interpolate the field aa at position x0\mathbf{x}_0 from the previous time step using multilinear interpolation: a(x,t+Δt)=a(x0,t)a(\mathbf{x}, t + \Delta t) = a(\mathbf{x}_0, t).

    Because multilinear interpolation computes a convex combination of existing grid node values, the maximum norm is bounded:

    max⁡x∣a(x,t+Δt)∣≤max⁡x∣a(x,t)∣\max_{\mathbf{x}} |a(\mathbf{x}, t + \Delta t)| \le \max_{\mathbf{x}} |a(\mathbf{x}, t)|

    This guarantees unconditional stability regardless of time step size Δt\Delta t, removing the standard Courant-Friedrichs-Lewy (CFL) limit Δt<Δx/∥u∥\Delta t < \Delta x / \|\mathbf{u}\| .

  4. Knowl 4 — Implicit Backward Euler Formulation for Viscous Diffusion

    model/method

    Viscous diffusion in fluid flow is governed by the parabolic partial differential equation:

    ∂w∂t=ν∇2w\frac{\partial \mathbf{w}}{\partial t} = \nu \nabla^2 \mathbf{w}

    where ν\nu is the kinematic viscosity.

    Applying an implicit backward Euler discretization over time step Δt\Delta t yields:

    (I−νΔt∇2)wt+Δt(x)=wt(x)(I - \nu \Delta t \nabla^2) \mathbf{w}^{t+\Delta t}(\mathbf{x}) = \mathbf{w}^t(\mathbf{x})

    where II is the identity operator.

    On a Cartesian grid with spatial cell spacings Δx,Δy,Δz\Delta x, \Delta y, \Delta z, central differencing of ∇2\nabla^2 produces a sparse, diagonally dominant, symmetric positive-definite linear system for each spatial velocity component:

    (1+2νΔt∑d∈{x,y,z}1Δd2)wi,j,kt+Δt−νΔt(wi+1,j,kt+Δt+wi−1,j,kt+ΔtΔx2+wi,j+1,kt+Δt+wi,j−1,kt+ΔtΔy2+wi,j,k+1t+Δt+wi,j,k−1t+ΔtΔz2)=wi,j,kt\left(1 + 2\nu\Delta t\sum_{d \in \{x,y,z\}} \frac{1}{\Delta d^2}\right) w_{i,j,k}^{t+\Delta t} - \nu\Delta t\left(\frac{w_{i+1,j,k}^{t+\Delta t} + w_{i-1,j,k}^{t+\Delta t}}{\Delta x^2} + \frac{w_{i,j+1,k}^{t+\Delta t} + w_{i,j-1,k}^{t+\Delta t}}{\Delta y^2} + \frac{w_{i,j,k+1}^{t+\Delta t} + w_{i,j,k-1}^{t+\Delta t}}{\Delta z^2}\right) = w_{i,j,k}^t

    This implicit system is unconditionally stable for arbitrary Δt>0\Delta t > 0 and any viscosity ν≥0\nu \ge 0.

  5. Knowl 5 — Fast Fourier Transform Fluid Solver for Periodic Domains

    algorithm

    For fluids defined on an nn-dimensional torus (periodic boundary conditions), spatial differential operators simplify in the Fourier domain: the spatial gradient ∇\nabla becomes multiplication by iki\mathbf{k}, where i=−1i = \sqrt{-1} and k\mathbf{k} is the spatial frequency wave vector with magnitude k=∥k∥k = \|\mathbf{k}\|.

    In the Fourier domain, diffusion and projection operators take explicit algebraic forms:

    • Viscous diffusion acts as an isotropic low-pass filter: w^3(k)=w^2(k)1+νΔtk2\hat{\mathbf{w}}_3(\mathbf{k}) = \frac{\hat{\mathbf{w}}_2(\mathbf{k})}{1 + \nu \Delta t k^2}
    • Divergence-free projection maps each Fourier vector onto the plane normal to k\mathbf{k}: w^4(k)=w^3(k)−k⋅w^3(k)k2k\hat{\mathbf{w}}_4(\mathbf{k}) = \hat{\mathbf{w}}_3(\mathbf{k}) - \frac{\mathbf{k} \cdot \hat{\mathbf{w}}_3(\mathbf{k})}{k^2}\mathbf{k}
    Input: Velocity field w0\mathbf{w}_0, external force f\mathbf{f}, kinematic viscosity ν\nu, time step Δt\Delta t
    Output: Divergence-free velocity field w4\mathbf{w}_4 at time t+Δtt + \Delta t
    w1←w0+Δt⋅f\mathbf{w}_1 \leftarrow \mathbf{w}_0 + \Delta t \cdot \mathbf{f}
    for each spatial grid point x\mathbf{x} do
        w2(x)←w1(p(x,−Δt))\mathbf{w}_2(\mathbf{x}) \leftarrow \mathbf{w}_1(\mathbf{p}(\mathbf{x}, -\Delta t))
    w^2←FFT(w2)\hat{\mathbf{w}}_2 \leftarrow \text{FFT}(\mathbf{w}_2)
    for each frequency wave vector k\mathbf{k} do
        k2←∥k∥2k^2 \leftarrow \|\mathbf{k}\|^2
        w^3(k)←w^2(k)/(1+ν⋅Δt⋅k2)\hat{\mathbf{w}}_3(\mathbf{k}) \leftarrow \hat{\mathbf{w}}_2(\mathbf{k}) / (1 + \nu \cdot \Delta t \cdot k^2)
        if k2>0k^2 > 0 then
            w^4(k)←w^3(k)−k⋅w^3(k)k2k\hat{\mathbf{w}}_4(\mathbf{k}) \leftarrow \hat{\mathbf{w}}_3(\mathbf{k}) - \frac{\mathbf{k} \cdot \hat{\mathbf{w}}_3(\mathbf{k})}{k^2} \mathbf{k}
        else
            w^4(0)←w^3(0)\hat{\mathbf{w}}_4(\mathbf{0}) \leftarrow \hat{\mathbf{w}}_3(\mathbf{0})
    w4←FFT−1(w^4)\mathbf{w}_4 \leftarrow \text{FFT}^{-1}(\hat{\mathbf{w}}_4)
    return w4\mathbf{w}_4

    The algorithm exhibits O(Nlog⁡N)O(N \log N) complexity for an NN-voxel grid.

  6. Knowl 6 — Advection, Diffusion, and Dissipation of Scalar Fields

    model/method

    Non-reactive substances transported by the fluid (such as smoke density, dust, temperature, or texture coordinates) are governed by an advection-diffusion-dissipation equation for a scalar field a(x,t)a(\mathbf{x}, t):

    ∂a∂t=−(u⋅∇)a+κa∇2a−αaa+Sa\frac{\partial a}{\partial t} = -(\mathbf{u} \cdot \nabla)a + \kappa_a \nabla^2 a - \alpha_a a + S_a

    where u\mathbf{u} is the fluid velocity, κa≥0\kappa_a \ge 0 is the diffusion coefficient, αa≥0\alpha_a \ge 0 is the dissipation rate, and Sa(x,t)S_a(\mathbf{x}, t) is an external source term.

    Over time step Δt\Delta t, the four terms are updated sequentially:

    1. Source addition: a1(x)=a0(x)+Δt Sa(x,t)a_1(\mathbf{x}) = a_0(\mathbf{x}) + \Delta t \, S_a(\mathbf{x}, t)
    2. Semi-Lagrangian transport: a2(x)=a1(p(x,−Δt))a_2(\mathbf{x}) = a_1(\mathbf{p}(\mathbf{x}, -\Delta t))
    3. Implicit diffusion: solve (I−κaΔt∇2)a3(x)=a2(x)(I - \kappa_a \Delta t \nabla^2) a_3(\mathbf{x}) = a_2(\mathbf{x})
    4. Dissipation: a4(x)=a3(x)1+Δt αaa_4(\mathbf{x}) = \frac{a_3(\mathbf{x})}{1 + \Delta t \, \alpha_a}

    The updated scalar field is a(x,t+Δt)=a4(x)a(\mathbf{x}, t + \Delta t) = a_4(\mathbf{x}), maintaining unconditional stability.

  7. Knowl 7 — Flow Detail Synthesis via Multi-Layer Texture Advection and Periodic Blending

    model/method

    To generate detailed, wispy visual features in gaseous flows without requiring high-resolution simulation grids, solid texture coordinates are advected through the fluid velocity field u\mathbf{u} using the scalar transport solver.

    To prevent distortions that accumulate as texture coordinates stretch over time:

    1. Three independent sets of texture coordinates T1(x,t),T2(x,t),T3(x,t)\mathbf{T}_1(\mathbf{x}, t), \mathbf{T}_2(\mathbf{x}, t), \mathbf{T}_3(\mathbf{x}, t) are advected simultaneously by the velocity field.
    2. The coordinate sets have staggered cycle phases and are periodically reset to their unperturbed coordinate values Ti(x)=x\mathbf{T}_i(\mathbf{x}) = \mathbf{x}.
    3. At each render frame, the synthesized texture value is evaluated as a smooth weighted superposition (linear blend) of texture lookups across the three coordinate sets, smoothly fading out highly distorted coordinates while fading in freshly reset coordinates.

    This produces high-frequency flowing details on coarse simulation grids (e.g., 16316^3 to 30330^3).

  8. Knowl 8 — Cell-Centered Finite Difference Formulation of the Projection Step

    algorithm

    Physical quantities are discretized on a grid with cell dimensions D[0],D[1],D[2]D[0], D[1], D[2], where velocity components U[0],U[1],U[2]U[0], U[1], U[2] and scalar values SS are located at voxel centers (i+0.5,j+0.5,k+0.5)⋅D(i+0.5, j+0.5, k+0.5) \cdot \mathbf{D}.

    The divergence-free projection w4=w3−∇q\mathbf{w}_4 = \mathbf{w}_3 - \nabla q is solved as follows:

    1. The discrete divergence F[i,j,k]=∇⋅w3F[i,j,k] = \nabla \cdot \mathbf{w}_3 is computed via central differences on the input velocity U\mathbf{U}: F[i,j,k]=12(U[0]i+1,j,k−U[0]i−1,j,kD[0]+U[1]i,j+1,k−U[1]i,j−1,kD[1]+U[2]i,j,k+1−U[2]i,j,k−1D[2])F[i,j,k] = \frac{1}{2}\left(\frac{U[0]_{i+1,j,k} - U[0]_{i-1,j,k}}{D[0]} + \frac{U[1]_{i,j+1,k} - U[1]_{i,j-1,k}}{D[1]} + \frac{U[2]_{i,j,k+1} - U[2]_{i,j,k-1}}{D[2]}\right)
    2. The Poisson equation ∇2S=F\nabla^2 S = F for potential S=qS = q is solved using a 7-point finite difference Laplacian subject to boundary conditions.
    3. The divergence-free velocity U1=w4\mathbf{U}_1 = \mathbf{w}_4 is obtained by subtracting the central-difference gradient of SS from the previous field U0=w3\mathbf{U}_0 = \mathbf{w}_3: U1[0]i,j,k=U0[0]i,j,k−Si+1,j,k−Si−1,j,k2D[0]U_1[0]_{i,j,k} = U_0[0]_{i,j,k} - \frac{S_{i+1,j,k} - S_{i-1,j,k}}{2 D[0]} U1[1]i,j,k=U0[1]i,j,k−Si,j+1,k−Si,j−1,k2D[1]U_1[1]_{i,j,k} = U_0[1]_{i,j,k} - \frac{S_{i,j+1,k} - S_{i,j-1,k}}{2 D[1]} U1[2]i,j,k=U0[2]i,j,k−Si,j,k+1−Si,j,k−12D[2]U_1[2]_{i,j,k} = U_0[2]_{i,j,k} - \frac{S_{i,j,k+1} - S_{i,j,k-1}}{2 D[2]}
  9. Knowl 9 — Numerical Dissipation in Stable Fluid Solvers

    limitation

    The unconditional stability of the Stable Fluids solver introduces significant numerical dissipation (artificial damping):

    1. Linear interpolation during semi-Lagrangian advection smooths out high-frequency spatial gradients and vortical structures at every time step.
    2. Backward Euler implicit integration introduces first-order temporal numerical damping.

    As a consequence, the simulated fluid dampens faster than real physical flows, making the method unsuitable for engineering simulations requiring precise quantitative bounds on physical quantities. In interactive computer graphics, however, this dissipation prevents numerical blow-up and stabilizes the simulation under large interactive time steps Δt\Delta t.

Coverage note — No substantial contributed material was omitted; specific third-party library routine parameter wrappers (FISHPAK POIS3D) and generic graphical user interface routines were excluded as standard implementation specifics.

References

  1. 1.M. B. Abbott. Computational Fluid Dynamics: An Introduction for Engineers. Wiley, New York, 1989.
  2. 2.J. X. Chen, N. da Vittoria Lobo, C. E. Hughes, and J. M. Moshell. Real-Time Fluid Simulation in a Dynamic Virtual Environment. IEEE Computer Graphics and Applications, pages 52–61, May-June 1997.
  3. 3.A. J. Chorin and J. E. Marsden. A Mathematical Introduction to Fluid Mechanics. Springer-Verlag. Texts in Applied Mathematics 4. Second Edition., New York, 1990.
  4. 4.D. Ebert, K. Musgrave, D. Peachy, K. Perlin, and S. Worley. Texturing and Modeling: A Procedural Approach. AP Professional, 1994.
  5. 5.D. S. Ebert, W. E. Carlson, and R. E. Parent. Solid Spaces and Inverse Particle Systems for Controlling the Animation of Gases and Fluids. The Visual Computer, 10:471–483, 1994.
  6. 6.N. Foster and D. Metaxas. Realistic Animation of Liquids. Graphical Models and Image Processing, 58(5):471–483, 1996.
  7. 7.N. Foster and D. Metaxas. Modeling the Motion of a Hot, Turbulent Gas. In Computer Graphics Proceedings, Annual Conference Series, 1997, pages 181–188, August 1997.
  8. 8.M. N. Gamito, P. F. Lopes, and M. R. Gomes. Two-dimensional Simulation of Gaseous Phenomena Using Vortex Particles. In Proceedings of the 6th Eurographics Workshop on Computer Animation and Simulation, pages 3–15. Springer-Verlag, 1995.
  9. 9.M. Griebel, T. Dornseifer, and T. Neunhoeffer. Numerical Simulation in Fluid Dynamics: A Practical Introduction. SIAM, Philadelphia, 1998.
  10. 10.W. Hackbusch. Multi-grid Methods and Applications. Springer Verlag, Berlin, 1985.
  11. 11.F. H. Harlow and J. E. Welch. Numerical Calculation of Time-Dependent Viscous Incompressible Flow of Fluid with Free Surface. The Physics of Fluids, 8:2182–2189, December 1965.
  12. 12.M. Kass and G. Miller. Rapid, Stable Fluid Dynamics for Computer Graphics. ACM Computer Graphics (SIGGRAPH ’90), 24(4):49–57, August 1990.
  13. 13.N. Max, R. Crawfis, and D. Williams. Visualizing Wind Velocities by Advecting Cloud Textures. In Proceedings of Visualization ’92, pages 179–183, Los Alamitos CA, October 1992. IEEE CS Press.
  14. 14.W. H. Press, B. P. Flannery, S. A. Teukolsky, and W. T. Vetterling. Numerical Recipes in C. The Art of Scientific Computing. Cambridge University Press, Cambridge, 1988.
  15. 15.W. T. Reeves. Particle Systems. A Technique for Modeling a Class of Fuzzy Objects. ACM Computer Graphics (SIGGRAPH ’83), 17(3):359–376, July 1983.
  16. 16.M. Shinya and A. Fournier. Stochastic Motion - Motion Under the Influence of Wind. In Proceedings of Eurographics ‘92, pages 119–128, September 1992.
  17. 17.K. Sims. Particle Animation and Rendering Using Data Parallel Computation. ACM Computer Graphics (SIGGRAPH ’90), 24(4):405–413, August 1990.
  18. 18.K. Sims. Choreographed Image Flow. The Journal Of Visualization And Computer Animation, 3:31–43, 1992.
  19. 19.J. Stam. A General Animation Framework for Gaseous Phenomena. ERCIM Research Report, R047, January 1997. http://www.ercim.org/publications/technical_reports/047-abstract.html.
  20. 20.J. Stam and E. Fiume. Turbulent Wind Fields for Gaseous Phenomena. In Proceedings of SIGGRAPH ’93, pages 369–376. Addison-Wesley Publishing Company, August 1993.
  21. 21.J. Stam and E. Fiume. Depicting Fire and Other Gaseous Phenomena Using Diffusion Processes. In Proceedings of SIGGRAPH ’95, pages 129–136. Addison-Wesley Publishing Company, August 1995.
  22. 22.P. N. Swarztrauber and R. A. Sweet. Efficient Fortran Subprograms for the Solution of Separable Elliptic Partial Differential Equations. ACM Transactions on Mathematical Software, 5(3):352–364, September 1979.
  23. 23.J. Wejchert and D. Haumann. Animation Aerodynamics. ACM Computer Graphics (SIGGRAPH ’91), 25(4):19–22, July 1991.
  24. 24.L. Yaeger and C. Upson. Combining Physical and Visual Simulation. Creation of the Planet Jupiter for the Film 2010. ACM Computer Graphics (SIGGRAPH ’86), 20(4):85–93, August 1986.

Citation

MLA
Stam, J. “Stable Fluids”. Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques - SIGGRAPH '99, 1999, pp. 121–28, https://doi.org/10.1145/311535.311548.
APA
Stam, J. (1999). Stable fluids. Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques - SIGGRAPH '99, 121–128. https://doi.org/10.1145/311535.311548
Chicago
Stam, J. 1999. “Stable Fluids”. Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques - SIGGRAPH '99, 121–28. https://doi.org/10.1145/311535.311548.
Harvard
Stam, J. (1999) “Stable fluids”, Proceedings of the 26th annual conference on Computer graphics and interactive techniques - SIGGRAPH '99. ACM Press, pp. 121–128. Available at: https://doi.org/10.1145/311535.311548.
Vancouver
1. Stam J (1999) Stable fluids. In: Proceedings of the 26th annual conference on Computer graphics and interactive techniques - SIGGRAPH '99. ACM Press, pp 121–128

BibTeX

@inproceedings{Stam_1999, series={SIGGRAPH ’99}, title={Stable fluids}, url={http://dx.doi.org/10.1145/311535.311548}, DOI={10.1145/311535.311548}, booktitle={Proceedings of the 26th annual conference on Computer graphics and interactive techniques  - SIGGRAPH ’99}, publisher={ACM Press}, author={Stam, Jos}, year={1999}, pages={121–128}, collection={SIGGRAPH ’99} }
Metadata:Crossref

Access the Paper

This paper is available from its original source. Click below to access the PDF.

Open PDF