forces in freesurface / twophase and shan/chen

Could you please clarify why Palabos introduces forces as follows?

j += rhoDefault * tau * force

My results indicate that the resulting hydrostatic pressure is completely wrong when tau is variable or greater than 1. When I deactivate this way of introducing forces and instead use Guo external force, then the pressure is correct even for high tau.


Thanks for your post.

There exists different methods for adding a body force in lattice Boltzmann, which are all valid in the sense that they are second-order accurate. In particular, there are the two methods you mention:

  • The Guo approach, in which one adds a term to the populations after executing the usual collision.
  • The Shan/Chen approach, in which one adds a term to the equilibrium velocity.

In multi-phase problems, we have often adopted the Shan/Chen approach, because (1) Shan and Chen have somehow set off a trend by proposing to do in their multi-phase model, and (2) it is cheaper or easier to apply numerically.

There shouldn’t be any issue with either approach, though, and I am unsure about why you don’t get the hydrostatic pressure profile. Did you obtain your wrong pressure profile with the free-surface or with the Shan/Chen code?

From my previous experience with similar issue, I would be tempted to say that your problem has to do with the force term being multiplied, respectively not multiplied, by the density. The bottom line is the following. If you multiply the force term by the density rho, you should obtain a static pressure profile which is compatible with the one observed in an ideal gas (which, if I remember right, is exponential, as derived here: If however you interpret the force term as a pure acceleration, without density component, you should get a linear law as in liquids.

I cannot match these comments exactly with the issue you are having, but it might be worth playing a little bit with the density in front of the force term. What happens if in the code line you quote you replace rhoDefault by rho?

I’m very interested in your observations, please keep us updated!