SunlightLB is implemented as a library of C functions. Scripting
language support is enabled by a SWIG
interface file, which allows, for
example, SunlightLB to be used as a perl extension module. Examples
of the use of SunlightLB are provided in both C, perl, and python.
SunlightLB implements a standard lattice Boltzmann algorithm for three
dimensional simulations. It uses a D3Q19 lattice with a twin
relaxation time scheme [1-3]. Objects, possibly moving, are included
by a link bounce-back method . This enables SunlightLB to solve a
variety of hydrodynamics problems such as the computation of flows
through pore spaces, the computation of resistance matrices for
colloidal hydrodynamics problems, and so on. Both zero Reynolds number
flows, and non-zero Reynolds number flows, can be solved. In
addition, passive scalar transport is implemented on top of the
lattice Boltzmann scheme via a tagged-particle propagation algorithm,
with a variety of boundary conditions [4, 5]. This allows simulation
of a variety of reaction-advection-diffusion problems, such as a
passive scalar adsorbing in a porous material in the presence of a
flow (deep-bed filtration).
The algorithms underlying SunlightLB are published in the following literature (see  for a condensed summary of the algorithms) :
 Qian, d'Humieres and Lallemand, Europhys. Lett. 17, 479
 Ladd, J. Fluid Mech. 271, 285 (1994).
 Behrend, Harris and Warren, Phys. Rev. E 50, 4586 (1994).
 Lowe and Frenkel, Physica A 220, 251 (1995).
 Warren, Int. J. Mod. Phys. C 8, 889 (1997).