Resolving Fluid Boundary Layers with Particle Strength Exchange and Weak Adaptivity




  • Paper topic: Animation and Simulation
  • Software type: Code
  • Able to run a replicability test: True
  • Replicability score: 5
  • Software language: C/C++
  • License: GPL
  • Build mechanism: IDE Project (VS,..)
  • Dependencies: TBB / glew
  • Documentation score {0,1,2}: 0
  • Reviewer: Nicolas Bonneel <>
  • Time spent for the test (build->first run, timeout at 100min): 40min

Source code information


The code comes with a solver, a particle simulator and a particle renderer that renders the simulation. Compiling the code required a number of steps (under Visual Studio 2017):
* for the TBB_Multigrid project, you need to set the TBBROOT environment variable to your TBB path.

* for the Smoke_Solver project:
- in Smoke_Solver.vcxproj, the tbb props file should be updated to mach your TBB_Multigrid path (since the props file is shipped) and some paths that are hardcoded (e.g., C:\Users\xinxin\Dropbox\xinxin_code\TBB_Multigrid\TBB_Multigrid ) should be updated.
- same process for particle_renderer.vcproj.xinxin-PC.xinxin
- in TBB_SETTINGS.props, change glew64 to glew32 (?)
- the projects can then be loaded (and possibly retargeted) in Visual Studio.

- In util.h of both Smoke_Solver and particle_renderer projects, you need to comment out the function lround line 197--203
- You should add the path to the libraries for glew (and use glew32 instead of glew64 ?),  freeglut and tbb

- to read the resulting sgi files, you can download the sgi plugin for photoshop (put the plugin in C:\Program Files\Adobe\Adobe Photoshop CC 2019\Plug-ins and restard photoshop)

Ultimately, the simulation runs smoothly and produces files that consist in the particles for each time frame.
The renderer is not documented and hard to play with. Using wrong values can lead to extreme times (I had a rendering compute for 67 hours and resulting in a constant blueish image ; some renderings just crash using a wrong "quality_factor" value which makes gigantic shadow maps...). Using the following values worked well:
.\particle_renderer.exe [path to frames] 0.01 0.01 0.1 10 10 10 10 150 180
(where here 150--180 renders frames from 150 to 180).

If you want to contribute with another review, please follow these instructions.

Please consider to cut/paste/edit the raw JSON data attached to this paper.