Shiokaze Framework
A research-oriented fluid solver for computer graphics
Introduction

Overview

Shiokaze framework (Shiokaze) is developed to make it easy to start research in fluid simulation for computer graphics, without really understanding every component of fluid simulation. How's that possible? Because Shiokaze delivers following highlights:

  • It consists of a collection of dynamic libraries that are completely independent to each other.
  • Each library focuses on separated individual problems.
  • Libraries to load are selected at runtime, allowing one to quickly switch different implementations.
  • Source codes are highly independent so that you can pick some specific part of the code and adapt to your own (not limited to fluid) project.
  • All the codes are licensed either MIT, CC, Apache, or public domain.
  • Simulation configuration can be dynamically changed via the command line interface or in the scene file.
  • Various algorithms are provided to let you quickly compare or test against different methods.
  • Shiokaze is delivered through the Docker image - eliminating chance of failure to compile and allow anyone to run out of the box.

Motivation

Research in fluid for computer graphics actually can be done without knowing every detail of fluid simulation. This is thanks to the fact that fluid simulation consists of various algorithms that deal with independent different problems, and improving one problem can be a major contribution. For example, solving Poisson's equation of pressure is often a computationally expensive part of the whole simulation, and speeding up the solver can be a significant contribution. Tracking deforming surfaces of fluid surfaces undergoing topology changes is also an open problem for liquid simulation, and making it accurate is also a remarkable contribution. However, in order to complete research, implementing the whole fluid simulation, visualizing results and comparisons to existing methods are required, which are the major obstacles for anyone who starts research in fluid. Shiokaze aims at removing such obstacles. For instance, if one comes up with a new idea for efficiently solving Poisson's equation of pressure, only he/she has to do is to focus on the implementation of an algorithm to solve the linear equations. Comparisons and visualization are quicky done by a couple of command lines. The authors of Shiokaze wish that the Shiokaze makes fluid simulation familiar, and let anyone enjoy research in fluid. Shiokaze means ocean breeze in Japanese.

Features

Shiokaze currently comes with following algorithms:

  • Adaptive time stepping.
  • Pressure solver.
  • Second-order accurate boundary conditions for pressure solve both for free surfaces and solid walls by Batty et al.
  • PDE-based level set redistancing algorithm with second-order accurate boundary conditions.
  • Parallel fast marching method for level set redistancing.
  • Stream function solver with second-order accurate boundary conditions for free surfaces and solid walls.
  • Semi-Lagrangian advection method.
  • MacCormack advetion method.
  • Six-th order accurate WENO interpolation.
  • Built-in matrix and vector operations.
  • Linear, tile-based and tree-based sparse grids.
  • Narrow band level set with flood fill using bit operations.
  • Level set generation from point cloud using convex hulls and the method of Zhu and Bridson.
  • Surface mesh generation from level set using Marching Cubes and Dual Marching Cubes by Dominik Wodniok.
  • Grid hash for neighborhood search.
  • Mesh loader (RPly) and writer.
  • Two and three dimensional smoke solver.
  • Two and three dimensional liquid solver.
  • Level set generator from surface meshes using SDFGen.
  • Conjugate gradient method.
  • Modified Incomplete cholesky preconditioned conjugate gradient method using Robert Bridson's code.
  • Algebraic multigrid preconditioned conjugate gradient method using AMGCL.
  • Shared grids.
  • FLIP, narrow band FLIP, extended narrow band FLIP with APIC transfer.
  • Spatially adaptive long-term semi-lagrangian method by Sato et al.

Limitations

At the cost of flexible usability, Shiokaze heavily depends on virtual function calls. For this reason, you may experience some amount of overhead compared to a highly performance-optimized implementation written by other people. Shiokaze currently only supports Linux and macOS platforms - not Windows. This is because we are not familar with Windows, we are too busy to maintain reliability among three multiple operating systems, and Shiokaze relies much on the UNIX environment. Note that Shiokaze makes use of Docker to deliver a build environment. This should make it possible to run on Windows as well (not verified). Shiokaze also lacks a Python support. This is our future work.

Contributors

Acknowledgements

Shiokaze is currently being actively developed and maintained by Ryoichi Ando. The authors of Shiokaze wish that more people get in touch with Shiokaze and they find it useful. Therefore, we wish that Shiokaze is cited in your research paper if used. Bibliography of Shiokaze is:

@misc{shiokaze,
Author = {Ryoichi Ando},
Title = {{Shiokaze Framework}},
Year = {2018},
Note = {\emph{https://ryichando.graphics/shiokaze/}}
}