Open Boundary according to Succi


does someone of you have experience with the Succi Boundary Condition for open boundaries (chapter 6.3)? I didn’t understand it competely. I tried to implement it in the propagation step, but after some timesteps my calculation became instable. First I calculated the density on the nodes one row before the outlet. With this density I calculated the velocity u_temp. Together with the velocity-profile I set at the inlet I calculated the propability r. Finally I multiplied the value r with f0-f8 in case of the last row.

I want to solve the poiseuille flow in a 2 dimensional case (d2q9) between two parallel plates. The problem I have is that the velocity profile at the outlet shows an increase of maybe 10 percent to the one I set at the inlet. This increase of velocity is existing only in the area close to the outlet. I have to say, that I didn’t set any velocity or peridic boundary conditions at the outlet. The intention is to be able to solve the poiseuille flow between non-parallel gaps (convergent gap) later on and to calculate the mass flow.

As always I would be very happy if someone has any ideas which could help me. If you have ideas how to solve the problem another way please let me know.



I don’t know the boundary condition you are mentioning. But my guess is that your simulation might work with a classical Neumann condition for the velocity on the outlet. In this case, you impose that all components of the velocity on the outlet have a zero-gradient along the direction normal to the orientation of the outlet. In lattice Boltzmann, you can achieve this with a usual velocity condition for the outlet, such as Zou/He. The only thing to do is to update the value of the velocity on outlet boundary nodes at every iteration. To get the zero-gradient, you need to compute the velocity on the node right before the outlet node, and then impose this value as a boundary condition on the outlet node.

There exist other approaches, but this one might be simplest in your case, as you’ve obviously already implemented Zou/He.

Hi Jlatt,

I agree with you about the Succi-Boundary condition. After some studying some more literatur I decided for the Zou/He-Boundary condition. I already implemented some condition, but as far as I understood your suggestion I implemented a different condition. At least it seem to work, even if it may take some more timesteps. The code for the outlet nodes is as follows:

x = nx_lb
do z=1,nz_lb
        if (spalt_2D(x,z) == 2) then
            rho_outlet = f_2D(0,x,z) + f_2D(1,x,z) + f_2D(2,x,z) + f_2D(3,x,z) &
                       + f_2D(4,x,z) + f_2D(5,x,z) + f_2D(6,x,z) + f_2D(7,x,z) + f_2D(8,x,z) 
            u_outlet = (f_2D(4,x,z) + f_2D(0,x,z) + f_2D(2,x,z) &
                     + 2.d0 *(f_2D(1,x,z) + f_2D(5,x,z) + f_2D(8,x,z)))/rho_outlet - 1.d0
            f_2D(3,x,z) = f_2D(1,x,z) - 2.d0/3.d0 * rho_outlet * u_outlet
            f_2D(6,x,z) = f_2D(8,x,z) + 1.d0/2.d0 * (f_2D(4,x,z) - f_2D(2,x,z)) &
                        - 1.d0/6.d0 * u_outlet * rho_outlet
            f_2D(7,x,z) = f_2D(5,x,z) + 1.d0/2.d0 * (f_2D(2,x,z) - f_2D(4,x,z)) &
                        - 1.d0/6.d0 * u_outlet * rho_outlet

        end if
end do

The results are slightly better if I set rho_outlet = 1.d0

Dear friend,
I didn’t understand what condition you want to apply. Is it for fully developed boundary condition? if yes, that sounds wrong.
you should first explain which of u_outlet or Rho_outlet you wanna set.