Cool Stuff
fluid simulation

Galilean Invariance

In an unbounded physical domain, simulating a turbulent fluid on an Eulerian grid is rather tricky. Since it is difficult to predict the motion of the fluid, it is also difficult to guess which computational domain would allow the simulation of the fluid without crossing the computational boundaries. To address this dilemma, we have developed a novel adaptive framework where the simulation grid follows the motion of the flow. Our technique is based on the principle of Galilean Invariance and the culling of simulation cells using a metric derived from continuative boundary conditions.

Fixed grid Moving grid

The images above illustrate our technique. On the left, using a fixed grid with open boundary conditions, the fluid gets advected out of the computation domain. On the right, the domain has been translated and rescaled to take into account the motion of the fluid. Our algorithm tracks the motion of the fluid to define at each frame an optimal axis-aligned computation domain.

Extended Galilean Invariance for Adaptive Fluid Simulation [pdf]
Maurya Shah, Jonathan M. Cohen, Sanjit Patel, Penne Lee, and Frédéric Pighin
Proceedings of ACM SIGGRAPH/Eurographics Symposium on Computer Animation 2004

Disjoint Translating Grids

Fluid dynamics describes the behavior of smoke, steam, water pouring into a container, ocean waves, fire, clouds, explosions, and many other phenomena that appear frequently in movies, video games, and virtual reality simulations. From a computer graphics perspective, computational fluid dynamics (CFD) techniques can be categorized as either Lagrangian or Eulerian.

Lagrangian techniques translate the Navier-Stokes equations into the material coordinate frame and treat the fluid flow as a particle system, where pressure is an inter-particle force that seeks to preserve uniform particle density. While these techniques excel at representing splashy and particulate fluid flows, they require excessive numbers of particles to simulate smooth water surfaces. Most computer graphics applications have leaned towards the Eulerian approach, where the Navier-Stokes equations are expressed in a fixed global coordinate frame. Finite-difference methods can be made unconditionally stable with semi-Lagrangian methods as suggested by [Stam 1999], and have been used to simulate gases and liquids. Eulerian methods excel at representing interfaces via Levelset methods, and incompressibility can be enforced efficiently using the projection method. While Eulerian methods can be unconditionally stable, excessively large time steps introduce severe numerical viscosity, and hence ruin physical and visual accuracy. This is why [Enright et al. 2002] recommends limiting the time step to no more than 5 times the Courant-Friedrich-Levy (CFL) condition. For splashy simulations, this can lead to excessively small time steps.

In general the Lagrangian representation is superior for modeling free-falling water in terms of speed, accuracy, and simplicity. The goal of the present research is to exploit this observation to accelerate simulations of splashy fluids, by mixing a Lagrangian method for free-falling water with an Eulerian method for contained water. Our method splits a single simulation into multiple computational grids, where the motions of the computational grids are treated analytically whenever possible (e.g. when splashes are in free-fall). During the simulation, these grids are resized, split, or merged depending on the motion of the fluid to improve computational efficiency and accuracy.

The sequence of frames below illustrates our technique. A sphere of water crashes into a skeleton hand. The original sphere and the resulting splashes are all simulated in separate translating grids.

Fluid Simulation Via Disjoint Translating Grids [pdf]
Sanjit Patel, Anson Chu, Joanathan Cohen, and Frédéric Pighin
SIGGRAPH 2005 technical sketches

Flow Editing

Fluid simulations are notoriously difficult to predict and control. As a result, authoring fluid flows often involves a tedious trial and error process. There is to date no convenient way of editing a fluid after it has been simulated. In particular, the Eulerian approach to fluid simulation is not suitable for flow editing since it does not provide a convenient spatio-temporal parameterization of the simulated flows. In this research, we develop a new technique to learn such parameterization. This technique is based on a new representation, the Advected Radial Basis Function. It is a time-varying kernel that models the local properties of the fluid.

Our goal is to combine the advantages of the Eulerian and Lagrangian representations to create a system for interactively manipulating fluid flows. In this system, the fluid can be manipulated as a deformable object. Our approach is to convert Eulerian simulations into Lagrangian representations by advecting particles in the fluid. These particles are used to reparameterize the fluid. The new parameterization is based on a set of radial basis functions centered at each time step around the particles. We call this new fluid representation the Advected Radial Basis Function (ARBF) model. The power of the ARBF model is to allow the editing of the fluid by interacting with the particles. As we change the position of the particles, we also change the fluid they represent. During the editing process, spatial and temporal constraints are enforced to maintain the coherency of the flow.

Simulated fluid Advected particles Fitted model Reconstructed fluid

The sequence of images below shows a fluid simulation being adapted to a new environment. Originally the motion of a hot gas was simulated without obstacle, thanks to our system we can modify the flow to take into account a solid sphere in its path.

Modeling and Editing Flows Using Advected Radial Basis Functions [pdf]
Frédéric Pighin, Jonathan M. Cohen, and Maurya Shah
Proceedings of ACM SIGGRAPH/Eurographics Symposium on Computer Animation 2004