## 3 Numerical Implementations and Algorithms
### Additional Solid Routines
Indeed, \(\omega=0.01\) and \(\omega=1\) give almost the same results. This can be explained by the fact there exists a balance between stress divergence and relaxing term due to the truncated diffusive term which scales with the diffusion coefficient, here \(\frac{1}{3}\left(\frac{1}{2}-\frac{1}{\omega}\right)\). We refer the readers, in particular, to the C++ main file _Article.cpp_ included in LBMS library which contains all the needed exhaustive details for Algorithm 5. Since presented algorithms are based on library sources, useful additional comprehension can be retrieved from this repository. ```
Input:Static equilibrium problem (isotropic materials) Result:Solved static equilibrium state and related macroscopic variables Initialization (see library sources [36]) ; // Other necessary initializations Lattice.SetPeriodicity(false) ; // Periodicity = false Lattice.InitializeAtSolidEquilibrium(\(f^{(eq),sld}\)) ; // Solid equilibrium at \(t=0\) Lattice.SetBoundaryConditions() ; // Set fixed boundary conditions Lattice.SetBoundaryVelocity() ; // Set velocity boundary condition Lattice.Execute(Algorithm 1) ; // Compute displacement field Lattice.Execute(Algorithm 2) ; // Compute strain field and stress field for\(i\gets 0\)to\((i\times\Delta t)<MaxStudyTime\)do  Lattice.Execute(Algorithm 3) ; // Apply lattice body force Lattice.Execute(Algorithm 4) ; // Relax boundaries Lattice.Collide() ; // Standard PaLaBoS colliding step Lattice.Stream() ; // Standard PaLaBoS streaming step if\(i=MaxIterationBoundaryCondition\)then  Lattice.UnsetBoundaryVelocity() ; // Set velocity boundary condition to zero end  Lattice.Execute(Algorithm 1) ; // Compute displacement field Lattice.Execute(Algorithm 2) ; // Compute strain field and stress field  end
```

**Algorithm 5**LBMS Loop

### Proposed Method and Algorithms in a Nutshell

To sum up, in order to extend the LBM to solid static equilibrium, the proposed method is to apply the LBM formalism through the Algorithm 5 (leading to the LBMS). Algorithm 5 itself relies on the previous Algorithms 1-4 and consequently on Equations (2)-(9). In addition to this generic method, a constitutive law needs to be added to close the system. In our following validation, a linear isotropic elastic behaviour is used which leads to the Equation (16), and which is further detailed in the following section. ## 4 Validations and Benchmarks

To validate the previous physical interpretations, LBMS developments and C++ algorithms, results are compared with an FEA software. The reference model must be accurate and faithful under mechanical framework assumptions. These validations are performed in a two-dimensional space for simplicity and clarity using a deformable solid body. Throughout this section, all numerical values are given in the International System of Units (SI) base units if units are not mentioned. ### Mechanical Framework

A strict mechanical framework must be defined so as to identify with fidelity commonalities between the two different approaches in terms of results. To do that, a necessary mechanical background is fixed in this section. This background sets the mechanical assumptions and study properties for both methods enabling relevant comparison. #### 4.1.1 Mechanical Prerequisites

We resume some aspects partially developed in Section 3.1 concerning isotropic linear elastic materials, Eulerian and Lagrangian frameworks. Details are given to highlight with preciseness the type of matter used and useful assumptions to validate the LBMS. Firstly, we point out that the stress-strain relation of such isotropic materials is straightforward and well known. This solid behavior is determined with respect to the classic Hooke's law given in Equation (16) for a lattice node \((G_{x},G_{y})\).