forked from lijiext/lammps
272 lines
14 KiB
Plaintext
272 lines
14 KiB
Plaintext
.. index:: compute
|
|
|
|
compute command
|
|
===============
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
compute ID group-ID style args
|
|
|
|
* 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
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
compute 1 all temp
|
|
compute newtemp flow temp/partial 1 1 0
|
|
compute 3 all ke/atom
|
|
|
|
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 :ref:`howto section <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.
|
|
|
|
|
|
----------
|
|
|
|
|
|
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 (with only a few
|
|
exceptions, as documented by individual compute commands).
|
|
|
|
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 |
|
|
+------------+--------------------------------------------+
|
|
|
|
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 :doc:`variables <variable>` 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.
|
|
|
|
|
|
----------
|
|
|
|
|
|
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.
|
|
* Global values can be output via the :doc:`thermo_style custom <thermo_style>` or :doc:`fix ave/time <fix_ave_time>` command.
|
|
Or the values can be referenced in a :doc:`variable equal <variable>` or
|
|
:doc:`variable atom <variable>` command.
|
|
* Per-atom values can be output via the :doc:`dump custom <dump>` command.
|
|
Or they can be time-averaged via the :doc:`fix ave/atom <fix_ave_atom>`
|
|
command or reduced by the :doc:`compute reduce <compute_reduce>`
|
|
command. Or the per-atom values can be referenced in an :doc:`atom-style variable <variable>`.
|
|
* Local values can be reduced by the :doc:`compute reduce <compute_reduce>` command, or histogrammed by the :doc:`fix ave/histo <fix_ave_histo>` command, or output by the :doc:`dump local <dump>` command.
|
|
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.
|
|
:doc:`Thermodynamic output <thermo_style>` 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
|
|
:doc:`variable <variable>`, you may want to know whether it is an
|
|
intensive or extensive value. See the doc page for individual
|
|
computes for further info.
|
|
|
|
|
|
----------
|
|
|
|
|
|
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:
|
|
|
|
.. parsed-literal::
|
|
|
|
compute thermo_temp all temp
|
|
compute thermo_press all pressure thermo_temp
|
|
compute thermo_pe all pe
|
|
|
|
Additional computes for other quantities are created if the thermo
|
|
style requires it. See the documentation for the
|
|
:doc:`thermo_style <thermo_style>` 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 :doc:`fix <fix>` 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 :doc:`thermo_modify <thermo_modify>` and :doc:`fix modify <fix_modify>` commands.
|
|
|
|
Properties of either a default or user-defined compute can be modified
|
|
via the :doc:`compute_modify <compute_modify>` command.
|
|
|
|
Computes can be deleted with the :doc:`uncompute <uncompute>` command.
|
|
|
|
Code for new computes can be added to LAMMPS (see :doc:`this section <Section_modify>` of the manual) and the results of their
|
|
calculations accessed in the various ways described above.
|
|
|
|
|
|
----------
|
|
|
|
|
|
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. They are also given in more compact form in the
|
|
Compute section of :ref:`this page <cmd_5>`.
|
|
|
|
There are also additional compute styles (not listed here) 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 :ref:`this page <cmd_5>`.
|
|
|
|
* :doc:`angle/local <compute_bond_local>` - theta and energy of each angle
|
|
* :doc:`angmom/chunk <compute_angmom_chunk>` - angular momentum for each chunk
|
|
* :doc:`body/local <compute_body_local>` - attributes of body sub-particles
|
|
* :doc:`bond <compute_bond>` - values computed by a bond style
|
|
* :doc:`bond/local <compute_bond_local>` - distance and energy of each bond
|
|
* :doc:`centro/atom <compute_centro_atom>` - centro-symmetry parameter for each atom
|
|
* :doc:`chunk/atom <compute_chunk_atom>` - assign chunk IDs to each atom
|
|
* :doc:`cluster/atom <compute_cluster_atom>` - cluster ID for each atom
|
|
* :doc:`cna/atom <compute_cna_atom>` - common neighbor analysis (CNA) for each atom
|
|
* :doc:`com <compute_com>` - center-of-mass of group of atoms
|
|
* :doc:`com/chunk <compute_com_chunk>` - center-of-mass for each chunk
|
|
* :doc:`contact/atom <compute_contact_atom>` - contact count for each spherical particle
|
|
* :doc:`coord/atom <compute_coord_atom>` - coordination number for each atom
|
|
* :doc:`damage/atom <compute_damage_atom>` - Peridynamic damage for each atom
|
|
* :doc:`dihedral/local <compute_dihedral_local>` - angle of each dihedral
|
|
* :doc:`dilatation/atom <compute_dilatation_atom>` - Peridynamic dilatation for each atom
|
|
* :doc:`displace/atom <compute_displace_atom>` - displacement of each atom
|
|
* :doc:`erotate/asphere <compute_erotate_asphere>` - rotational energy of aspherical particles
|
|
* :doc:`erotate/rigid <compute_erotate_rigid>` - rotational energy of rigid bodies
|
|
* :doc:`erotate/sphere <compute_erotate_sphere>` - rotational energy of spherical particles
|
|
* :doc:`erotate/sphere/atom <compute_erotate_sphere>` - rotational energy for each spherical particle
|
|
* :doc:`event/displace <compute_event_displace>` - detect event on atom displacement
|
|
* :doc:`group/group <compute_group_group>` - energy/force between two groups of atoms
|
|
* :doc:`gyration <compute_gyration>` - radius of gyration of group of atoms
|
|
* :doc:`gyration/chunk <compute_gyration_chunk>` - radius of gyration for each chunk
|
|
* :doc:`heat/flux <compute_heat_flux>` - heat flux through a group of atoms
|
|
* :doc:`hexorder/atom <compute_hexorder_atom>` - bond orientational order parameter q6
|
|
* :doc:`improper/local <compute_improper_local>` - angle of each improper
|
|
* :doc:`inertia/chunk <compute_inertia_chunk>` - inertia tensor for each chunk
|
|
* :doc:`ke <compute_ke>` - translational kinetic energy
|
|
* :doc:`ke/atom <compute_ke_atom>` - kinetic energy for each atom
|
|
* :doc:`ke/rigid <compute_ke_rigid>` - translational kinetic energy of rigid bodies
|
|
* :doc:`msd <compute_msd>` - mean-squared displacement of group of atoms
|
|
* :doc:`msd/chunk <compute_msd_chunk>` - mean-squared displacement for each chunk
|
|
* :doc:`msd/nongauss <compute_msd_nongauss>` - MSD and non-Gaussian parameter of group of atoms
|
|
* :doc:`omega/chunk <compute_omega_chunk>` - angular velocity for each chunk
|
|
* :doc:`orientorder/atom <compute_orientorder_atom>` - Steinhardt bond orientational order parameters Ql
|
|
* :doc:`pair <compute_pair>` - values computed by a pair style
|
|
* :doc:`pair/local <compute_pair_local>` - distance/energy/force of each pairwise interaction
|
|
* :doc:`pe <compute_pe>` - potential energy
|
|
* :doc:`pe/atom <compute_pe_atom>` - potential energy for each atom
|
|
* :doc:`plasticity/atom <compute_plasticity_atom>` - Peridynamic plasticity for each atom
|
|
* :doc:`pressure <compute_pressure>` - total pressure and pressure tensor
|
|
* :doc:`property/atom <compute_property_atom>` - convert atom attributes to per-atom vectors/arrays
|
|
* :doc:`property/local <compute_property_local>` - convert local attributes to localvectors/arrays
|
|
* :doc:`property/chunk <compute_property_chunk>` - extract various per-chunk attributes
|
|
* :doc:`rdf <compute_rdf>` - radial distribution function g(r) histogram of group of atoms
|
|
* :doc:`reduce <compute_reduce>` - combine per-atom quantities into a single global value
|
|
* :doc:`reduce/region <compute_reduce>` - same as compute reduce, within a region
|
|
* :doc:`rigid/local <compute_rigid_local>` - extract rigid body attributes
|
|
* :doc:`slice <compute_slice>` - extract values from global vector or array
|
|
* :doc:`sna/atom <compute_sna_atom>` - calculate bispectrum coefficients for each atom
|
|
* :doc:`snad/atom <compute_sna_atom>` - derivative of bispectrum coefficients for each atom
|
|
* :doc:`snav/atom <compute_sna_atom>` - virial contribution from bispectrum coefficients for each atom
|
|
* :doc:`stress/atom <compute_stress_atom>` - stress tensor for each atom
|
|
* :doc:`temp <compute_temp>` - temperature of group of atoms
|
|
* :doc:`temp/asphere <compute_temp_asphere>` - temperature of aspherical particles
|
|
* :doc:`temp/body <compute_temp_body>` - temperature of body particles
|
|
* :doc:`temp/chunk <compute_temp_chunk>` - temperature of each chunk
|
|
* :doc:`temp/com <compute_temp_com>` - temperature after subtracting center-of-mass velocity
|
|
* :doc:`temp/deform <compute_temp_deform>` - temperature excluding box deformation velocity
|
|
* :doc:`temp/partial <compute_temp_partial>` - temperature excluding one or more dimensions of velocity
|
|
* :doc:`temp/profile <compute_temp_profile>` - temperature excluding a binned velocity profile
|
|
* :doc:`temp/ramp <compute_temp_ramp>` - temperature excluding ramped velocity component
|
|
* :doc:`temp/region <compute_temp_region>` - temperature of a region of atoms
|
|
* :doc:`temp/sphere <compute_temp_sphere>` - temperature of spherical particles
|
|
* :doc:`ti <compute_ti>` - thermodyanmic integration free energy values
|
|
* :doc:`torque/chunk <compute_torque_chunk>` - torque applied on each chunk
|
|
* :doc:`vacf <compute_vacf>` - velocity-autocorrelation function of group of atoms
|
|
* :doc:`vcm/chunk <compute_vcm_chunk>` - velocity of center-of-mass for each chunk
|
|
* :doc:`voronoi/atom <compute_voronoi_atom>` - Voronoi volume and neighbors for each atom
|
|
|
|
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 :ref:`this page <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 :ref:`this page <cmd_5>`.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
none
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`uncompute <uncompute>`, :doc:`compute_modify <compute_modify>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`fix ave/histo <fix_ave_histo>`
|
|
|
|
**Default:** none
|
|
|
|
|
|
.. _lws: http://lammps.sandia.gov
|
|
.. _ld: Manual.html
|
|
.. _lc: Section_commands.html#comm
|