For our spring 2012 CIS563: Physically Based Animation final project, my friend Dan Knowlton and I developed a liquid simulator, nicknamed "Project Chocolate Syrup". Based on the paper Multiple Interacting Liquids by Losasso et al, our simulator is capable of simulating multiple liquids with various properties interacting with an environment and with each other. Our system utilizes some base code (listed below), but has been heavily modified, customized, and extended to fit the needs of this project. This project is written entirely in C++.

Our project utilizes base code from the following sources:

1. Christopher Batty's Fluid3D framework, available on Github.

2. Christopher Batty's SDFGen OBJ to signed-distance-field convertor, available on Github.

3. Paul Bourke's Marching Cubes example, available here.

Although the class that this project was originally developed for has ended, we are planning to continue development with the following features:

This project would not be possible without the guidance of Dr. Joseph T. Kider, the instructor for CIS563 in the spring of 2012. We would also like to thank CIS563 TAs Tiantian Liu and Peter Kutz. Friends Gabriel Leung, Yui Suveepattananont, Gianni Chen, Xing Du, and Jason Merrin all acted as sounding boards for various ideas and discussed ideas, as well as joined us in late night coding sprints. Our project would not have been possible without the work of Robert Bridson, Christopher Batty, Ronald Fedkiw, and Frank Losasso. Finally, and most importantly, I have to thank Dan Knowlton for being a brilliant partner on this project.

Our progress updates for Project Chocolate Syrup were posted to our project development blog, Project Chocolate Syrup: Simulating Multiple Interacting Fluids. The following posts detail the development of this project. Posts are listed starting with the most recent:

In the process of building our simulator, we have drawn upon the following papers, books, and articles. They are listed in no particular order.

Multiple Interacting Liquids: The core basis of our entire project describing methods for simulating multiple liquids interacting with each other, by Frank Losasso et. al.

SIGGRAPH 2007 Fluid Simulation Course Notes: An extremely comprehensive set of notes detailing semi-lagrangian based fluid simulation, by Robert Bridson and Matthias Muller-Fischer.

Fluid Simulation for Computer Graphics: The go-to reference book for fluid simulation, by Robert Bridson.

A Fast Variational Framework for Accurate Solid-Fluid Coupling: A paper describing methods for fluid-solid interactions, by Christopher Batty.

A Hybrid Particle Level Set Method for Improved Interface Capturing: Describes the particle level-set method, by Douglas Enright, Ronald Fedkiw, et. al.

Polygonising a Scalar Field: A description of the marching cubes algorithm, by Paul Bourke

Preconditioner Wikipedia Article: An article summarizing how mathematical preconditioners work.

Viscosity Wikipedia Article: An article describing the physical and mathematical principles of fluid viscosity.