Nonequilibrium entropy limiters for lattice Boltzmann methods (LBMs) are a novel technique for the stabilisation of LBMs. This innovation was pioneered and championed by R. A. Brownlee, A. N. Gorban and J. Levesley in the series of papers:
The code used to test the concept of nonequilibrium entropy limiters in the above papers is available for download: LimB.zip
During the first 6 months of 2009, the code was extensively revisited, overhauled and improved by the code's author (R. A. Brownlee) and subsequently given the code name LimB. Perhaps considered a naive implementation by some, LimB will be of interest to those concerned with the development of nonequilibrium entropy limiters for LBMs as well as to newcomers who are developing their first LBM code. LimB is free software, but only made available under the proviso that appropriate acknowledgement is provided. Limited discretionary support is available by contacting the author. Freely distributable movies and figures produced using LimB are also available (see below).
LimB is written in Fortran 90 and its features are summarised in the following list:
The code has the following modular structure:
LimB.f90 [main loop];
LimBparam.f90 [parameter and variable declarations];
LimBinout.f90 [collection of subroutines used to initialise LimB and control output];
LimBprobs.f90 [subroutines used to initialise LimB for various problems];
LimBsubs.f90 [various fundamental subroutines used in the LimB code (including propagate, collide, evolve)];
LimBbcs.f90 [subroutines used in setting up boundary buffer for various conditions];
LimBneq.f90 [subroutines for computing nonequilibrium entropy];
LimBlims.f90 [subroutines for nonequilibrium entropy limiters];
The main loop is contained within the file LimB.f90 and the code is executed by submitting a parameter file LimBprob.par with the following structure:
LimBprob [1=Taylor Green; 2=Poiseuille flow; 3=Couette flow; 4=Lid driven cavity, 5=Double driven cavity, 6=2D shock tube, 7=Square Cylinder, 8=BFS, 9=FFS];k1 [problem parameter (for LimBprob=1: wave number in x-direction; LimBprob=2: NA; LimBprob=3: NA; LimBprob=4/5: 0/1 constant/Leriche's poly profile; LimBprob=6: Density ratio of big to small region; LimBprob=7: 0/1 constant/parabolic inlet profile; LimBprob=8/9: Step height)];k2 [problem parameter (for LimBprob=1: wave number in y-direction; LimBprob=2: NA; LimBprob=3: NA; LimBprob=4/5: paramter in Leriche's poly profile); LimBprob=6: Fluid configuration parameter; LimBprob=7: NA; LimBprob=8/9: Step length)];BCflag [boundary condition flag (for LimBprob=0: NA; LimBprob=1: NA; LimBprob=2: 0=Periodic+BB,1=Periodic+Diff; LimBprob=3: NA; LimBprob=4/5: 0=Constant lid+BB,1=Diff; LimBprob=6: 0=BB,1=Diff; LimBprob=7: 0=BB,1=Diff feeslip; LimBprob=8: 0=BB,1=Diff)];nx [number of lattice sites in x-direction];ny [number of lattice sites in y-direction];Re [Reynolds number];rho0 [initial problem density];u_f [charactistic problem velocity];obj [flag for precence of rectangular object];cox [x-coordinate of lower-left corner of object];coy [y-coordinate of lower-left corner of object];ox [charactistic length of object in x-direction];oy [charactistic length of object in y-direction];oBCtype [flag for BC on object];tend [run simulation for tend dimensionless time units];eqflag [equilibrium flag (0 for entropy maximisers, 1 for polynomial equilbria)];limflag [limiter flag (0: no limiter; 1: Ehrenfests' (k,delta); 2: Median limiter; 2: Median limiter (k,delta))];limpar1 [k parameter in limiter];limpar2 [delta parameter in limiter];DSflag [nonequilibrium entropy type (0=based on perfect entropy; 1=Kullback entropy)];nframes [number of frames];ndiag [diagnostic info rate];outsig [not yet implimented: output signal flag];sigtype [not yet implimented: sigtype=0 means U is recorded; sigtype=1 means V is recorded];sx1 [not yet implimented: x-coord of signal point 1];sy1 [not yet implimented: y-coord of signal point 1];sx2 [not yet implimented: x-coord of signal point 2];sy2 [not yet implimented: y-coord of signal point 2];sx3 [not yet implimented: x-coord of signal point 3];sy3 [not yet implimented: y-coord of signal point 3];LimBrestart [restart code (by reloading f)];Unless otherwise stated, the following applies to all of the 2d square cylinder simulations below:
Square cylinder simulations:
The following applies to all of the lid-driven cavity simulations below:
Lid-driven cavity simulations: