Load balancing inhomogeneous porous media

I see that there is a load balancer in OpenLB, but I can’t really figure out how it works. I have written my own code for calculating abs.perm. in porous media (eg. sandstone) and working on up to 1000^3 models atm. I use an MPI grid communicator and dividing the model into 3D blocks for each processor. This has the limitation that the sub-divisions of the model must be equal for all processes with the same X, Y or Z communicator coordinate. I do calculate individual boundaries for each rank, but I have to average them or something similar to make them the same across the same communicator “slice”. For inhomogeneous models this becomes a big problem.

Is this somehow handeled by OpenLB and it’s load balancer? How is a model in OpenLB distributed among processes? Is it possible to cut a model into heterogeneous pieces? Rewriting my 3D communicator to support that would take ages…

  • Atle

No, there is no load balancing scheme in OpenLB. The loads are always distributed evenly. If you want your own balancing scheme, you need to write it. It doesn’t require that you rewrite a communicator though, especially if you can do with static load balancing. Have a look at file multiDataUtilities2D.h to see how to write the block-to-processor attribution.