Permeability of porous media

Dear friends,

I used singal relaxation time (SRT) BGK D3Q19 model to simulate the water permeability of porous media. The applied boundary conditions are as following: Zou/He pressure boundary conditon at the inlet and outlet, half-way bounce back at solid nodes, periodic boundary at the other four surfaces. I found that the simulated results were large discrepancy with the experimental results. In addition, they are very dependent on the relaxation time (tau). Maybe it is attributed to the limitation of SRT model. Are there any friends also studying the fluid flow in porous media? Could you please share your experiences or give me some suggestions? Thanks a lot in advance here.


Hi Jack,

The dependence of viscosity upon tau can be eliminated by use of the MRT model, you findings are consistent with what’s reported in the literature. Can you give some more information on the experiment you have carried out and how you have attempted to reproduce this experiment in your LB model?


PS. for a steady state analysis I have found no benefit from using the half-way boucenback condition, It does however remain a more suitable choice if you are looking at a transient flow regime.

Hey Bruce,

Thanks for your reply. You are right. Exactly, I am looking for the high accuracy no-slip boundary conditions to find whether they are possible implementation for porous media or not. Meanwhile I’m studying two-relaxation time (TRT) or multi-relaxation time (MRT) model. Have you ever implemented MRT D3Q19? Could you please share me an example code about this?

The experimental results of water permeability are obtained from the laboratory measurements. Befor LBM simulation, I have carried out finite element (FE) simulation to evaluate the reconstructed microstructure. The FE simulation data are within the same order of experimental results.


I have only implemented MRT in 2d so far, but am happy to share the code. Have you converted your lattice permeability from lattice units to physical units?

In 2d at least I would expect the permeability to be reasonably accurate. Personally I have tested the LBM using unit cell cylinders whilst comparing to expressions provided by Gebart and Lee (references on request). For standard LBGK the error calculated was in general <10%.

It seems we are working on similar projects! Although we have not yet obtained a usable micro-structure geometry, so everything I have done so far has been purely academic.

I’m so glad you are doing the similar work. We can discuss more further :frowning:
I use LB units first to calculate the mean flow velocity and permeability in LB units. After this a units convertion factor dx^2 is multiplied to obtain the intrinsic permeability in square meter. If you are interesting I can also share my code with you. But The code is just implemented with SRT model.

Dear all,

Because of the a lot BB nodes, the structure of the media becomes not too well defined and usually you need to have better BB-like boundary conditions and not with the BGK. Dr. Ginzburg has a lot of works for boundary conditions and in the permeability media with the associated errors. By the way, errors increase to infinity while tau increases (more viscous fluids). So my suggestion is to use TRT at least to improve accuracy and other boundary conditions.

However, there is interesting work of Siarhei Khirevich - he did everything with the BGK and obtained nice results. You can ask him for his thesis at

Hopefully it will help,

Hi Alex,

Thanks for the suggestions, Is there any benefit to choosing the TRT model over the MRT model?


Hi Bruce,

Basically MRT allows more flexibility but in reality there are no good exact suggestions (analytical) what type of relaxation parameters to use for particular type of calculations. I would start with the TRT where quite a lot is done from the analytical type of view. Second thing TRT is the same computational price as BGK.


Hi Alex,

Thanks a lot for your answer and suggestions. I have read a little bit about your PhD thesis. It’s a good work. Right now, I have tried to use MRT-LBE D3Q19 model with pressure boundary and standard bounce-back to simulate the permeability of porous media. At first, on the basis of Bruce’s MRT 2d code, I have extended it to 3d to test the Poiseuille flow between the parallel plates. The transformation, M moment equilibria meq and diagonal relaxation matrix S presented by Dr. d’Humieres “Multiple-relaxation-time lattice Boltzmann models in three dimensions” were used. I found an interesting thing. At the former iteration time, the velocity profile seems reasonable. However, with the increase of iteration time, the results become to be instable. I don’t know why. Is there anyone have the similar finding or know the reason? Waiting for the suggestions. Thanks

Best regards,

PS: I have successfully checked out the mistake of implementation. Thanks very much for your kind attentions!

Hello jameson & Bruce,

I am glad to see some progress of your work. I was also planning to implement MRT or TRT to improve the stability and accuracy of flow in porous media. I have nano-scale 3D imaging data of rock material and have some numerical inaccuracy with SRT , probably due to small channel (few grid cells in a narrow channel). Sometimes numerical instability. So, I want to test how much MRT or TRT improves at a nano scale.

I would appreciate it if you can share your code if possible. I will share my work in the near future. I will send a message.

If anyone has an idea of simulating the flow (both single and multiphase) at a nanoscale (image resolution is ~ 10 nm), any suggestion would be appreciated.



Dear Bruce;

I am also working on simulating non Newtonian fluid flow in porous media.
I have tried to convert the 2D Carreau model to 3D but it seems a little bit complicated; So I decided to run the simulation in 2D.
The problem is that I do not know how to convert permeability in 3D (the one in the tutorial) to 2D and also how to provide appropriate 2D .dat image for the Palabos from .bmp images.
could you share your experiences about this matter or share your code if it is possible?

Many thanks;