## 2 Numerical Methodology  
### Lattice-Boltzmann Method  
The Lattice-Boltzmann method follows a mesoscopic approach wherein the dynamics of fluid particles are approximated by interactions between particles on a regular lattice. The fluid flow is modelled by the collective behaviour of these particles. The Boltzmann equation exists as a single particle distribution function \(f\) takes the following form:  
\[\frac{\partial f}{\partial t}+\overset{\rightarrow}{v}.\
abla f=\Omega(f) \tag{1}\]  
where \(f(\overset{\rightarrow}{x},\overset{\rightarrow}{v},t)\) related to the probability of encountering particles with the continuous. The velocity of microscopic particles at a specific position \(x\) and time \(t\) is denoted by \(\overset{\rightarrow}{c}\), while the collision operator \(\Omega(f)\) governs the rate of change in the distribution function \(f\) during collisions. In many applications involving the kinetic theory of fluid dynamics, the collision term \(\Omega_{i}^{BCK}\) is commonly represented as \(\Omega(f)\) using a complex integral formulation. However, to simplify calculations, a widely used approximation known as the \"BGK approximation\" was introduced by [PERSON], [PERSON], and [PERSON]. This approximation, integrated by [16], replaces the integral term with a simpler form, as demonstrated in Equation (3). \[\Omega(f)=\frac{1}{\tau}\Big{(}f_{i}^{eq}-f_{i}\Big{)} \tag{2}\]  
The collision operator models the collision's effect as the relaxation of the distribution function f towards a steady-state distribution, known as the Maxwellian distribution \(f_{i}^{eq}\). The parameter \(\tau\) represents a characteristic time determining the frequency at which the distribution function relaxes towards equilibrium. To discretize the Boltzmann equation, the continuous velocity space is discretized into a finite set of velocities, denoted as \(\overrightarrow{V}=\left\{\overset{\rightarrow}{\varleftarrow}\partial_{0},\overset{\rightarrow}{\varleftarrow}\varleftarrow_{1},\,\ldots,\overset{ \rightarrow}{\varleftarrow}\varleftarrow_{n-1}\right\}\). Consequently, the distribution function \(f(\overset{\rightarrow}{x},\overset{\rightarrow}{\varleftarrow},t)\) is reduced to \(f_{i}(\overset{\rightarrow}{x},t)\), which describes the distribution on a finite lattice. BGK converted with the Boltzmann equation is simplified to LBGK, which is the discrete Boltzmann equation in [17];  
\[\frac{df_{i}}{dt}+c_{i}.\
abla f_{i}=\frac{1}{\tau}\Big{(}f_{i}^{eq}-f_{i} \Big{)} \tag{3}\]  
The \(f^{eq}\) in Equation (3) is the equilibrium distribution function for density. The equation undergoes a discretization process using a spatial step size \(\Delta x\) and a temporal step size \(\Delta t\), which are related by the following expression: \(\frac{\Delta x}{\Delta t}=c_{i}\). This discretization ensures that the particles in a node \(x\) move in time \(\Delta t\) toward a neighbour node \(x+c_{i}\Delta t\) along the vector \(\overset{\rightarrow}{c}_{i}\) and the equation is [16];  
\[f_{i}(\overset{\rightarrow}{x}+\overset{\rightarrow}{c}_{i}dt,t+dt)-f_{i}( \overset{\rightarrow}{x},t)=\frac{1}{\tau}(f_{i}^{eq}-f_{i}(\overset{ \rightarrow}{x},t)) \tag{4}\]  
This method consists of the following two steps:  
1. Streaming: During each time step \(\Delta t\), the particles undergo movement along the lattice bonds to adjacent lattice nodes. The distribution function \(f_{i}^{*}(\overset{\rightarrow}{x},\,t)\) propagates along the vector \(\overset{\rightarrow}{c}_{i}\), and at the updated time \(t+\Delta t\), the distribution function at a neighbouring \(f_{i}(\overset{\rightarrow}{x}+\overset{\rightarrow}{c}_{i}dt,t+dt)=f_{i}^{* }(\overset{\rightarrow}{x},\,t)\)
2. Collision: At time t, the particles located at a specific node x interact, leading to changes in their velocity directions.