@Article{CiCP-13-867, author = {Stuart D. C. Walsh and Martin O. Saar}, title = {Developing Extensible Lattice-Boltzmann Simulators for General-Purpose Graphics-Processing Units}, journal = {Communications in Computational Physics}, year = {2013}, volume = {13}, number = {3}, pages = {867--879}, abstract = {
Lattice-Boltzmann methods are versatile numerical modeling techniques capable of reproducing a wide variety of fluid-mechanical behavior. These methods are
well suited to parallel implementation, particularly on the single-instruction multiple
data (SIMD) parallel processing environments found in computer graphics processing
units (GPUs).
Although recent programming tools dramatically improve the ease with which GPU-based applications can be written, the programming environment still lacks the flexibility available to more traditional CPU programs. In particular, it may be difficult to
develop modular and extensible programs that require variable on-device functionality with current GPU architectures.
This paper describes a process of automatic code generation that overcomes these difficulties for lattice-Boltzmann simulations. It details the development of GPU-based
modules for an extensible lattice-Boltzmann simulation package – LBHydra. The performance of the automatically generated code is compared to equivalent purpose written codes for both single-phase, multiphase, and multicomponent flows. The flexibility
of the new method is demonstrated by simulating a rising, dissolving droplet moving
through a porous medium with user generated lattice-Boltzmann models and subroutines.