Modifying a LBM simulation of porous media for curved surfaces

Hi people,

I recently got into using LBM to solve flow through randomly generated porous media to investigate the dependancies of various flow properties with respect to random variables used in generation. (Spherical packing, diameter distribution as an example). The work is going well so far and I seem to have got the hang of LBM in it’s most basic sense. I’m using a binary input file to input my domain and using a simple staircase bounce back boundary.

My supervisor asked me to see the effect of using a more accurate method to account for the curvature (i.e. I think defined as 2nd order approximation) to justify the simple use of a staircase boundary. I saw that this was in the PALABOS user Manuel :

‘IMPORTANT: Curved boundaries are available as of version 1.0, and are part of a fully-featured parallel stack, including parallel voxelization and I/O extensions. Curved boundaries are not yet documented. You can however find a
full-featured example in showCases/aneurysm.’

I was just wondering if there is anymore details regarding these types of calculations and how to implement them in PALABOS effectively. Potentially PDF/slides from a summer school or YouTube tutorials? I’ve had a look around but haven’t found anything too user friendly. Even a textbook with a section on the method available in PALABOS would be useful, I just can’t find what the approximation used is called.

I should state that CFD is not the primary focus of my PhD, I understand the basics of LBM but the depth of research articles can be like jumping into the deep end somewhat.

Hello SamHughes,

for the basic ideas of the methods you can check the Palabos Summer School slides here. There is also the youtube video here. However, the practical session was not recorded. For the a more practical help is better to refer to examples. In your case I think you can check a palabos example that is called flow around an obstacle, or something similar. I can also share the example of the palabos class…

Cheers,

Francesco

Note also, that in the case of porous medias, you could be interested to use a Multi reflections methods (Ginsburg 2003), because those methods allows to have permeability that is independent from the relaxation parameter. However, they are not implemented in palabos at the moment. But you could implement them starting from the existing ones.

Ah ok, I watched that before posting. I get the idea’s of the methods -almost like an interpolation with some accounting for various problems this type of approximation insures- I’m relatively new to C and class structures, I’ve been learning as I go with the using some textbooks and the tutorial to get a feel for the whole thing. I’ll take a look at the example, I guess my issue is that I can’t find something where: ‘here is one thing with stepped boundary, here is the exact same but with a curved approximation’, so I can compare the two.
I’ll have a look at the paper of Multi-reflection methods, but to be honest, as I’m relatively new to C, object programming and LBM, I may struggle with implementing my own code unless it’s a relatively simple fix.

Thankyou for taking time to respond.

hie Everyone

i am trying to simulate flow in a monolith structure, a porous one, the results that i am getting are not satisfactory. the results are not satisfying the continuity equation, there is no conservation of mass. in post processing, the fluid flow seems to have a higher velocity at the outlet than the inlet after sometime. could it be the parameters that i am using?

my boundary conditions are as follows:

lattice->periodicity().toggleAll(true);

Box3D bbox = lattice->getBoundingBox();
Box3D inlet(bbox); inlet.z1 = inlet.z0;
Box3D outlet(bbox); outlet.z0 = outlet.z1;

boundaryCondition->addVelocityBoundary2N(inlet, *lattice);//, boundary::dirichlet);
boundaryCondition->addPressureBoundary2P(outlet, *lattice);//, boundary::neumann);

initializeAtEquilibrium(*lattice, lattice->getBoundingBox(), 1., Array<T,3>(0., 0., uLB));
setBoundaryVelocity(*lattice, inlet, Array<T,3>(0., 0., uLB));

lattice->initialize();
delete boundaryCondition;

some of the parameters that i am using are as follows:

T uLB = 0.002
inlet velocity = 0.0005
resolution = 100
kinematic viscosity = 1.e-6

my geometry is an STL file. if there is need for me to upload the full code, please let me know.
why am i getting a higher velocity towards the outlet.