UK Consortium on Mesoscale Engineering Sciences


WP A - Core Code Development, Optimisation & Maintenance

Lead: Michael Seaton

This work package is involved with developing efficient and highly scalable code for a variety of hardware platforms to perform mesoscale modelling, primarily using the Lattice Boltzmann (LB) method, for science and engineering problems.

The LB code contained in the general-purpose mesoscopic simulation package DL_MESO (as originally developed for CCP5) is seen as the main production code for UKCOMES and designed to work on CPU-based systems with MPI. Development work on this code is under way to incorporate new functionalities required for other work packages and to disseminate them across the LB community in the UK and further afield.

Complementing DL_MESO, two codes developed at the Centre for Computational Science at UCL are currently maintained by the consortium- HemeLB and LB3D. Optimised for the sparse geometries of blood vessel networks, HemeLB is developed with assured accuracy and user friendliness in mind. The long term vision for HemeLB includes its use in clinical practice. LB3D is a feature rich MPI parallel FORTRAN code for the simulation of complex fluids. While the functionality of LB3D has some overlap with DL_MESO, its user base and functionality justify parallel development. Here efforts are coordinated to create synergies rather than redundancies.

Optimisation and maintenance of the LB code in DL_MESO are essential to ensure it can continue to run on high-end computing platforms as required for solving challenging scientific and engineering problems at the mesoscale. Multithreading with OpenMP, algorithmic and compile-time improvements are being implemented to improve the code's efficiency and parallel scalability. Further optimisations for running on coprocessor (e.g. Intel Xeon Phi) and GPU-based systems using programming platforms such as CUDA are also being considered, guided by recent developments within work package participants' own research codes, to exploit the increases in performance available from such architectures. Code maintenance is dependent on the needs of users: beyond functionality development and optimisation, this includes increasing the numbers of users, improving ease-of-use and providing user support and training.