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

# 3.7. Bond, angle, dihedral, improper styles

Classes that compute molecular interactions are derived from the Bond, Angle, Dihedral, and Improper classes. New styles can be created to add new potentials to LAMMPS.

Bond_harmonic.cpp is the simplest example of a bond style. Ditto for the harmonic forms of the angle, dihedral, and improper style commands.

Here is a brief description of common methods you define in your new derived class. See bond.h, angle.h, dihedral.h, and improper.h for details and specific additional methods.

Required | “pure” methods that must be overridden in a derived class
--- | ---
compute | compute the molecular interactions for all listed items
coeff | set coefficients for one type
equilibrium_distance | length of bond, used by SHAKE (bond styles only)
equilibrium_angle | opening of angle, used by SHAKE (angle styles only)
write & read_restart | writes/reads coeffs to restart files
single | force/r (bond styles only) and energy of a single bond or angle

Optional | methods that have a default or dummy implementation
--- | ---
init | check if all coefficients are set, calls init_style()
init_style | check if style specific conditions are met
settings | apply global settings for all types
write & read_restart_settings | writes/reads global style settings to restart files
write_data | write corresponding Coeffs section(s) in data file
memory_usage | tally memory allocated by the style
extract | provide access to internal data (bond or angle styles only)
reinit | reset all type-based parameters, called by fix adapt (bonds only)
pack & unpack_forward_comm | copy data to and from buffer in forward communication (bonds only)
pack & unpack_reverse_comm | copy data to and from buffer in reverse communication (bonds only)

Here is a list of flags or settings that should be set in the constructor of the derived class when they differ from the default setting.

Name of flag | Description | default
--- | --- | ---
writedata | 1 if write_data() is implemented | 1
single_extra | number of extra single values calculated (bond styles only) | 0
partial_flag | 1 if bond type can be set to 0 and deleted (bond styles only) | 0
reinitflag | 1 if style has reinit() and is compatible with fix adapt | 1
comm_forward | size of buffer (in doubles) for forward communication (bond styles only) | 0
comm_reverse | size of buffer (in doubles) for reverse communication (bond styles only) | 0
comm_reverse_off | size of buffer for reverse communication with newton off (bond styles only) | 0