isotropic tensor

Good day

Can anyone explain about the isotropic tensor required by D2Q9 model. What is it actually about? Any suggestion of ‘easy to understand textbook’ about tensor.

Thank you

I guess that by isotropic tensors you mean the different sum combinations

sum_i t_i c_{i alpha}c_{i beta} = T_{alpha beta}
sum_i t_i c_{i alpha}c_{i beta}c_{i gamma}c_{i delta} = T_{alpha beta gamma delta}

for example. This tensors represent the way you see the physics of your problem depending on the orientation of your coordinate system. The physical quantities are of course independent on the angle under which you look at them. But when you do a simulation you have to discretize the world, and therefore lose something in the process. Nevertheless you want that these kind of basic physical properties are kept in the process.

For the athermal Navier-Stokes case, one needs 4-th order isotropy in order to recover correctly the macroscopic equations. The D2Q9 but also the D2Q7 satisfy these minimal isotropy requirement. You can find the needed relations these books.


When you develop a lattice gas or lattice Boltzmann model, one thing you like to ensure is that it is isotropic in the limit at which you want to extract conclusions from it (for example small grid step, small time step and small Mach number). Whether this is the case or not can depend on the lattice you use, and in particular, whether the lattice verifies a few tensor equations, as pointed out by Orestis.

The discussion of isotropy is strongly related to the discussion on Galilean invariance, and you may want to read the corresponding thread (it was a few days ago) before proceeding with this one.

Isotropy for an equation means that it is invariant under rotation. The Navier-Stokes equation for example is isotropic. Write down the N-S equation for the velocity u. Then, define v = A u, where A is a matrix for a rotation by any given angle. Plug this substitution into the original equation, and you will see that v also obeys N-S. This is what isotropy means.

Isotropy is not an inherent property of a LB model. Instead, being isotropic or not depends on which limit of the model you are considering, and which equation you are are trying to fit in this limit. The BGK model for example fits the incompressible Navier-Stokes equation in the limit dx->0, dt->0, dt/dx^2 = const. Which means, it yields a fully isotropic representation of incompressible and isothermal fluids in this limit. If on the other hand you start claiming that rho is proportional to the temperature and write down higher order terms in the asymptotic development of BGK, you will not exactly get the equations of a thermal fluid. Instead, the equation will include error terms which are anisotropic.

The reason why there is a lot of talk about lattices and isotropy is that you can easily get into a situation where your model almost fits the expected macroscopic equation, except for an anisotropic term, which can however be eliminated by using a lattice with enhanced symmetry properties. Thus, instead of simply stating that a certain models fails to represent the N-S equations, it is useful to specify that the reason for this failure is a lack of isotropy, and not the use of a fundamentally wrong model. An example is the lattice gas HPP, which cannot be used to simulate fluids because of lack of isotropy, as opposed to FHP, which finds N-S thanks to the use of a hexagonal lattice (see the book by Chopard and Droz).

To know whether an equation is isotropic or not, you don’t actually need to go through all the algebra of applying a rotation and working out the substitution. You know that an equation is isotropic if it only consists of scalars, (physical) vectors and (physical) tensors, and tensor operations thereof (you can find a detailed explanation of why this is the case in most textbooks on mathematical methods in physics). In the following, let’s simply call all these objects “tensors”. By “physical”, it is meant that they are independent of the reference frame, and that their components transform in the expected way under rotation. For example, the velocity u is a tensor, but the lattice vector c_1 is not a tensor, because its components, say, (1,0), do not change when you change the reference frame.

Here’s the tensor form of the momentum equation of an incompressible, isothermal fluid:

d/dt u + del * (uu + p I - 2 nu S) = 0 . [ * means scalar product; uu means tensor product ]

This equation uses the velocity u, the pressure p, the identity I, the viscocity nu, the strain rate tensor S and the space derivative operator del, all of which are tensors, and tensor operations thereof. Therefore, the equation is isotropic.

The following equation for example would be anisotropic, because it uses not only tensor operations (extracting the velocity component u_0 is not a tensor operation):

d/dt u + del * (uu + p I - 2 nu S) + u_0 I = 0 .

The following equation would be anisotropic because it uses not only tensors (the lattice vector c_1 is not a tensor):

d/dt u + del * (uu + p I - 2 nu S) + u*c_1 = 0 .

These equations are horribly wrong, and you would probably not even want to try to fix them. But consider the following equation:

d/dt u + del * (uu + p (sum_i c_i c_i) - 2 nu S) = 0. [Here, i runs over all lattice directions]

At first sight, this equation looks anisotropic, because it explicitly mentions lattice vectors c_i, which are not tensors. But here’s where some lattices have specific properties that help you out. The D2Q9 lattice for example verifies the relation

sum_i c_i c_i = c_s^2 I,

where the speed of sound c_s^2 is a constant (and thus, automatically a tensor), and the identity, as already mentioned, is a tensor as well. Thus, the whole thing is isotropic, and you get the right equation by identifying the pressure with c_s^2 p, instead of p. That’s what Orestis is hinting at in his post: the tensor T is isotropic. Or, to be consistent with the language used so far: the object T is a tensor.

I think that this is essentially what your question is about, or at least I hope so, after all the text I wrote. There is also a very nicely written chapter on lattice tensors in the book by Wolf-Gladrow.

Actually, let’s take this opportunity to write an equation which is not Galilean invariant, to conclude the corresponding thread. Here we go:

d/dt u + del * (uu + p I - 2 (nu+u*u) S) = 0

This equation is isotropic, but obviously not Galilean invariant: the viscosity depends on the velocity. If you switch to a reference frame moving at high velocity, the fluid is more viscous. You may want to argue that the correction to the viscosity is not important, because we are considering the low Mach-number limit anyway, where u*u vanishes. But all you say by that is that “the model is Galilean invariant at small velocity”, which sounds quite inconsistent in itself.