Babak Gholami, Daniel Kleine-Albers, Christoph Kowitz, Narek Melik-Barkhudarov, Oleksiy Perro, Sarpkan Selcuk, and Nima Shahriari did their honours project at the Chair of Scientific Computing, TUM.
The goal of the Project was to implement the Lattice Boltzmann method for free surfaces (in 2D and 3D) as well as build a visualizer for displaying the resulting surfaces, with the possibility of real-time simulation and computational steering in the case of real-time simulations.
The numerical simulation of fluids has become an established tool in many engineering applications. Free surface fluids represent a special case that is important for a variety of applications. For a free surface simulation, a two phase system, such as air and water, is described by a single fluid phase with a sharp interface and corresponding boundary conditions. The model is cell based and distinguishes cells of different kinds (Fluid, Gas, and Interface cells). This allows the efficient representation and simulation of complex problems. The simulation algorithm of the project is based on the lattice Boltzmann method. This method has been chosen due to the overall computational efficiency of the basic lattice Boltzmann algorithm, and its ability to deal with complex geometries and topologies. The implementation of the algorithm is done in Peano framework. This project added a Lattice Boltzmann free surface solver component to Peano.
In the visualization part there are two renderers, OpenGL and the raytracing renderers. The aim for the OpenGL renderer is to render the image for user interaction, thus a real time visualization is possible. In order to use the raytracer, the visualizer code needs to be recompiled. The communication from Peano to the visualizer is using a UDP socket. Therefore, the visualizer is totally decoupled from Peano and can also be run on a separate machine. This is especially useful if the calculations need a lot of computing power whereas the visualizer can run on a reasonably equipped standard machine. Since the solver and the visualizer are separate from each other, the user does not need to do any set up for the visualizer when the solver is recompiled, handy to switch between 2D and 3D cases. There is a GUI provided in visualizer, shown in figure below.