FLUID SIMULATION

Charis Kontaxis

Game and Media Technology Master's Programme, Department of Information and Computing Sciences
Utrecht University

Contact email: charis.kontaxis [at] gmail [dot] com

Abstract

This page is about the Master's Thesis project done by Charis Kontaxis under the supervision of dr. Robby T. Tan. During this project a three dimensional fluid simulator that uses a staggered grid and follows the Eulerian viewpoint together with a semi-Lagrangian advection technique was developed. MICCG(0) (modified incomplete Cholesky conjugate gradient, level zero) is used for the pressure projection. Different methods to track the fluid are implemented, including marker particles, level set method and particle level set method. The interaction between solids and fluid is possible under a fluid-solid coupling technique. The scene is rendered using pbrt and Robert Bridson's grid-based implicit surface shape plugin for pbrt.

For our contributions, we proposed a new hybrid-grid structure, instead of the standard regular grid usually used in this kind of simulations, in order to decrease the number of computations needed. Furthermore, we added multi-threading at some time consuming parts of the simulation to further optimize performance. Finally, we combined the two above methods to acquire the highest performance increase featured among our contributions.

Simulator

The implementation is done in C++. The features include: semi-Lagrangian advection, MacCormack advection, marker particles for liquid tracking, level set method, particle level set method, ghost fluid method, weak fluid-solid coupling, terrain generated from heightmaps and PLY triangulated mesh to signed-distance field conversion. Second-order and three-stage third-order Runge-Kutta time intergrators with substeps are used. Smoke simulation is also supported.


Thesis

Fluid Simulation [PDF]
Charis Kontaxis

Final Results (you can find more results here)

Two dimensional fluid simulator:

The 2D solver below uses marker particles to identify fluid cells and visualize the fluid.


The 2D solver below uses the level set method to identify fluid cells and visualize the fluid.


The 2D solver below uses the level set method to identify fluid cells and visualize the fluid. The weak coupling method is used to simulate both the fluid and the solids in the Eulerian grid.



Three dimensional fluid simulator:

The 3D solver below uses the level set method to identify fluid cells and visualize the fluid.
pbrt and the grid-based implicit surface plugin for pbrt written by Robert Bridson are used for the rendering.


The 3D solver below uses the level set method to identify fluid cells and visualize the fluid. The weak coupling method is used to simulate both the fluid and the solids in the Eulerian grid.
pbrt and the grid-based implicit surface plugin for pbrt written by Robert Bridson are used for the rendering.



Other results:

Here you can find some 2D and 3D smoke simulation results from my fluid simulator. Smoke is not part of my official thesis plan, but as smoke simulation involves a couple more steps compared to the base simulation, I found it interesting to add it to the simulator. Diffusion of smoke and heat concentration along with vorticity confinement are implemented in the simulator. pbrt's volume grid is used for the rendering.

Smoke


Main References:

  1. N. Foster and D. Metaxas, “Realistic Animation of Liquids.”
    Graph. Models and Image Processing 58 (1996), 471–483
  2. J. Stam. “Stable Fluids.”
    In SIGGRAPH 99 Conference Proceedings, Annual Conference Series, pp. 121–128. New York: ACM, 1999
  3. Robert Bridson, “Fluid Simulation for Computer Graphics.”
    A K Peters, Ltd. 2008.

Last Update: February 2013