LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands

### compute rdf command

Syntax:

    compute ID group-ID rdf Nbin itype1 jtype1 itype2 jtype2 ...

- ID, group-ID are documented in compute command
- rdf = style name of this compute command
- Nbin = number of RDF bins
- itypeN = central atom type for Nth RDF histogram (see asterisk form below)
- jtypeN = distribution atom type for Nth RDF histogram (see asterisk form below)

Examples:

    compute 1 all rdf 100
    compute 1 all rdf 100 1 1
    compute 1 all rdf 100 * 3
    compute 1 fluid rdf 500 1 1 1 2 2 1 2 2
    compute 1 fluid rdf 500 1*3 2 5 *10

Description:

Define a computation that calculates the radial distribution function (RDF), also called g(r), and the coordination number for a group of particles. Both are calculated in histogram form by binning pairwise distances into Nbin bins from 0.0 to the maximum force cutoff defined by the pair_style command. The bins are of uniform size in radial distance. Thus a single bin encompasses a thin shell of distances in 3d and a thin ring of distances in 2d.

The itypeN and jtypeN arguments are optional. These arguments must come in pairs. If no pairs are listed, then a single histogram is computed for g(r) between all atom types. If one or more pairs are listed, then a separate histogram is generated for each itype,jtype pair.

The itypeN and jtypeN settings can be specified in one of two ways. An explicit numeric value can be used, as in the 4th example above. Or a wild-card asterisk can be used to specify a range of atom types. This takes the form "*" or "*n" or "n*" or "m*n". If N = the number of atom types, then an asterisk with no numeric values means all types from 1 to N. A leading asterisk means all types from 1 to n (inclusive). A trailing asterisk means all types from n to N (inclusive). A middle asterisk means all types from m to n (inclusive).

If both itypeN and jtypeN are single values, as in the 4th example above, this means that a g(r) is computed where atoms of type itypeN are the central atom, and atoms of type jtypeN are the distribution atom. If either itypeN and jtypeN represent a range of values via the wild-card asterisk, as in the 5th example above, this means that a g(r) is computed where atoms of any of the range of types represented by itypeN are the central atom, and atoms of any of the range of types represented by jtypeN are the distribution atom.

Pairwise distances are generated by looping over a pairwise neighbor list, just as they would be in a pair_style computation. The distance between two atoms I and J is included in a specific histogram if the following criteria are met:

- atoms I,J are both in the specified compute group
- the distance between atoms I,J is less than the maximum force cutoff
- the type of the I atom matches itypeN (one or a range of types)
- the type of the J atom matches jtypeN (one or a range of types)
- the I,J interaction is included in the neighbor list

IMPORTANT NOTE: The last point is relevant for molecular systems with bonds, because if two atoms I,J are involved in 1-2, 1-3, 1-4 interactions within the molecular topology, their pairwise interaction may be turned off, and thus they will not appear in the neighbor list, and will not contribute to g(r). More specifically, this is 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.

It is OK if a particular pairwise distance is included in more than one individual histogram, due to the way the itypeN and jtypeN arguments are specified.

The g(r) value for a bin is calculated from the histogram count by scaling it by the idealized number of how many counts there would be if atoms of type jtypeN were uniformly distributed. Thus it involves the count of itypeN atoms, the count of jtypeN atoms, the volume of the entire simulation box, and the volume of the bin's thin shell in 3d (or the area of the bin's thin ring in 2d).

A coordination number coord(r) is also calculated, which is the sum of g(r) values for all bins up to and including the current bin.

Output info:

This compute calculates a global array with the number of rows = Nbins, and the number of columns = 1 + 2*Npairs, where Npairs is the number of I,J pairings specified. The first column has the bin coordinate (center of the bin), Each successive set of 2 columns has the g(r) and coord(r) values for a specific set of itypeN versus jtypeN interactions, as described above. These values can be used by any command that uses a global values from a compute as input. See this section for an overview of LAMMPS output options.

The array values calculated by this compute are all "intensive".

The first column of array values will be in distance units. The g(r) columns of array values are normalized numbers >= 0.0. The coordination number columns of array values are also numbers >= 0.0.

Restrictions:

The RDF is not computed for distances longer than the force cutoff, since processors (in parallel) don't know about atom coordinates for atoms further away than that distance. If you want an RDF for larger distances, you'll need to post-process a dump file.

Related commands:

fix ave/histo

Default: none