how to quantify my real timestep and node-to-node distance

Hi to everyone,

I am sure that this is an overdiscussed thread, but still I don’t understand perfectly how I can pass from adimensional values to real magnitude values.

Let me put you in context by using the data from my model.

I have a channel developed flow with poiseuille flow in inlet. 2DQ9 model. With a centered square cylinder as obstacle.

if I take into account that I use a uniform mesh I set:
my fluid velocity uMax = 0.1
nodes on y = 320
nodes on x = 2080
nodes on square side L_Obst = 40
Reynolds = 100
velocity of sound = 1/sqrt(3)
Let’s say that I want to adjust my viscosity to a fluid like water --> kinematic viscosity = 1e-6 m2/s

Keeping the same velocity, can I adjust the square side distance for Re = 100… and then divide my square real distance by L_Obst(40) to get the real step size of the mesh?

If I regard the step size of the mesh and all the previously displayed data, I just need to isolate dt from the equation U = dx/dt so that dt is 10 times greater than my dx?

My real magnitudes following this reasoning dt = 2.5e-4s dx = 2.5e-5m

Is there anyone who can say whether I am right on this?

Thanks in advance,


Hi Pulgar,

Perhaps the first thing to remember is that flows in the same geometry are equivalent if the non-dimensional numbers are the same. So, if you have incompressible flow around an object, if the Re number is the same it doesn’t matter if the fluid has the viscosity of air or water; the flow field will be the same.

Now forget about numerical parameters for the moment and just think about non-dimensionalasing the system. Take the inflow velocity U to be the characteristic velocity and the diameter of the object L to the characteristic length. The Reynolds number is Re=UL/nu, where nu is the (kinematic) viscosity.

We may as well non-dimensionalise the system so that the characteristic values are unity: divide the flow velocity u by U and the spacial dimensions x by L. The inflow velocity is now 1 in this scaled system, and the diameter of the object is 1 unit too. Since speed is distance/time you also have the scaled time. Since U=L=1, the non-dimesnional viscosity is nu=1/Re. Thus, flows in this geometry with the same Re (or same non-dim. viscosity) are the same. Of course the “physical” values are different (ie the scales are different), but the flow is not. If you want to go from non-dim values back to dimensional (physical) values you just do things in reverse: multiply the non-dim velocity by U, etc.

Since the flow is now governed totally by the Re number we may as well discretise the non-dim. system. Let’s say we want N points per unit length (ie in a characteristic length). The grid spacing is thus dx=1/(N-1). We also need to put the (unit) non-dim. velocity into the computational scale. Since the “grid speed” is c=dx/dt, we scale the (non-dim.) velocity by dividing it by c: uLB=1/c=dt/dx. The “grid Re number” is therefore Re=uLB*(N-1)/nu. nu is the lattice viscosity, if you like, and from this you can find tau.

You have to be careful of how you choose c (or equivalently, dt) because it defines the Mach number: Ma, and thus uLB, have to be small. But if you set Ra and Ma, and specify the grid size (ie, dx) you have everything you need.

In your specific example, Re=100. In the non-dim. system it doesn’t matter if the viscosity if for air or water or whatever - it’s the Re number that dictates everything (well, and the Ma number too). Think of your system above with Re=100, Umax=0.1 and Lobst=41 (say 41 for ease) as the discretisation of the non-dim. system. Your grid spacing is dx=1/40 and your timestep is dt=Umax*dx=0.1/40. The lattice viscosity is nuLB=(N-1)*uLB/Re, and the relaxation time follows simply. If you double the number of point in your unit length (ie make the obstacle twice as big) while keeping Re and Umax fixed, then what you are doing is making dx (and dt) smaller, but keeping exactly the same physics (assuming the aspect ratio is also fixed). In other words, this is a mesh refinement so you will (hopefully!) be getting a more accurate solution to the physical problem.

If you want to covert back to physical (dimensional) parameters, you just do things in reverse. You said that your fluid is water with nu=1e-6m^2/s and Re=100. Let’s say the diameter of the obstacle is L-meters. This means that the inflow velocity is u=(1e-4/L)m/s. To get from your LB predictions for velocity to physical values you thus divide them by Umax(=0,1 here) and multiply by the u just found.

[quote= dt=Umax*dx=0.1/40][/quote]


[quote="The lattice viscosity is nuLB=(N-1)uLB/Re"][/quote]
I guess this comes as
dt=dx/Umax=(1/40)/0.1 and
(1/(N-1))/nu and

Anyway, so following this arguments my uMax (the adimensional value that I set up in my LBM) is basically my characteristic velocity (grid speed?), and you also define it as c? in that case I get it, i just get my time step as:

what has to do my relaxation time on all this? I know it comes from the LBnu, but is it relevant tau when I have to dimensionalize my problem?

Let’s say L = 0.01m
uMax = 0.1m/s

dx = 0.01/40 = 2.5e-4m
uMax = dx/dt --> dt = 2.5e-3s

Do I need to take something from the relaxation time or speed of sound?
nu = L/40*uMax/Re = 2.5e-7m2/s

I think my expressions are correct. uLB=1/c=dt/dx, so dt=dxuLB=0.1/40. And in lattice units Re=uLB(N-1)/nu, so nu=uLB*(N-1)/Re. Note that this scaled viscosity is sometimes called the lattice viscosity. Since nu=tau/3 in these units (or nu=1/3*(tau-1/2), depending on how you’ve defined the problem), tau=3*nu (or the equivalent). So putting numbers into the expression in my first post, nu=(N-1)uLB/Re=400.1/100. So in your code tau=0.12 (if we take nu=tau/3). That’s it. If you don’t like the idea of non-dimensional variables then note that you scale (ie divide the physical variables) x by dx, t by dt and u by c.

I have been looking for some theory of the alberta’s LB workshop

I think that basically what we are not agreeing is just the assignation of the parameters. It is clearly specified and explained on one of their presentations about scaling codes with adimensional numbers.

thank you anyway for the attention and help on the topic!

Kind Regards


Just take a moment to think about what you have underneath “I guess this comes as…” Forget about meters, seconds etc and concentrate on the discretisation (you can call a characteristic length whatever you like, but at the end of the day you are putting mesh points in this unit of measure to make sure your code runs and is accurate). Your expressions say that dx=1/40 and dt=1/4. Do you really think your timestep should be 10 times larger than your grid spacing? Let me put this another way, The Mach number is u/c_s, where c_s is proportional to dx/dt. This has to be small, ie u<<dx/dt.

c_s is proportional to dx/dt? You mean the real velocity of sound ? I thought it was proportional to the density, and as density is set up to 1 for conveinence in the code, and for convenience I set it up to 1 kg/m3 in real.

I just verified that my Re and LB_Re are the same, it seems consistent and I was looking for a way to determine the real parameters from the adimensionalized, ignoring how realistic they are. I finally got what I wanted. I had to set up 3 real parameters and fix reynolds and to get the conversion factor of time. with that I can then evaluate if the real parameters are feasible in reality (ma<0.3).

Thank you again, pleb01