compute bond/local command
compute ID group-ID bond/local value1 value2 ...
ID, group-ID are documented in compute command
bond/local = style name of this compute command
one or more values may be appended
value = dist or engpot or force or engvib or engrot or engtrans or omega or velvib
dist = bond distance engpot = bond potential energy force = bond force
engvib = bond kinetic energy of vibration engrot = bond kinetic energy of rotation engtrans = bond kinetic energy of translation omega = magnitude of bond angular velocity velvib = vibrational velocity along the bond length
compute 1 all bond/local engpot compute 1 all bond/local dist engpot force
Define a computation that calculates properties of individual bond interactions. The number of datums generated, aggregated across all processors, equals the number of bonds in the system, modified by the group parameter as explained below.
The value dist is the current length of the bond.
The value engpot is the potential energy for the bond, based on the current separation of the pair of atoms in the bond.
The value force is the magnitude of the force acting between the pair of atoms in the bond.
The remaining properties are all computed for motion of the two atoms relative to the center of mass (COM) velocity of the 2 atoms in the bond.
The value engvib is the vibrational kinetic energy of the two atoms in the bond, which is simply 1/2 m1 v1^2 + 1/2 m2 v2^2, where v1 and v2 are the magnitude of the velocity of the 2 atoms along the bond direction, after the COM velocity has been subtracted from each.
The value engrot is the rotationsl kinetic energy of the two atoms in the bond, which is simply 1/2 m1 v1^2 + 1/2 m2 v2^2, where v1 and v2 are the magnitude of the velocity of the 2 atoms perpendicular to the bond direction, after the COM velocity has been subtracted from each.
The value engtrans is the translational kinetic energy associated with the motion of the COM of the system itself, namely 1/2 (m1+m2) Vcm^2 where Vcm = magnitude of the velocity of the COM.
Note that these 3 kinetic energy terms are simply a partitioning of the summed kinetic energy of the 2 atoms themselves. I.e. total KE = 1/2 m1 v1^2 + 1/2 m2 v2^2 = engvib + engrot + engtrans, where v1,v2 are the magnitude of the velocities of the 2 atoms, without any adjustment for the COM velocity.
The value omega is the magnitude of the angular velocity of the two atoms around their COM position.
The value velvib is the magnitude of the relative velocity of the two atoms in the bond towards each other. A negative value means the 2 atoms are moving toward each other; a positive value means they are moving apart.
Note that all these properties are computed for the pair of atoms in a bond, whether the 2 atoms represent a simple diatomic molecule, or are part of some larger molecule.
The local data stored by this command is generated by looping over all the atoms owned on a processor and their bonds. A bond will only be included if both atoms in the bond are in the specified compute group. Any bonds that have been broken (see the bond_style command) by setting their bond type to 0 are not included. Bonds that have been turned off (see the fix shake or delete_bonds commands) by setting their bond type negative are written into the file, but their energy will be 0.0.
Note that as atoms migrate from processor to processor, there will be no consistent ordering of the entries within the local vector or array from one timestep to the next. The only consistency that is guaranteed is that the ordering on a particular timestep will be the same for local vectors or arrays generated by other compute commands. For example, bond output from the compute property/local command can be combined with data from this command and output by the dump local command in a consistent way.
Here is an example of how to do this:
compute 1 all property/local btype batom1 batom2 compute 2 all bond/local dist engpot dump 1 all local 1000 tmp.dump index c_1[*] c_2[*]
This compute calculates a local vector or local array depending on the number of keywords. The length of the vector or number of rows in the array is the number of bonds. If a single keyword is specified, a local vector is produced. If two or more keywords are specified, a local array is produced where the number of columns = the number of keywords. The vector or array can be accessed by any command that uses local values from a compute as input. See this section for an overview of LAMMPS output options.
The output for dist will be in distance units. The output for velvib will be in velocity units. The output for omega will be in velocity/distance units. The output for engtrans, engvib, engrot, and engpot will be in energy units. The output for force will be in force units.