Table of Contents
Fetching ...

LAMMPS: A Case Study For Applying Modern Software Engineering to an Established Research Software Package

Axel Kohlmeyer, Richard Berger

TL;DR

The paper analyzes how applying modern software engineering practices to the established LAMMPS molecular dynamics package has improved maintainability, code quality, and collaboration across a 30-year development history. It documents a shift from Fortran origins to a C++-based architecture, a GitHub-driven collaboration model, and extensive automated testing, static analysis, and documentation evolution. Core contributions include a plugin system, a CMake-driven build, modern C++ interfaces (Python, Fortran, C), and the LAMMPS GUI, all enabling broader participation by researchers with limited software training. The work demonstrates that disciplined development workflows, comprehensive testing, and accessible interfaces are essential to sustain a long-lived scientific software project amid evolving hardware, user needs, and contributor communities.

Abstract

We review various changes made in recent years to the software development process of the LAMMPS simulation software package and the software itself. We discuss how those changes have impacted the effort and workflow required to develop and maintain a software package that has been in existence for more than 30 years and where a significant part of the code base is contributed by external developers. We also look into how those changes have affected the code quality and ease of modifying and extending the software while at the same time its audience has changed from a cohort with a generally strong software development background to a group containing many researchers with limited software development skills. We explore how this contributes to LAMMPS' significant growth in popularity in that time. We close with an outlook on future steps.

LAMMPS: A Case Study For Applying Modern Software Engineering to an Established Research Software Package

TL;DR

The paper analyzes how applying modern software engineering practices to the established LAMMPS molecular dynamics package has improved maintainability, code quality, and collaboration across a 30-year development history. It documents a shift from Fortran origins to a C++-based architecture, a GitHub-driven collaboration model, and extensive automated testing, static analysis, and documentation evolution. Core contributions include a plugin system, a CMake-driven build, modern C++ interfaces (Python, Fortran, C), and the LAMMPS GUI, all enabling broader participation by researchers with limited software training. The work demonstrates that disciplined development workflows, comprehensive testing, and accessible interfaces are essential to sustain a long-lived scientific software project amid evolving hardware, user needs, and contributor communities.

Abstract

We review various changes made in recent years to the software development process of the LAMMPS simulation software package and the software itself. We discuss how those changes have impacted the effort and workflow required to develop and maintain a software package that has been in existence for more than 30 years and where a significant part of the code base is contributed by external developers. We also look into how those changes have affected the code quality and ease of modifying and extending the software while at the same time its audience has changed from a cohort with a generally strong software development background to a group containing many researchers with limited software development skills. We explore how this contributes to LAMMPS' significant growth in popularity in that time. We close with an outlook on future steps.
Paper Structure (42 sections, 5 figures)

This paper contains 42 sections, 5 figures.

Figures (5)

  • Figure 1: Citations google_scholar of the LAMMPS overview articles over time as of May 2025, and some milestones in LAMMPS' history
  • Figure 2: Flowchart showing the relationships between the main branches in the LAMMPS git repository and the conventions for applying release tags
  • Figure 3: Graph showing git commits per quarter (excluding merge commits) to the main LAMMPS branch and some overall git related statistics
  • Figure 4: Graph of defects reported by Coverity Scan as of May 2025
  • Figure 5: Screenshot of LAMMPS-GUI while running a simulation