I’m pretty new to LBM and I was trying to simulate Poisseuille flow with open boundary conditions. Seams like most people are using periodic bc in their compution and papers on open bc are rare. If you have any code-examples on this issue, I would be very pleased, if you could give me.
I tried the bc for in- and outlet of: http://arxiv.org/pdf/comp-gas/9611001.pdf. That didn’t work for me at all. Program got unstable and all I got was noise, but no reasonable flow. I think I really missed the point of the bc discussed in the paper, because I don’t even understand why there are the parts of the distribution that gets calculated by that method which points in the direction out of the grid. I want no periodic bc so these parts will get lost in the next step. I think that is the source of numerical instability.
I also read about the in- an out-bc in the book of S. Succi, but I have no clue how I could realize these bc.
first you are right to mention that BC can be source of numerical instability. In fact I think that this is the major source of numerical instabilities. Then the so called “Zou/He” BC that you are mentioning are quite unstable if omega=1/tau is bigger than 1.8 more or less. Therefore this can be the source of the instability you mention. What is the value of the omega you have?
Now to describe what is going on with the BC in more general way. When one is located at a boundary node, in the fluid (so called wet-node BC) then before collision, there are some “unknown” distribution function. These are the one that streamed “from outside” the domain in the bulk. In opposition to the ones that streamed from the bulk into the BC node and that are pointing outside the domain. The distributions that are recomputed are those pointing IN the bulk and not outside the grid. I hope that it is a bit clearer now.
By the way did you read the BC part of the lbmethod.org site?
As Orestis pointed out, it is possible that you misunderstood part of the Zou/He algorithm. On a boundary node of a D2Q9 lattice, a total of 6 particle populations are known after streaming, and 3 are unknown. You need to leave the 6 as they are, and only replace the 3.
The Zou/He boundary condition is implemented in the OpenLB source code, but this is not the best place to look at if you just want to understand the algorithm. You’re better off studying the straightforward sample implementations of lattice Boltzmann which are proposed on the following page of the OpenLB web site, in various programming languages: