Full bounce back vs. "Not so full bounce back"

Hi All,

untill now I only replaced the unknown DF’s at a wall (which point into the fluid domain) with the DF’s pointing outside the Domain. But I left the DF’s pointing out of the domain unchanged. This way it is ensured that I have a zero velocity at the boundary nodes (since the opposing DF’s are all the same).

Using Full Bounce Back (FBB) I just swap all opposing DF’s after streaming. As far as I can see this does not ensure that I have zero velocity at the boundary node.

I discovered that the FBB is far more unstable then the approach described before and I have to reduce the Reynoldsnumber consciderably to get a stable solution.

My questions:

  1. Can anybody point out where the first BC I described is documented in detail and what the appropriate name for it is ( I couldn’t find it on LBmethod.org)?

  2. Is it important for the stability that I have zero velocity at the boundary nodes and if yes, can I enforce this in combination with FBB?

Kind regards,


Hi Martin,
if I understand well what your are doing it looks like to me that the BC you are using is the halfway bounceback, but I’m not sure. To try to be, let me ask you a question.

You say you are replacing the missing f, by the value of their opposite after streaming. Then are you applying collision or not? If you are then it’s halfway bounceback (HBB) and you can read the next paragraph. If not then you are doing something that I do not know at all.

I haven’t found any real well documented paper on the HBB. Maybe you can have a look in the following paper DOI: 10.1103/PhysRevE.72.066701. Otherwise there is also a paper of Irina Ginzburg (which is everything except clear :wink: ) but where you can find some useful recapitulations for BC. I cannot remember the exact name, but it has something to do with multi-reflexion.

Now some remarks on FBB and HBB (I hope they will answer your questions).

The FBB is a first order accurate in space BC except when you put the wall exactly in the middle of your FBB node and your first bulk node (then it becomes second order accurate). Your remark about its stability puzzles me a bit, because the FBB is supposed to be unconditionally stable (that’s what I also experienced… not very thoroughfully though…). Then as you point out the velocity on the FBB node is not zero. This seems clear. But in fact there is no reason to consider this node as a bulk node. Because you do not apply collision on it. Therefore it does not solve the navier stokes (or any other one) equations anymore. The answer to you second question will therefore be : No if you are doing FBB.

The HBB is also a first order accurate in space BC. You can also make it second order by placing the wall in the proper way. This time it must be placed outside the computational domain at exactly half a grid scaping distance from the HBB node. Let’s me make a small picture of the difference between HBB and FBB

o----o–¦--x FBB

o----x–¦ HBB

The “o” is a “normal” node and the “x” is the BC node. The “----” are the links between two nodes and finally the “¦” is the position of the wall. I hope that it is more clear how to place the wall now. If not then I’m sorry for being a bad teacher…

I hope I somehow answered your questions.


Thanks a lot for your quick reply Orestis! You are right, it’s the HBB I’ve used. The instability of FBB was due to the fact that I carried out the collision step on the FBB nodes. Now it behaves like it should.

One thing seems odd to me about the placement of the wall in the HBB case. As pointed out, HBB leads to zero velocity at the node. Therefore I would have thought that the HBB node should be exactly at the position of the wall since this is the point where the velocity becomes zero.


I’ll look at the papers you suggested next week, I hope they will enlighten me :slight_smile:

Thanks again and kind regards,



I probably misread your first post. In fact the HBB works the following way. You have to replace the unknown f_i^{in}(t) by the value of the f_opposite(i)^{out}(t-1). Then you apply the collision operator. With this algorithm you should put the wall as mentioned before.

The way you are doing your HBB (it is not HBB in fact…), should not give a zero-wall velocity except in symmetrical cases. If we take a “bottom” wall example (the outwrads pointing normal vector is (0,-1)). Then the velocity you get should be (if we do the following numbering of the f_i)

6 2 5
\ | /
/ | \
7 4 8


I hope that it enlightens the things a bit more.