\(\renewcommand{\AA}{\text{Å}}\)

# 4. Information for Developers

This section describes the internal structure and basic algorithms of the LAMMPS code. This is a work in progress and additional information will be added incrementally depending on availability of time and requests from the LAMMPS user community.

A discussion of software engineering methods applied to LAMMPS over time and a general outline of the design and maintenance approach by the LAMMPS developers can be found in the paper LAMMPS: A Case Study For Applying Modern Software Engineering to an Established Research Software Package, <https://doi.org/10.5281/zenodo.17117558> in USRSE’25 conference proceedings.

- 4.1. Source files
- 4.2. Class topology
- 4.3. Code design
- 4.4. Parallel algorithms
- 4.5. Accessing per-atom data
- 4.6. Communication patterns
- 4.7. How a timestep works
- 4.8. Writing new styles
- 4.9. Notes for developers and code maintainers
- 4.10. Notes for updating code written for older LAMMPS versions
- 4.11. Writing plugins
- 4.12. Adding tests for unit testing
- 4.13. C++ base classes
- 4.14. Platform abstraction functions
- 4.15. Utility functions
- 4.16. Special Math functions
- 4.17. Tokenizer classes
- 4.18. Argument parsing classes
- 4.19. File reader classes
- 4.20. Type label support
- 4.21. Memory pool classes
- 4.22. Eigensolver functions
- 4.23. Communication buffer coding with ubuf
- 4.24. Internal Styles
- 4.25. Use of distributed grids within style classes