My faculty advisor recommended that I take a look at the lattice Boltzmann method as an introduction to scientific computing and potentially an undergraduate honors thesis topic. I cooked up a some Java code (kind of unconventional, but I only know Java and Python right now), and I had a simple 2D simulation. Upon testing a 2D channel flow, I discovered many things wrong with the behavior.

  1. The velocities at the nodes are not stable. In general they all approach zero. By 10,000th time steps, they are on the order of $10^{-15}$

  2. Despite the parabolic velocity profile one would expect, the magnitudes of the x-component of the velocity switches between positive and negative along the x-axis.

velocity x-component

The reference I'm using explains the general algorithm clearly, but I have yet to find a clear description of the implementation of the no-slip boundary conditions. This is where I think my problem lies. I'm attempting to implement the on-grid boundary conditions (pgs. 3-4) and simulate the Poiseuille flow described in article.

How exactly are the no-slip boundary conditions initialized? Right, now I'm operating under the assumption that you calculate the equilibrium functions based on initial density and velocity.

There may be an even larger problem with my code if this isn't the problem. The source code is located here if anyone is curious. Keep in mind this was the most intuitive approach to implementing the LBM for me and not necessarily to most efficient.

  • $\begingroup$ I think the question is not clear without further information. a) what do you mean by 'not stable'? b) which velocities do you plot? the boundary values? c) what is the peak velocity of your parabolic profile? d) did you implement the free outflow correctly? $\endgroup$ – Christian Waluga Aug 26 '15 at 17:42
  • 1
    $\begingroup$ Have you tested your code on a simpler problem first? $\endgroup$ – Kirill Aug 26 '15 at 19:03
  • $\begingroup$ @Christian a) 'not stable' was absolutely the wrong wording. The velocities get very small as the time step increases and settle in the configuration shown above. b)The top and bottom of the channel (32x16) are no-slip boundaries and the left and right side are periodic boundaries. All nodes are instantiated with an average density except for the nodes on the left (slightly higher density) and right (slightly lower density). Velocities along the length of the channel are plotted c) ~1x10^-15 d) I should check... I've been more focused on the no-slip boundaries to be honest $\endgroup$ – Bryan Chem Aug 26 '15 at 21:33
  • $\begingroup$ @Kirill I have not. Is there a simpler problem that I can use to test? This is the first benchmark I see a lot of people use. $\endgroup$ – Bryan Chem Aug 26 '15 at 21:34
  • $\begingroup$ Thanks for commenting guys. I haven't really worked on anything of this scope before. There's a lot to keep track of. $\endgroup$ – Bryan Chem Aug 26 '15 at 21:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.