For the bottom wall

you could define obstacles (solid) where you impose a bounce-back conditions and reproduce the shape of your grooves…

You should code something like

If (we are looking at a lattice node belonging to the Obstacle) then (bounce_back)

How to define the obstacles?

as Jonas did for the cylinder in his matlab code for flow past a cylinder in 2D. He defines the bbregion where he only has bounce-back …

Here how he does for the cylinder:

obst_x = lx/5+1; % position of the cylinder; (exact

obst_y = ly/2+1; % y-symmetry is avoided)

obst_r = ly/10+1; % radius of the cylinder

[y,x] = meshgrid(1:ly,1:lx);

obst = (x-obst_x).^2 + (y-obst_y).^2 <= obst_r.^2;

obst(:,[1,ly]) = 1;

bbRegion = find(obst);

% MICROSCOPIC BOUNDARY CONDITIONS

for i=1:9

% Left boundary

fOut(i,1,col) = fEq(i,1,col) + …

18*t(i)*cx(i)**cy(i)* ( fIn(8,1,col) - …

fIn(7,1,col)-fEq(8,1,col)+fEq(7,1,col) );

% Right boundary

fOut(i,lx,col) = fEq(i,lx,col) + …

18t(i)*cx(i)*cy(i)* ( fIn(6,lx,col) - …

fIn(9,lx,col)-fEq(6,lx,col)+fEq(9,lx,col) );

% Bounce back region

fOut(i,bbRegion) = fIn(opp(i),bbRegion);

end

… you could define a new bbregion.

I hope I was clear … if not sorry.

ciao

And