A Lattice Boltzmann based code to simulate simple 2-D fluid flow over an obstacle.
Lattice Boltzman is a method that is based on kinetic theory which is a fairly new model to simulate fluid flow. Lattice Boltzman Method (LBM) a successor of the Lattice Gas Models (LGM) which tracks the position of particles in a "lattice", particles interact through streaming/collision accounting for continuity and momentum equations to reproduce gas behaviour, LGM's nodes in a lattice have different possible directions where a particle could go after the collision/streaming step. Main drawback of the LGM is that there was statistical noise, meaning that macroscopic quantities like velocity or density fluctuate even for gas at equilibrium. The development of the LBM was to improve upon the LGM to be able to simulate fluids and minimize its deficiencies. An early LGM lattice is shown in Figure 1, developed in 1973.
Figure 1: Lattice with 2 particles colliding [1]
While the LGM tracked each of the particles in a lattice, the LBM in a similar manner tracks the distribution of particles using a mesoscopic scale. Lattice Boltzmann method, as the name says uses the mesoscopic Maxwell-Boltzmann equation to describe fluid dynamics on a macroscale, the Boltzmann distribution equation describes the probability of molecules to have a certain speed. The discretized Lattice Boltzmann equation in velocity, space and time is as follows:
This code was based on the D2Q9 lattice structure with direction and velocities as shown in Figure 2.
More information about LBM will be added once more literature review is done.
Figure 1: D2Q9 and its lattice velocities [3]
- Algorithm is relatively simple.
- Relatively simpler to paralellize when compared to traditional CFD.
- Suitable for multi-phase flow.
- Mesh-free
- Not suitable for high Reynolds Numbers and consequently not good for compressible flow, particles can only move 1 lattice step per unit time.
- Cannot handle low viscosities.
- Unproven for high Knudsen numbers.
- Lack Galilean invariance, i.e. Newton's law do not change depending on the inertial frame.
Figure 3: Velocity field at Re=72
- Parallelize code using CUDA.
- Set up different initial perturbations.
Reduce memory usage by storing pre-collision and post-collision distribution function in a single variable (F).Implementd using the pull algorithm with slight computation time improvement of ~2s, from an average of 33.15s to 31.24s.- Further improve memory allocation.
- Reduce the lack of Galilean invariance through the use of different collision operators, i.e MRT collision operator.
- Try different obstacles including streamlined shapes (i.e. airfoils).
- Implement momentum exchange to calculate fluid forces on bodies.
- Implement moving boundary conditions in obstacles (i.e. spinning cylinder).
- Simulate other field variables such as heat.
https://www.researchgate.net/figure/The-head-on-collision-rule-for-the-HPP-model_fig3_242162544
[1] T. Krüger, H. Kusumaatmaja, A. Kuzmin, O. Shardt, G. Silva and E. M. Viggen, The Lattice Boltzmann Method, Springer, 2017.
[2] P. Neumann, H.-J. Bungartz, M. Mehl and T. W. T. Neckel, "A Coupled Approach for Fluid Dynamic Problems Using the PDE Framework Peano," Garching, 2012.
[3] https://www.researchgate.net/figure/Diagram-of-D2Q9-Model_fig1_335459626
[4] D. Elsworth, "The Lattice Boltzmann Method (EGEE520)," State College, 2016.