This article presents LBflow, a flexible, extensible implementation of the lattice Boltzmann method. The code has been developed with geophysical applications in mind, and is designed to be usable by those with no specialist computational fluid dynamics expertise. LBflow provides a 'virtual laboratory' which can be used, rapidly and easily, to obtain accurate flow data for the geometrically complex, three-dimensional flows that abound in geophysical systems. Parameters can be 'steered' by the user at runtime to allow efficient and intuitive exploration of parameter space. LBflow is written in object-oriented C++ and adopts a modular approach. Lattice Boltzmann algorithms for distinct classes of material are encoded in separate modules, which implement a standard interface, and which are linked to LBflow dynamically at runtime. This allows users with programming skill and expertise in the lattice Boltzmann method to create and share new LBflow modules, extending functionality. A companion application, LBview, provides a graphical user interface to LBflow and renders a user-configurable visualization of the output. LBflow's output can be piped directly to LBview allowing realtime visualization of steered flow. LBview also facilitates analysis of the data generated by LBflow. This article presents an overview of the theory of the lattice Boltzmann method and describes the design and operation of LBflow. The companion paper, 'Part II', describes the practical usage of LBflow and presents detailed validation of its accuracy for a variety of flows. © 2009 Elsevier Ltd. All rights reserved.
Mendeley saves you time finding and organizing research
Choose a citation style from the tabs below