Body force and its relations

Dear all,

I’m having a lot of trouble trying to work out what body force actually is and how to calculate it. I stick it into my program and it spits out a superficial velocity but what equation relates body force with superficial velocity and how does it relate to pressure gradient? Also how can I relate body force to reynolds number?

My aim is to equate body force in my LBM sims to pressure through a pipe in my practical experiments but without knowing how to calculate body force I’m stuck at the start.

Dear imish,

welcome to the forum.
Before we answer your questions, please have a look at the forum topics and the information on the openLB webpage. There are some other body force related threads. Just search for ‘body force’. If this information is insufficient, we will gladly help you.

Good luck!

Dear Timm,

Unfortunately I’m not very savvy with coding at all, I have looked at the forums and the closest post to what I’m looking for is malaspin and your replies to casey’s questions. dated 4 months ago. With a lot of searching I found the equation relating Re to body force is:
Re=( D^3 * rho * BF) /(8*v^2)
where D is diameter, BF is body force, v is viscosity, and assuming darcy’s law applies this seems to make sense. Whether it’s correct or not I’m unsure.

Unfortunately I also need to find an equation relating BF to physical units (such as pressure) without using reynold’s number. My aim is to relate and validate LBM against physical experiments, but if I use Re of my physical experiments to give me a body force in my LBM code it’s not a validation of my code because it forces the correct answer, in fact if I use my experimental Re to give me a BF and it doesn’t come out with the same result the only thing it proves is invalidation.

Basically I need a body force equation that doesn’t rely on answers from my physical experiments to give me the correct result. Please help!


Dear imish,

at first: body force and pressure gradient are equivalent. Whenever you have a pressure gradient along a tube or some other geometry, you can - in principle - also use a body force instead. Now, the relation between pressure gradient and body force simply is
f = - grad p
where f is the body force density (body force per mass), p is the pressure. Note the minus sign which indicates that the force points towards regions with smaller pressure.
I strongly recommend that you read this paper in order to understand how a body force is implemented in the LBM.
Regarding the question of unit conversion (physical units <=> lattice units): There are also many threads in this forum and Jonas has written a short review on unit conversions. You should also read this.
What exactly do you want to simulate? In 2D or 3D?


Hi Timm,

Thanks for the help, I understand the conversions now and sort of understand the theory behind adding body force to the LBM although admittedly some of the mathematics is confusing.

I’m simulating a packed bed in 3D in a cylindrical pipe under laminar flow (water).
I notice near the start of the paper you suggested I read was an equation F=pg Where F is body force, p is density and g is acceleration due to F. Unfortunately that’s not quite what I’m looking for but it is close. I need an equation that has initial conditions (like pressure) of an experiment not the end results such as acceleration or end velocity. So for example if I wanted to run a simulation of an experiment at 1 bar with a certain X sectional area I could immediately work out what the body force would be without needing to run my experiment to find the end Re to then plug into the equation I mentioned earlier and then run the simulation.

So ideally an equation like F (body force) = P * x,y,z where P is pressure, and x,y, and z are necessary parameters such as diameter of pipe in lattice units etc.

Sorry for tacking up so much of your time

Hi imish,

I do not understand what exactly you are looking for.
Which quantities are known and which ones are missing?


Hi Timm,

I would have initial setup values, so cross sectional area, initial pressure, viscosity, dx, dt, relaxation time, density would all be known. Then from these initial starting conditions I want to work out what the body force would be. If initial pressure changes so would the body force, so there must be an equation that gives the known initial pressure to work out an unknown body force no?


So you know the channel geometry and the simulation parameters.
But what do you mean by pressure? Pressure itself is irrelevant, but a pressure gradient is physical important. Do you know the pressure drop between inlet and outlet?
As I told you, the body force f and the pressure gradient grad p are simply related by
f = - grad p
For instance: You have a pressure of 1.1 at the inlet (lattice units) and 1.0 at the outlet. The length of the channel is 100 (lattice nodes), then the body force would point towards the outlet and have the value
f = (1.1 - 1.0) / 100 = 0.001
everywhere, because the pressure gradient is constant everywhere.
Is this what you need?


unfortunately I don’t know what the pressure outlet would be. I’ve considered using the Ergun equation to calculate pressure gradient through a packed bed but that requires superficial velocity, which I don’t have because I don’t know the volumetric flow rate

What I mean by pressure is inlet pressure. I keep mentioning pressure because inlet pressure is my one variable in my physical experiments. Using the answers I get from my physical experiments, such as outlet pressure or Re, to put into my simulations will not validate my LBM software so I can’t use them unless I can somehow calculate them without running an experiment.

I begin to see what you mean.
But like I said: The inlet pressure alone does not tell you anything. It is always the pressure difference driving the flow. So, to my understanding, you additionally need the outlet pressure in order to benchmark anything.
If anybody else has an idea, please let us know.


I did not understand everything in this thread, so I may or may not contribute in a helpful way with the two following comments:

  • Timm is of course right to insist on the necessity to prescribe a pressure difference rather than an absolute pressure value. At least, that’s the point of view you should adopt when working close to the limit of fluid incompressibility. In your experiment, the inlet pressure could for example be created with the help of a pump, which has the effect to increase the pressure with respect to the surrounding pressure. This surrounding pressure, or reference pressure, or lab pressure, is probably close to 1 bar, especially if there are also humans in the lab. Depending on the setup of your experiment, the outlet pressure is probably equal to, or close to the surrounding pressure.

  • If I remember right, we’ve already been discussing this topic in another thread, but I once more insist on the fact that I don’t think the two following are equivalent: (1) add a homogeneous body force over the domain of the simulation, or (2) enforce a pressure drop between the inlet and the outlet. Although the effect is the same in a Poiseuille or other empty-straight-channel geometry, I can’t imagine how it could be the same in a packed bed. It just seems to me that applying a pump at the entry of the bed vs. turning the bed upside down to accelerate the flow through gravity would result in a different pressure distribution inside the bed. The best thing to do is probably to try out both approaches in the lab experiment or in the simulation…

I think I understand now thanks jlatt and Timm, there’s only one last piece that I’m missing: In the paper on converting physical units to lattice units that Timm suggested I read, it mentions that Pressure Pp= rho * (lo^2/to^2) * Pd. If I want Pd (the lattice pressure) I have Pp, rho and lo is length of my system, but I don’t have “to” the time scale, as per the example in the same paper, to=lo/uo. To calculate “to” I need the velocity but I don’t have a velocity to work with just initial pressure and now, thanks to jlatt, an end pressure of 1 bar or thereabouts. How can I convert the pressure to lattice units without “to” or velocity?

On a similar note I also read many papers that say pressure P = cs^2 * rho. Does that mean Pd = cs^2 * rho? Where would pressure =cs^2 * rho and in which situations does pressure = rho * (lo^2/to^2) * Pd ?

Note: P = cs^2 * rho is from, among other papers, “On pressure and velocity boundary conditions for the lattice Boltzmann BGK model” Q. Zou and X. He, Phys. Fluids 9 (6), June 1997

Okay, the time scale t_0 can be computed directly from the length scale l_0, if you additionally know the sound speed. In lattice units, usually
c_s = l_0 / (t_0 * \sqrt{3})
is valid. Since l_0 and t_0 are set to unity in the lattice system, the sound speed is simply c_s = 1 / \sqrt{3}. If you know the physical length scale and the physical speed of sound, then you have your time step in seconds. Right?

The equation
p = c_s^2 \rho
is true in both unit systems. In other words: pressure and density times speed^2 have the same unit. But it would be better to write it this way:
p - p_0 = c_s^2 \rho
where p_0 is a reference pressure. As we have told you, only pressure differences are physical.


Thanks a lot both of you I very much appreciate the info.