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

# compute pair/local command

## Syntax

```
compute ID group-ID pair/local value1 value2 ... keyword args ...
```

ID, group-ID are documented in compute command

pair/local = style name of this compute command

one or more values may be appended

value =

*dist*or*dx*or*dy*or*dz*or*eng*or*force*or*fx*or*fy*or*fz*or*p1*or*p2*or …*dist*= pairwise distance*dx*,*dy*,*dz*= components of pairwise distance*eng*= pairwise energy*force*= pairwise force*fx*,*fy*,*fz*= components of pairwise force*p1*,*p2*, ... = pair style specific quantities for allowed N valueszero or more keyword/arg pairs may be appended

keyword =

*cutoff**cutoff*arg =*type*or*radius*

## Examples

```
compute 1 all pair/local eng
compute 1 all pair/local dist eng force
compute 1 all pair/local dist eng fx fy fz
compute 1 all pair/local dist fx fy fz p1 p2 p3
```

## Description

Define a computation that calculates properties of individual pairwise interactions. The number of datums generated, aggregated across all processors, equals the number of pairwise interactions in the system.

The local data stored by this command is generated by looping over the pairwise neighbor list. Info about an individual pairwise interaction will only be included if both atoms in the pair are in the specified compute group, and if the current pairwise distance is less than the force cutoff distance for that interaction, as defined by the pair_style and pair_coeff commands.

The value *dist* is the distance between the pair of atoms.
The values *dx*, *dy*, and *dz* are the \((x,y,z)\) components of the
*distance* between the pair of atoms. This value is always the
distance from the atom of higher to the one with the lower atom ID.

The value *eng* is the interaction energy for the pair of atoms.

The value *force* is the force acting between the pair of atoms, which
is positive for a repulsive force and negative for an attractive
force. The values *fx*, *fy*, and *fz* are the \((x,y,z)\) components of
*force* on atom I. For pair styles that apply non-central forces,
such as granular pair styles, these values only include
the \((x,y,z)\) components of the normal force component.

A pair style may define additional pairwise quantities which can be
accessed as *p1* to *pN*, where \(N\) is defined by the pair style.
Most pair styles do not define any additional quantities, so \(N = 0\).
An example of ones that do are the granular pair styles
which calculate the tangential force between two particles and return
its components and magnitude acting on atom \(I\) for
\(N \in \{1,2,3,4\}\). See individual pair styles for details.

When using *pN* with pair style *hybrid*, the output will be the Nth
quantity from the sub-style that computes the pairwise interaction
(based on atom types). If that sub-style does not define a *pN*,
the output will be 0.0. The maximum allowed \(N\) is the maximum number
of quantities provided by any sub-style.

When using *pN* with pair style *hybrid/overlay* the quantities
from all sub-styles that provide them are concatenated together
into one long list. For example, if there are 3 sub-styles and
2 of them have additional output (with 3 and 4 quantities,
respectively), then 7 values (*p1* up to *p7*) are defined.
The values *p1* to *p3* refer to quantities defined by the first
of the two sub-styles. Values *p4* to *p7* refer to quantities
from the second of the two sub-styles. If the referenced *pN*
is not computed for the specific pairwise interaction (based on
atom types), then the output will be 0.0.

The value *dist*, *dx*, *dy* and *dz* will be in distance units.
The value *eng* will be in energy units.
The values *force*, *fx*, *fy*, and *fz* will be in force units.
The values *pN* will be in whatever units the pair style defines.

The optional *cutoff* keyword determines how the force cutoff distance
for an interaction is determined. For the default setting of *type*,
the pairwise cutoff defined by the pair_style
command for the types of the two atoms is used. For the *radius*
setting, the sum of the radii of the two particles is used as a
cutoff. For example, this is appropriate for granular particles which
only interact when they are overlapping, as computed by
granular pair styles.
Note that if a granular model defines atom
types such that all particles of a specific type are monodisperse
(same diameter), then the two settings are effectively identical.

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, pair 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 patom1 patom2
compute 2 all pair/local dist eng force
dump 1 all local 1000 tmp.dump index c_1[1] c_1[2] c_2[1] c_2[2] c_2[3]
```

Note

For pairs, if two atoms I,J are involved in 1–2, 1–3, and 1–4 interactions within the molecular topology, their pairwise interaction may be turned off, and thus they may not appear in the neighbor list, and will not be part of the local data created by this command. More specifically, this will be true of I,J pairs with a weighting factor of 0.0; pairs with a non-zero weighting factor are included. The weighting factors for 1–2, 1–3, and 1–4 pairwise interactions are set by the special_bonds command. An exception is if long-range Coulombics are being computed via the kspace_style command, then atom pairs with weighting factors of zero are still included in the neighbor list, so that a portion of the long-range interaction contribution can be computed in the pair style. Hence in that case, those atom pairs will be part of the local data created by this command.

## Output info

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 pairs. 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 the Howto output page for an overview of LAMMPS output options.

The output for *dist* will be in distance units. The
output for *eng* will be in energy units. The output for
*force*, *fx*, *fy*, and *fz* will be in force units.
The output for *pN* will be in whatever units the pair style defines.

## Restrictions

none

## Default

The keyword default is cutoff = type.