# Comparison of Lattice Boltzmann Method vs Traditional Navier-Stokes based Methods

I have a choice of two options, analysing and implementing Lattice Boltzmann methods or traditional Navier Stokes based methods. I'm a CFD newbie and I have a rough idea (though not rigorous enough to produce a code) from my fluid mechanics classes about Finite Volume, Finite Element and Finite Difference methods. I am not clear about what would be a good starting point for this. There is already a question slightly similar to this : Is lattice Boltzmann suitable for simulation of incompressible Stokes flow? Can anyone comment on:

• Whether I need to become comfortable with traditional Navier Stokes based methods to understand and appreciate Lattice Boltzmann Methods?
• This question is based on the choice : What are the key pros and cons of NS-based methods vs LBM methods as far as code, efficiency etc. are concerned?
• What flow regime(s) are you interested in? May 9 '14 at 14:25
• I'm studying turbulent flows. May 9 '14 at 16:08
• Why can't you use the commercial solvers for solving Navier Stokes problem. You need not write any code. Try the user friendly softwares like Comsol...
– user8216
May 17 '14 at 14:44
• @user8216 My project actually involves implementation of (new) turbulent models using LBM. I am not permitted to use commercial solvers. May 18 '14 at 16:06
• I'm a little confused. You say that your project involves implementation of new turbulent models using LBM. Doesn't that mean you need to use LBM rather than Navier-Stokes? May 22 '14 at 8:29

In general, LBM is much easier to implement than FVM/FEM. It is very much like a FDM implementation, but depending on how you are doing it, I would say it is even simpler.

I can't say much with respect to turbulent flows. But I had a simple LBM code running the "lid driven cavity" problem with Re=500 which had a very few lines of code (even with CUDA).

Have a look at some Matlab LBM examples here: http://wiki.palabos.org/numerics:matlab_samples

With respect to efficiency, in general LBM consumes more memory and performs more floating point operations per time step than the others, however, you can implement it in parallel and achieve good performance.

• Thanks for the reply. So Lattice Boltzmann is itself very different from the traditional NS based CFD methods, I guess? I don't need to revisit finite methods, right? May 10 '14 at 5:35
• @Bernardo Could you comment more on the parallelism of LBM? Why it is more parallel than a traditional solver? May 17 '14 at 17:04
• @HuiZhang In LBM both the streaming and collision operations (and those define the algorithm) are completely local. A traditional method might require FFTs, which are basically the opposite of local and as such do not parallelize well, or inversion of a matrix which in general has similar problems. Now obviously one notes some specific structures in said matrices and the operations there too do become quite parallel. The way to make parallel LBM, however, is obvious due to the locality and minimal interdependency of the computational cells and as such requires no afterthought. May 18 '14 at 3:12
• @amirg Do you mean that LBM is an explicit time marching? Do you have some restriction on the time step size? May 18 '14 at 5:43
• @HuiZhang Yes, LBM is explicitly marching. The idea actually came originally from lattice gases with a very finite set of internal states, so it is much like the typical state machine in CS (thus the march is intuitive). There is also a restriction on the step size. To add to my previous post, LBM is quasi-incompressible, and I think this has a lot to do with why it is so easy parallelize. More traditional incompressible simulators often use pressure essentially as a Lagrange multiplier and have a hard constraint on the density. LBM is sometimes said to have "artificial compressibility". May 18 '14 at 22:03