"LIGGGHTS(R)-PUBLIC WWW Site"_liws - "LIGGGHTS(R)-PUBLIC Documentation"_ld - "LIGGGHTS(R)-PUBLIC Commands"_lc :c

:link(liws,http://www.cfdem.com)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)

:line

compute coord/atom command :h3

[Syntax:]

compute ID group-ID coord/atom general_keyword general_values cutoff keyword value :pre

ID, group-ID are documented in "compute"_compute.html command :ulb,l
coord/atom = style name of this compute command :l
general_keywords general_values are documented in "compute"_compute.html" :l
cutoff = distance within which to count coordination neighbors (distance units) :l
zero or more keyword/value pairs may be appended to args :l
keyword = {mix} or {type1}, {type2}, ...  :l
  {mix} value = yes or no
    no = count all neighbors
    yes = count only neighbors that have different atom types  :pre
  {typeN} = atom type for Nth coordination count (see asterisk form below)  :pre
:ule

[Examples:]

compute 1 all coord/atom 0.003 mix yes
compute 1 all coord/atom 2.0
compute 1 all coord/atom 6.0 1 2
compute 1 all coord/atom 6.0 2*4 5*8 * :pre

[Description:]

Define a computation that calculates one or more coordination numbers
for each atom in a group.

A coordination number is defined as the number of neighbor atoms with
specified atom type(s) that are within the specified cutoff distance
from the central atom.  Atoms not in the group are included in a
coordination number of atoms in the group.

This compute is one of the three different ways to compute a coordination
number. The following table gives an overview over the different options:

[style] | [contact counted condition] | [formula]
"compute contact/atom"_compute_contact_atom.html | particles touch each other | {r} < {r_i} + {r_j}
"compute contact/atom/gran"_compute_contact_atom.html | particles interact with each other | {f_ij} > 0
"compute coord/atom"_compute_coord_atom.html | particles are in the vicinity of each other | {r} < {cutoff} :tb(s=|)

The {typeN} keywords allow you to specify which atom types contribute
to each coordination number.  One coordination number is computed for
each of the {typeN} keywords listed.  If no {typeN} keywords are
listed, a single coordination number is calculated, which includes
atoms of all types (same as the "*" format, see below).

The {typeN} keywords can be specified in one of two ways.  An explicit
numeric value can be used, as in the 2nd 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).

The value of all coordination numbers will be 0.0 for atoms not in the
specified compute group.

The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped).  Thus it can be inefficient to compute/dump this quantity
too frequently.

Keyword {mix} controls if all neighbors are counted or if only neighbors
with different atom types are counted. The latter can be useful to quantify
mixture of different species.

IMPORTANT NOTE: If you have a bonded system, then the settings of
"special_bonds"_special_bonds.html command can remove pairwise
interactions between atoms in the same bond.  This
is the default setting for the "special_bonds"_special_bonds.html
command, and means those pairwise interactions do not appear in the
neighbor list.  Because this fix uses the neighbor list, it also means
those pairs will not be included in the coordination count.  One way
to get around this, is to write a dump file, and use the
"rerun"_rerun.html command to compute the coordination for snapshots
in the dump file.  The rerun script can use a
"special_bonds"_special_bonds.html command that includes all pairs in
the neighbor list.

[Output info:]

If single {type1} keyword is specified (or if none are specified),
or the {mix} keyword is used,
this compute calculates a per-atom vector.  If multiple {typeN}
keywords are specified, this compute calculates a per-atom array, with
N columns.  These values can be accessed by any command that uses
per-atom values from a compute as input.  See "Section_howto
15"_Section_howto.html#howto_8 for an overview of LIGGGHTS(R)-PUBLIC output
options.

The per-atom vector or array values will be a number >= 0.0, as
explained above.

[Restrictions:] none

[Related commands:]

"compute cluster/atom"_compute_cluster_atom.html

[Default:] mix = no
