Papers
Topics
Authors
Recent
Search
2000 character limit reached

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

Published 11 May 2025 in cs.SE and physics.comp-ph | (2505.06877v1)

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.

Summary

Application of Modern Software Engineering in LAMMPS

The paper "LAMMPS: A Case Study For Applying Modern Software Engineering to an Established Research Software Package" by Axel Kohlmeyer and Richard Berger presents an in-depth examination of the evolution and modernization of the LAMMPS simulation software package, a pivotal tool in molecular dynamics with over 30 years of development history. With contributions from numerous developers worldwide, LAMMPS exemplifies the challenges and strategies in maintaining and upgrading large-scale scientific software over extended periods.

Development History and Refactoring

Initially developed under a cooperative research agreement using Fortran, LAMMPS transitioned to C++ in 2004 to leverage object-oriented features like polymorphism, facilitating modular expansion through optional "packages". However, limitations in C++ implementations at the time restricted the code style to "C with Classes". Over time, hardware advancements, programming language improvements, and modern code practices necessitated extensive refactoring. This involved adopting modern C++ features such as exceptions, standard library components (e.g., std::string, std::vector), and external libraries like {fmt} for formatting, thereby enhancing code safety and readability.

Key refactoring efforts included transitioning to accessor functions for better encapsulation, organizing utility functions into namespaces for consistency, and utilizing class-based tokenization and file reading for simplified, robust data handling. Direct memory management optimizations were retained for large simulations, balancing performance and memory efficiency.

Source Code Management and Collaborative Development

The shift from Subversion to GitHub marked a crucial transition in LAMMPS' development, enabling a distributed, transparent, and scalable process that accommodated heightened contributions. The "develop", "maintenance", "release", and "stable" branches were established to manage feature introductions, bug fixes, and stable releases systematically. This setup, coupled with GitHub's pull request system, facilitated peer review and automated testing, distributing the workload across the development team while maintaining code integrity.

Automated Testing

The integration of automated testing was a significant advancement, featuring extensive unit tests with GoogleTest, regression tests using existing examples, and static code analysis tools like Coverity Scan and CodeQL. These mechanisms helped identify issues early in development, ensuring that contributions were correctly integrated without introducing regressions or platform-specific compilation errors. Improvements in error message quality and standardization of programming style further contributed to the overall reliability and usability of LAMMPS.

Build System and Accessibility

Initially reliant on a traditional GNU Make system, LAMMPS incorporated a CMake-based build process, greatly enhancing system compatibility and simplifying binary distribution. This change facilitated the creation of pre-compiled binaries for platforms such as Windows, Linux, and macOS, addressing the needs of users with minimal programming expertise. The gradual phasing out of the legacy build system is forecasted, with CMake providing a more modular and user-friendly framework for future developments.

GUI Development and Documentation Improvements

The introduction of LAMMPS-GUI represents a significant shift towards accessibility for non-programmer users, providing a user-friendly interface to facilitate input preparation, simulation execution, and result visualization. This development was closely tied with LAMMPS' refactoring efforts, leveraging the improved introspection capabilities of the library interfaces.

Documentation enhancements included transitioning to reStructuredText with Sphinx for better management and integration of code comments and docstrings, enriching the documentation's accessibility and informativeness. The "Programmer's Guide" section serves as a vital resource for developers, detailing design conventions and extension methodologies, thus encouraging contributions from a broader audience.

Implications and Prospective Development

The efforts chronicled in the paper highlight the importance of continuous adaptation in sustaining software relevance and usability amid evolving technological landscapes. The changes not only enhance LAMMPS' functionality and performance but also broaden its user base, facilitating entry for researchers with varying levels of programming expertise.

Looking forward, the emphasis remains on code modernization, expanding testing suites, fortifying the development team's expertise, and refining documentation to support future contributors and users alike. These endeavors are instrumental in ensuring LAMMPS remains a robust, versatile tool in the molecular dynamics community.

Paper to Video (Beta)

No one has generated a video about this paper yet.

Whiteboard

No one has generated a whiteboard explanation for this paper yet.

Open Problems

We haven't generated a list of open problems mentioned in this paper yet.

Continue Learning

We haven't generated follow-up questions for this paper yet.

Authors (2)

Collections

Sign up for free to add this paper to one or more collections.