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 noSetup
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.