# LBM Examples

## Cavitation simulation

This example deals with a multiphase simulation of an LBM fluid under a cavitation condition. There are no boundary conditions imposed. In Mechsys LBM when no boundary conditions are imposed, then periodic boundary conditions are applied by default Therefore there is no`Setup`

function or `UserData`

structure as in the previous example.
int main(int argc, char **argv) try { size_t Nproc = 1; if (argc==2) Nproc=atoi(argv[1]); size_t nx = 100; size_t ny = 100; size_t nz = 100; double nu = 1.0/6.0; double dx = 1.0; double dt = 1.0; double Tf = 10000.0; LBM::Domain Dom(D3Q15, nu, iVec3_t(nx,ny,nz), dx, dt); Dom.Lat[0].G = -200.0; for (size_t i=0; i<nx; ++i) for (size_t j=0; j<ny; ++j) for (size_t k=0; k<nz; ++k) { double rho0 = (200.0 +(1.0*rand())/RAND_MAX)*dx*dx; Dom.Lat[0].GetCell(iVec3_t(i,j,k))->Initialize (rho0, OrthoSys::O); } // Solve Dom.Solve(Tf,50.0,NULL,NULL,"bubble",true,Nproc); } MECHSYS_CATCH

As can be seeing the example is considerably shorter and simpler than the previous one. One key difference is that
it is in 3D and the LBM scheme chosen is `D3Q15`

. Another key difference is the
values assigned to the parameter `Dom.Lat[0].G`

of -200. This parameter comes
from the way LBM models multiphase fluids. The implementation follows the description of the LBM text book *Lattice
Boltzmann Modeling An Introduction for Geoscientists Engineers*.

To obtain a cavitation, the fluid density has do be distributed randomly across the domain. In this case a random density between 200 and 201 is distributed in each cell:

for (size_t i=0; i<nx; ++i) for (size_t j=0; j<ny; ++j) for (size_t k=0; k<nz; ++k) { double rho0 = (200.0 +(1.0*rand())/RAND_MAX)*dx*dx; Dom.Lat[0].GetCell(iVec3_t(i,j,k))->Initialize (rho0, OrthoSys::O); }

### Simulation result

The cavitation phenomenon will happen because the density has neither the gas or liquid phase equilibrium value. The fluid then naturally will produce a free surface separating both phases. To visualize the surface, an isovolume filter should be imposed over the density field in the VisIt software. The result should resemble this video.