Flow past a circular cylinder

Hello,

does anybody know some articles on velocity inlet / pressure outlet boundary conditions?

Thanks,
Timm

Hi everyone,

the information in this thread is really helpful, thanks to all the contributors! I’m currently looking at the backward facing step problem using a specified velocity profile at the inlet and specified pressure at the outlet. I enforce these boundary conditions by setting the distribution functions to the corresponding equilibrium values. Therefore I have to extrapolate the density at the inlet and the velocity at the outlet. As described by Jonas and Timm, I get a constant mass within the domain. Since I have a pressure gradient, the average velocity along the channel increases proportional to the density decrease. At Reynolds numbers of 100 (for the backward facing step) I already get a density difference of 2 as can be seen in the picutures below. The maximum lattice velocity is in the range of 0.03. Can the result be interpreted as incompressible? And if yes, can the LBM mass flux be conscidered as the volumetric flux of the incompressible solution?

Thanks in advance,

Martin

http://img261.imageshack.us/img261/32/velocityek9.jpg

http://img261.imageshack.us/img261/4993/densitykb4.jpg

I am glad to see that the heuristic argument on mass conservation with a pressure outlet can be confirmed in a more complicated case than Poiseuille. But note that the approach you chose to implement the inlet and the outlet does not correspond to what I mean when I refer to “velocity boundary condition” or “pressure boundary condition”. I think that if you impose an equilibrium distribution on the boundaries, your overall simulation is only first order accurate instead of second order. The reason is that, obviously, the equilibrium component of the particle populations are correct by construction, but the off-equilibrium components not (they are zero, while they should be proportional to velocity gradients). In the following review paper you’ll find a discussion of why an equilibrium distribution is insufficient on boundaries, and a few suggestions on which approaches one should choose instead.

The result of a LB simulation is never fully incompressible, i.e. there are always compressibility effects which spoil the accuracy of the simulation. If you wonder whether they are sufficiently small, the answer depends on the accuracy you wish to obtain. I don’t know of any systematic way to quantify the compressibility error (although there exist asymptotic error estimates). A straightforward approach is to keep decreasing the Mach number, which is proportional to the velocity in lattice units, until the velocity profile does not change any more within the desired accuracy. But be aware of other error terms, like the space discretization error due to the finite grid size, or the error due to the finite time step (for time-dependent problems).

Thanks Jonas,

a quick question concerning the paper. The boundary conditions beeing reviewed are all Dirichlet boundary conditions. In many cases you want to employ a Neumann bc at the outlet. Do you have any experience with combining the bc’s mentioned in your paper with the Neumann-approach presented by Orestis in the “How to impose von Neumann BC in LB simulations” on LBMethod.org?

Hello Martin,

there is a new paper by Michael Junk and Zhaoxia Yang concerning Neumann boundary conditions: “Outflow boundary conditions for the lattice Boltzmann method” in the Journal “Progress in Computational Fluid Dynamics, Volume 8, Number 1-4 / 2008”. This might be interesting for you.

Cheers,
Timm

Thanks a lot Timm, I’ll have a look.

Hello;
It is helpful when I found out this forum. I have the similar problem with this topic. I try to apply the velocity at the inlet. However, my rho aver at the inlet and outlet just keep increasing. Then I followed Jonas’s suggestion to apply a constant rho at the outlet. However, my rho average at inlet still keep increasing. Following is my code. Does anyone have any suggestion ?
Thank you

Box3D wall1 (0,nx-1,0,0,1,nz-2) , wall2 (0,0,0,ny-0,1,nz-2) , wall3 (nx-1,nx-1,0,ny-1,1,nz-2), wall4 (0,nx-1,ny-1,ny-1,1,nz-2);
Box3D inlet(0,nx-1,0,ny-1,0,0), outlet(0,nx-1,0,ny-1,nz-1,nz-1);

boundaryCondition.setVelocityConditionOnBlockBoundaries (
        lattice, wall1, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries (
        lattice, wall2, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries (
        lattice, wall3, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries (
        lattice, wall4, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries ( lattice, inlet, boundary::dirichlet);
boundaryCondition.setVelocityConditionOnBlockBoundaries ( lattice, outlet,boundary::outflow);
setBoundaryVelocity(lattice, inlet, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));
setBoundaryDensity(lattice, outlet, (T) 1.0);
setBoundaryVelocity(lattice, wall1, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));
setBoundaryVelocity(lattice, wall2, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));
setBoundaryVelocity(lattice, wall3, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));
setBoundaryVelocity(lattice, wall4, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));