On Boundary Conditions

Hallo there,

I am currently considering boundary conditions and would like to discuss my method here and maybe find a way to improve it.

So far, I set a fixed velocity u and compute the distribution functions f by setting them to the equilibrium f_eq(u, rho) with unit density (rho = 1) on the inflow boundary.
On the outflow boundary I only copy the distribution functions from the neighbor cells that are located in the direction normal to the boundary.

I think this way, I got a Dirichlet boundary condition on the inflow, and a Neuman boundary condition on the outflow with zero gradients for both the velocity and the density.

Now I’d like to answer the question what implications this kind of boundary condition has? What errors might occur due to this setting?

Maybe somebody has already done something similar or has some more experience and might help me with these questions.



quite a lot of people have discussed boundary conditions in LBM. Actually, I believe, it is one of the most frequently discussed LBM topic in the literature.
I suggest that you begin with this article about LBM boundary conditions. It will give you an overview and related references. Defining the equilibrium populations at the inlet/outlet may not be sufficient in many cases, so also the non-equilibrium should be captured accordingly.


Thanks Timm for your quick answer!

I know about the article and have already tried to implement Zou/He’s boundary condition with the help of another paper (“Implementation of on-site velocity boundary conditions for D3Q19 lattice Boltzmann”, Martin Hecht) that derives Zou/He’s boundary condition for the D3Q19 model.
However, using this boundary condition my simulation blows up… I think it must be due to implemenation mistakes. So far I don’t handle corner nodes, since I’m not sure about how to do the extrapolation… I think I won’t be able to do this correctly, since time for my thesis is running out…

Thus, what I’d really like to know is how appropriate the above mentioned boundary condition is, setting boundary cells to equilibrium. Is this approach valid at all? I’ve never read something about this anywhere… I just tried to do it like that when I started and the results appear not too bad simulating a lid driven cavity. Further I can reproduce the Karaman Vortex street for the flow around a cylinder.

Well, I guess there are stability and accuracy issues… but I’m still a newbie and haven’t found any discussion about this kind of boundary yet.

Depending on what you exactly want to do you may spoil your simulation by neglecting the non-equilibrium part. However, I believe that for an approximate simulation, equilibrium may be sufficient, especially if you get a steady state at the end. In time varying simulations, a correct initialization and boundary conditions are much more important.
Maybe some others guys here with more BC experience can say something about this topic.

Hi tbochtl

I am also trying to use Martin Hecht approach to implement Zou/He BC in the D3Q19 LB model.

I have deduced explicitly the values for all the unknown distribution functions appearing in all 6 planes, 12 edges and 8 corners. If you want I can send you the MSWord files containing these data.
When starting to deduce them I had also some doubts regarding edge and corner implementation, particularly how to deal with the buried links distribution functions.
I emailed Dr. Martin Hecht who kindly answered me back explaining how to do it through 2 brief examples, one for an edge and another for a corner…

However, after implementing those expressions I found out that when dealing with edges connecting velocity BC to pressure BC planes the results are not so ok, i.e. although the solutions seem to be quite fine, yielding smooth velocity and pressure fields, when I do convergence tests the 2nd order accuracy is never obtained. Possibly some index or something in my expressions is mistaken which is breaking the symmetry of my model and as a result providing a messed up convergence solution… :frowning:

I say that because using the same reasoning but for edges connecting velocity/velocity BC planes the results are good and the 2nd accuracy is reproduced!

That is why I would like to send you my expressions maybe together we can put this thing working :slight_smile:



Hallo again,

still I’m kind of confused with some boundary conditions I’ve read about. There is a boundary condition called “symmetric boundary condition” stated by Krafczyk in “Gitter Boltzmann-Methoden: Von der Theorie zur Anwendung”. There, particle populations with velocity vectors pointing out of the domain are reflected at the boundary back into the domain.

For example consider a boundary on the left side of the domain for the following model:

      f6  f2   f5
        \  |  /
         \ | /
      f3---|--- f1
         / | \       
        /  |  \
      f7  f4   f8

Then the BC would set the unknown particle populations f5, f1, f8 to

f5 = f6
f1 = f3
f8 = f7

by simply reflecting them on the boundary.

This should yield a zero velocity normal to the boundary and remains the velocity tangential to the boundary. Is this correct?

I suppose this ought to be something like a “free-slip” boundary condition. But since I haven’t found a reference explaining free-slip boundary conditions on google I’m not quite sure… thus any comments on that topic are welocme! :slight_smile:

I wrote you a pm with my email adress… I hope you received it.

Hi tbochtl,

The condition that you explained above is the “free-slip” condition.

I am constructing domain with velocity inlet (Dirichlet type - “Implementation of on-site velocity boundary conditions for D3Q19 lattice Boltzmann”, Martin Hecht) condition with side free-slip walls with pressure outflow (Neumann type) condition. At the moment, I am having issues particularly with edges and corners connecting “inflow with free-slip BC” and “outflow with free-slip BC”. Has anyone worked on this issue previously?

It would be nice if someone could help me on this.