Lonely beginner with a bunch of questions

Hi, I’m an under-grad who quite by accident stumbled into starting to learn LBM, and by a set of pure coincidences it became part of a project course I’m participating in. This has turned out be extremely interesting and quite problematic. Problematic, because there doesn’t seem to be a single person who have any familiarity at all with this method at my university, meaning I have no one to discuss difficult parts with. So I was wondering if perhaps one or two people here would like to lend a little assistance with a few silly beginner questions? I realise that I’m asking about A LOT here, but I’d be very grateful to anyone who might just pick out one or two things to answer too!

The first I have is about literature. The first books I tried out was “Lattice Boltzmann Modeling” (Sukop and Thorne) and “Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes” (Mohamad). I have to admit, though, that I didn’t really like them; I didn’t feel like they gave me an actual solid understanding of LBM. Recently, however, I tried out “The Lattice Boltzmann Equation for Fluid Dynamics and Beyond” (Succi) and “Lattice-Gas Cellular Automata and Lattice Boltzmann Models An Introduction” (Wolf-Gladrow) and those I have really come to appreciate. Things is though, both of those are from 2000 and 2001 and I’m a bit worried that I’m missing out on important developments because of that. So therefore I wanted to ask - will a well-written book on LBM from about a decade ago still be up-to-date enough to give a beginner a solid foundation? Or will that miss out on something you really should learn from the start?

My second question I feel kind of silly for, but here it is. I feel like I understand the mathematical and physical reasoning behind the method, but I still don’t quite understand where in the math you actually specify what your lattice looks like? For example, if you want to use D2Q9, what expression or operator specifies that direction 1 is along the positive x-axis, direction 2 tilted 45 degrees counter-clockwise from #1 and so on? Where in the math do you specify not only how many lattice links to use, but how they are distributed?

Thirdly, I had this question come up from a friend:
“So, you are moving separate particles along those lattice links?”
From my understanding, my answer to that right now would be:
“No, you are always operating on distribution functions, NOT physical particles. Incidentally, that’s one of the subtler reasons for the usefulness of the method - in a physical sense, you really are moving entire collections of particles around, meaning that you do retain multi-particle collisions in your calculations.”
Am I on the right track saying this, or have I completely veered off the road?

Finally, when you specify how many lattice nodes to use, does this go for each direction? So, for example, in the 2D-cylinder showcase packaged with Palabos:
If we have our coordinate system origin in the lower left corner and specify 500 nodes, will there be 500 in the horizontal direction, and then also 500 in the vertical direction for each x-value for which there is a node?

So yea, like I said, I’m a complete beginner at all this and have absolutely no one around to discuss with, so if anyone does have time to set me straight on one or more of these issues I’d be so very grateful!

Hello Amadeus,
here are my (quite short) 0.02€ to your questions:

1: those two books can definitely give you a sound basis from which you can then dive into more advanced techniques. They have not left my desk since I started dealing with LBM.

2: How you order your directions is completely your choice. It depends on your preferences, and on implementation. You will come across several ordering schemes when you go deeper into the literature.

3: my understanding of the method is similar, I tend to think of the distributions as “the fraction of particles travelling in a specific direction”.

4: yes, the spacing in x and y direction is usually equal in LBM (hope that was your question…)

Finally: Keep asking, I was in a similar situation when I started learning LBM :slight_smile:

Hey, thanks a lot for helping out!

Concerning #2, yea, I do get that it’s a free choice, but once you have decided that, OK, I want a typical D2Q9. What do you actually write/calculate to implement your choice? Like, in orbital and attitude dynamics, if I want to specify that my satellite is pointing with a particular side towards the Earth, I use a rotation matrix to indicate the various values of the cosines with respect to some suitable coordinate system. Where do I tell a LB model exactly how it is supposed to look?

Other than that, it was very welcome to just get confirmation/someone else’s point of view on things. Thanks!

Basically, you lay down everything in the velocity vectors, the velocity weights and the collision operator you want to use. Maybe it could be helpful to look at an example code in the programming language of your choice, there are several in the wiki:


(sorry, that question is kind of hard to answer for me because it is more or less an experience thing to me)

Yea, well, I think I’ll be content for the moment that I have a way to implement it and that I at least understand it conceptually, and just soldier on until I have gained some more experience myself. Thanks for the replies!

Hello Amadeus,

Welcome to the LBM world! I was in the exact same situation 10 years ago.

My simple LBM tutorial from 2001 might be helpful to clear some of your questions. The code also mentions a paper, which was one of the first papers that made sense to me when I was starting out.



  • Abhijit

Dear Amadeus,

The book by Mohammed is really good for biginners. I am reading this book and find that very easy.
About nx and ny, do what Philippe says. But do not forget the similarity between your case and your model. (e.g. check Re number)

Hope it will help you.
(by the way, like you, I am a biginner in LBM. so I would be grateful if we can share our experiences in LBM. Email me at: