I’m trying to simulate the poiseuille flow. At first, i tried to simulate a gravity driven flow, using the periodic boundary condition. After that, i tried using the Neumann condition at the inlet and the pressure condition at the outlet, with no gravity at this time.
In both cases the simulation reached the end with an aleatory maximum velocity.
In the sukop book, for example, he asks to run a simulation ensuring that the maximum and average velocities don’t exceed a certain lattice speed, but i couldn’t find anything about how to do that…
What do i have to do in the code so that i can fix the maximum lattice velocity? I’m trying to do that for over a month…
In Poiseuille flow, the maximum velocity is the centerline velocity. You can set this through the form of the force. This velocity is also the characteristic velocity used in the definition of the Reynolds number. Put another way, we know the exact solution to Poiseuille flow, so you can define your force accordingly. See He et al 1997 for a good description. Likewise, you can impose the exact solution for an inlet condition
I’m trying to implement LBM for velocity driven poiseuille flow (zero pressure gradient) with a D2Q9 model. A free stream velocity is applied at the inlet and full-bounce-back boundary conditions at top and bottom walls. As of now, I haven’t specified any specific boundary condition for the outlet but the streaming process ensures a zero gradient condition there. My problem is that the final maximum value of the x-direction velocity is smaller than the value I’ve specified as the magnitude of the free-stream velocity. The analytical solution says Umax should be 1.5 times U(free stream). Is this because I haven’t specified any boundary condition for the outlet? The problem persists even if I give periodic boundary condiditon at inlet and outlet. Your help is really appreciated.
I suspect your error is due to the numerical slip error associated with bounce-back. More specifically, bounce-back, with BGK, does not give exact no slip at solid walls. This error is second order in grid spacing, meaning that if you add more grid points to your simulation while keeping the non-dimensional numbers (Reynolds and Mach) the same then you should get closer to the true solution. Also, the slip error depends on the relaxation time and is generally larger for smaller viscosities. See the work of He at al 1997, and Ginzbourg and Adler 1995. Note also that the slip error can be eliminated with MRT or TRT schemes.
Regarding the corner treatment mention above (in case it is of interest), boundary conditions other than bounce back that do not require finite difference or interpolation/extrapolation approximates (sometimes called local on-node methods), are generally either less stable or converge at a slower rate than bounce back (often both). In particular, it is difficult to obtain accurate solutions to flows more complicated than constant pressure gradient channel flows without having a small grid spacing or time step (ie, you usually need considerably more grid points than with bounce back if you want good solutions and a stable numerical method). This is a potentially big draw back as it is hard to get very accurate results for simple benchmark tests. Take lid-driven cavity flow for example. At a moderate Reynolds number of 1000 it may be difficult to obtain accurate and stable solutions with local on-node boundary conditions when using the standard mesh size of 257*257 points. However, this is easy with bounce-back.
Finally, the corner method mentioned in the paper looks very similar indeed to that in earlier articles: Bennett et al int. j. numer. meth fluid 2012 (available online since 2011). All of this research has been freely available on other webpages since 2010… More importantly, it is misleading to say bounce back corners are not needed - bounce back remains the most stable and simplest local method.
pleb01, first of all, sorry for the delay. Thanks a lot for your help!
I’ve applied the exact solution to the pouseille flow and then have successfully run my simulation. Now i’m writing my MCMP code.
Although this problem have been solved, one last thing has been intriguing me. Both in the pouseille simulation as in my SCMP simulation(a falling droplet), i’ve not been able to link the lattice boltzmann gravity value with the real value, 9,8m/s². I’m following the document that is in the Lattice Boltzmann Howtos, trying to apply its metodology to the gravity, but it doesn’t matter how i change the parameters dx and dt, the real gravity value never matches the virtual one. Is there any special treatment that i must apply so that i can successfully match the lb gravity value with the real one?
I’m also trying to simulate the poiseuille flow. At first i did with regular bounceback at the walls and it worked, however when i i tried to simulate a gravity driven flow, using the slip boundary condition at the walls, the simulation reached the end (being Ud = 1.5 in dimensionless terms with respect to the average velocity) and even exceeds it with an unstable maximum velocity occurring later.
What do i have to do in the code so that i can fix the average lattice velocity (Ud=1) similar to what I have seen in other papers even when the slip conditions have been incorporated? I’ve been on this for a while now so I’ll really appreciate the help? Thanks