Lattice boltzmann solver documentation

The LBM solver of Barbatruc is written following two Books:

General algorithm

The solver is using the D2Q9 Lattice and follows the classical approach depicted on the Wikipedia introdution on LBM.

Inlet boundary conditions

The default inlet BC. at x_min is using the Bounceback approach (p77 book Mohamad, p198 book Sukop). Two other formulations are also available , with Non equilibrium extrapolation method (p79 book Mohamad, p194 book Sukop) and equilibrium (p191 book Sukop)

Outlet boundary conditions

The default outlet BC, at x_max is using the extrapolation method (p79 mohamad). There is also the density_imposed option (p79 mohamad).

DIfferences with the NS solver

The LBM solver share the same API as the NS solver. In particular it features a cell-blocking method using the same obstacle.

However, the current LBM implmentation has been only tested for poiseuille flow. Use this solver with caution for the moment Take particular care about the conversion between physical quantities and Lattice non-dimensionned quantities. Moreover, it does not transport the scalar yet.

Note to developers: unfortunately the axes are swapped between NS and LBM implementation. NS use X on the “axis 1” (second index of numpy array), while LBM use X on the “axis 0” (first index of numpy array). This is the origin of the following initialization
self.init_velocity = np.stack(
            (np.transpose(dm.fields["vel_u"]),
             np.transpose(dm.fields["vel_v"])),
            axis=0)