Brinkman flow in a channel is a classical benchmark problem for validating the Navier--Stokes--Brinkman (NSB) solver, as it combines viscous diffusion and Darcy drag effects characteristic of porous media. The problem considers a steady laminar flow through a channel filled with a porous matrix, where the additional Darcy drag term significantly alters the velocity distribution.
In this example, TRT collision model is adopted. Meanwhile, the source term is expanded up to the first Hermite order.
The governing one-dimensional Brinkman equation reads
where $u_x$ is the velocity in the streamwise ($x$) direction, and $F_0 = \tfrac{\mu_0}{k\mu}$ is the normalized Darcy coefficient, with $\mu$ the fluid viscosity, $\mu_0$ the effective viscosity, and $k$ the permeability.
The boundary conditions are imposed as a no-slip condition at the lower wall and a symmetric velocity condition at the upper wall,
The analytical solution of this boundary-value problem is
with $k_1 = \tfrac{u_m}{e^{\sqrt{F_0} h} - e^{-\sqrt{F_0} h}}$ and $k_2 = -k_1$.
The analytical solution is written in func.lua.
The values of $F_0$ is set in args.lua. Readers are encouraged to modify it
to see how the Brinkman flow profile changes with different $F_0$ values.
Readers can run the workflow by executing the script multi_f0.sh to simulate
multiple $F_0$ values in one go.
The post-process of results plot_contour.py is to generate contour plots of
the velocity profiles for different $F_0$ values.
To run the python script, make sure you have matplotlib and numpy
installed in your Python environment.
The example uses the following settings in params.lua:
resolution = 2 ^ 3
The reference profiles for different $F_0$ values are provided in
media/.