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

# 3. Modifying & extending LAMMPS

LAMMPS has a modular design, so that it is easy to modify or extend with new functionality. In fact, about 95% of its source code is optional. The following pages give basic instructions on adding new features to LAMMPS. More in-depth explanations and documentation of individual functions and classes are given in Information for Developers.

If you add a new feature to LAMMPS and think it will be of general interest to other users, we encourage you to submit it for inclusion in LAMMPS. This process is explained in the following three pages:

- how to prepare and submit your code

- requirements for submissions

- style guidelines

A summary description of various types of styles in LAMMPS follows. A discussion of implementing specific styles from scratch is given in writing new styles.

- 3.1. Overview
- 3.2. Submitting new features for inclusion in LAMMPS
- 3.3. Requirements for contributions to LAMMPS
- 3.4. LAMMPS programming style

- 3.5. Atom styles
- 3.6. Pair styles
- 3.7. Bond, angle, dihedral, improper styles
- 3.8. Compute styles
- 3.9. Fix styles
- 3.10. Input script command style
- 3.11. Dump styles
- 3.12. Kspace styles
- 3.13. Minimization styles
- 3.14. Region styles
- 3.15. Body styles
- 3.16. Granular Sub-Model styles
- 3.17. Thermodynamic output options
- 3.18. Variable options