"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c

:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)

:line

compute command :h3

[Syntax:]

compute ID group-ID style args :pre

ID = user-assigned name for the computation
group-ID = ID of the group of atoms to perform the computation on
style = one of a list of possible style names (see below)
args = arguments used by a particular style :ul

[Examples:]

compute 1 all temp
compute newtemp flow temp/partial 1 1 0
compute 3 all ke/atom :pre

[Description:]

Define a computation that will be performed on a group of atoms.
Quantities calculated by a compute are instantaneous values, meaning
they are calculated from information about atoms on the current
timestep or iteration, though a compute may internally store some
information about a previous state of the system.  Defining a compute
does not perform a computation.  Instead computes are invoked by other
LAMMPS commands as needed, e.g. to calculate a temperature needed for
a thermostat fix or to generate thermodynamic or dump file output.
See this "howto section"_Section_howto.html#howto_15 for a summary of
various LAMMPS output options, many of which involve computes.

The ID of a compute can only contain alphanumeric characters and
underscores.

:line

Computes calculate one of three styles of quantities: global,
per-atom, or local.  A global quantity is one or more system-wide
values, e.g. the temperature of the system.  A per-atom quantity is
one or more values per atom, e.g. the kinetic energy of each atom.
Per-atom values are set to 0.0 for atoms not in the specified compute
group.  Local quantities are calculated by each processor based on the
atoms it owns, but there may be zero or more per atom, e.g. a list of
bond distances.  Computes that produce per-atom quantities have the
word "atom" in their style, e.g. {ke/atom}.  Computes that produce
local quantities have the word "local" in their style,
e.g. {bond/local}.  Styles with neither "atom" or "local" in their
style produce global quantities.

Note that a single compute produces either global or per-atom or local
quantities, but never more than one of these.

Global, per-atom, and local quantities each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values.  The
doc page for each compute describes the style and kind of values it
produces, e.g. a per-atom vector.  Some computes produce more than one
kind of a single style, e.g. a global scalar and a global vector.

When a compute quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID is the ID of the compute:

c_ID | entire scalar, vector, or array
c_ID\[I\] | one element of vector, one column of array
c_ID\[I\]\[J\] | one element of array :tb(s=|)

In other words, using one bracket reduces the dimension of the
quantity once (vector -> scalar, array -> vector).  Using two brackets
reduces the dimension twice (array -> scalar).  Thus a command that
uses scalar compute values as input can also process elements of a
vector or array.

Note that commands and "variables"_variable.html which use compute
quantities typically do not allow for all kinds, e.g. a command may
require a vector of values, not a scalar.  This means there is no
ambiguity about referring to a compute quantity as c_ID even if it
produces, for example, both a scalar and vector.  The doc pages for
various commands explain the details.

:line

In LAMMPS, the values generated by a compute can be used in several
ways:

The results of computes that calculate a global temperature or
pressure can be used by fixes that do thermostatting or barostatting
or when atom velocities are created. :ulb,l

Global values can be output via the "thermo_style
custom"_thermo_style.html or "fix ave/time"_fix_ave_time.html command.
Or the values can be referenced in a "variable equal"_variable.html or
"variable atom"_variable.html command. :l

Per-atom values can be output via the "dump custom"_dump.html command
or the "fix ave/spatial"_fix_ave_spatial.html command.  Or they can be
time-averaged via the "fix ave/atom"_fix_ave_atom.html command or
reduced by the "compute reduce"_compute_reduce.html command.  Or the
per-atom values can be referenced in an "atom-style
variable"_variable.html. :l

Local values can be reduced by the "compute
reduce"_compute_reduce.html command, or histogrammed by the "fix
ave/histo"_fix_ave_histo.html command, or output by the "dump
local"_dump.html command. :l,ule

The results of computes that calculate global quantities can be either
"intensive" or "extensive" values.  Intensive means the value is
independent of the number of atoms in the simulation,
e.g. temperature.  Extensive means the value scales with the number of
atoms in the simulation, e.g. total rotational kinetic energy.
"Thermodynamic output"_thermo_style.html will normalize extensive
values by the number of atoms in the system, depending on the
"thermo_modify norm" setting.  It will not normalize intensive values.
If a compute value is accessed in another way, e.g. by a
"variable"_variable.html, you may want to know whether it is an
intensive or extensive value.  See the doc page for individual
computes for further info.

:line

LAMMPS creates its own computes internally for thermodynamic output.
Three computes are always created, named "thermo_temp",
"thermo_press", and "thermo_pe", as if these commands had been invoked
in the input script:

compute thermo_temp all temp
compute thermo_press all pressure thermo_temp
compute thermo_pe all pe :pre

Additional computes for other quantities are created if the thermo
style requires it.  See the documentation for the
"thermo_style"_thermo_style.html command.

Fixes that calculate temperature or pressure, i.e. for thermostatting
or barostatting, may also create computes.  These are discussed in the
documentation for specific "fix"_fix.html commands.

In all these cases, the default computes LAMMPS creates can be
replaced by computes defined by the user in the input script, as
described by the "thermo_modify"_thermo_modify.html and "fix
modify"_fix_modify.html commands.

Properties of either a default or user-defined compute can be modified
via the "compute_modify"_compute_modify.html command.

Computes can be deleted with the "uncompute"_uncompute.html command.

Code for new computes can be added to LAMMPS (see "this
section"_Section_modify.html of the manual) and the results of their
calculations accessed in the various ways described above.

:line

Each compute style has its own doc page which describes its arguments
and what it does.  Here is an alphabetic list of compute styles
available in LAMMPS:

"angle/local"_compute_bond_local.html - theta and energy of each angle
"atom/molecule"_compute_atom_molecule.html - sum per-atom properties for each molecule
"body/local"_compute_body_local.html - attributes of body sub-particles
"bond/local"_compute_bond_local.html - distance and energy of each bond
"centro/atom"_compute_centro_atom.html - centro-symmetry parameter for each atom
"cluster/atom"_compute_cluster_atom.html - cluster ID for each atom
"cna/atom"_compute_cna_atom.html - common neighbor analysis (CNA) for each atom
"com"_compute_com.html - center-of-mass of group of atoms
"com/molecule"_compute_com_molecule.html - center-of-mass for each molecule
"contact/atom"_compute_contact_atom.html - contact count for each spherical particle
"coord/atom"_compute_coord_atom.html - coordination number for each atom
"damage/atom"_compute_damage_atom.html - Peridynamic damage for each atom
"dihedral/local"_compute_dihedral_local.html - angle of each dihedral
"displace/atom"_compute_displace_atom.html - displacement of each atom
"erotate/asphere"_compute_erotate_asphere.html - rotational energy of aspherical particles
"erotate/rigid"_compute_erotate_rigid.html - rotational energy of rigid bodies
"erotate/sphere"_compute_erotate_sphere.html - rotational energy of spherical particles
"erotate/sphere/atom"_compute_erotate_sphere.html - rotational energy for each spherical particle
"event/displace"_compute_event_displace.html - detect event on atom displacement
"group/group"_compute_group_group.html - energy/force between two groups of atoms
"gyration"_compute_gyration.html - radius of gyration of group of atoms
"gyration/molecule"_compute_gyration_molecule.html - radius of gyration for each molecule
"heat/flux"_compute_heat_flux.html - heat flux through a group of atoms
"improper/local"_compute_improper_local.html - angle of each improper
"inertia/molecule"_compute_inertia_molecule.html - inertia tensor for each molecule
"ke"_compute_ke.html - translational kinetic energy
"ke/atom"_compute_ke_atom.html - kinetic energy for each atom
"ke/rigid"_compute_ke_rigid.html - translational kinetic energy of rigid bodies
"msd"_compute_msd.html - mean-squared displacement of group of atoms
"msd/molecule"_compute_msd_molecule.html - mean-squared displacement for each molecule
"pair"_compute_pair.html - values computed by a pair style
"pair/local"_compute_pair_local.html - distance/energy/force of each pairwise interaction
"pe"_compute_pe.html - potential energy
"pe/atom"_compute_pe_atom.html - potential energy for each atom
"pressure"_compute_pressure.html - total pressure and pressure tensor
"property/atom"_compute_property_atom.html - convert atom attributes to per-atom vectors/arrays
"property/local"_compute_property_local.html - convert local attributes to localvectors/arrays
"property/molecule"_compute_property_molecule.html - convert molecule attributes to localvectors/arrays
"rdf"_compute_rdf.html - radial distribution function g(r) histogram of group of atoms
"reduce"_compute_reduce.html - combine per-atom quantities into a single global value
"reduce/region"_compute_reduce.html - same as compute reduce, within a region
"slice"_compute_slice.html - extract values from global vector or array
"stress/atom"_compute_stress_atom.html - stress tensor for each atom
"temp"_compute_temp.html - temperature of group of atoms
"temp/asphere"_compute_temp_asphere.html - temperature of aspherical particles
"temp/com"_compute_temp_com.html - temperature after subtracting center-of-mass velocity
"temp/deform"_compute_temp_deform.html - temperature excluding box deformation velocity
"temp/partial"_compute_temp_partial.html - temperature excluding one or more dimensions of velocity
"temp/profile"_compute_temp_profile.html - temperature excluding a binned velocity profile
"temp/ramp"_compute_temp_ramp.html - temperature excluding ramped velocity component
"temp/region"_compute_temp_region.html - temperature of a region of atoms
"temp/sphere"_compute_temp_sphere.html - temperature of spherical particles
"ti"_compute_ti.html - thermodyanmic integration free energy values
"voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom :ul

There are also additional compute styles submitted by users which are
included in the LAMMPS distribution.  The list of these with links to
the individual styles are given in the compute section of "this
page"_Section_commands.html#cmd_5.

There are also additional accelerated compute styles included in the
LAMMPS distribution for faster performance on CPUs and GPUs.  The list
of these with links to the individual styles are given in the pair
section of "this page"_Section_commands.html#cmd_5.

[Restrictions:] none

[Related commands:]

"uncompute"_uncompute.html, "compute_modify"_compute_modify.html, "fix
ave/atom"_fix_ave_atom.html, "fix ave/spatial"_fix_ave_spatial.html,
"fix ave/time"_fix_ave_time.html, "fix ave/histo"_fix_ave_histo.html

[Default:] none
