lammps/doc/compute_atom_molecule.txt

119 lines
4.9 KiB
Plaintext

"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 atom/molecule command :h3
[Syntax:]
compute ID group-ID atom/molecule input1 input2 ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
atom/molecule = style name of this compute command :l
one or more inputs can be listed :l
input = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
c_ID = per-atom vector calculated by a compute with ID
c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID
f_ID = per-atom vector calculated by a fix with ID
f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID
v_name = per-atom vector calculated by an atom-style variable with name :pre
:ule
[Examples:]
compute 1 all atom/molecule c_ke c_pe
compute 1 top atom/molecule v_myFormula c_stress\[3\] :pre
[Description:]
Define a calculation that sums per-atom values on a per-molecule
basis, one per listed input. The inputs can "computes"_compute.html,
"fixes"_fix.html, or "variables"_variable.html that generate per-atom
quantities. Note that attributes stored by atoms, such as mass or
force, can also be summed on a per-molecule basis, by accessing these
quantities via the "compute property/atom"_compute_property_atom.html
command.
Each listed input is operated on independently. Only atoms within the
specified group contribute to the per-molecule sum. Note that compute
or fix inputs define their own group which may affect the quantities
they return. For example, if a compute is used as an input which
generates a per-atom vector, it will generate values of 0.0 for atoms
that are not in the group specified for that compute.
The ordering of per-molecule quantities produced by this compute is
consistent with the ordering produced by other compute commands that
generate per-molecule datums. Conceptually, the molecule IDs will be
in ascending order for any molecule with one or more of its atoms in
the specified group.
If an input begins with "c_", a compute ID must follow which has been
previously defined in the input script and which generates per-atom
quantities. See the individual "compute"_compute.html doc page for
details. If no bracketed integer is appended, the vector calculated
by the compute is used. If a bracketed integer is appended, the Ith
column of the array calculated by the compute is used. Users can also
write code for their own compute styles and "add them to
LAMMPS"_Section_modify.html.
If an input begins with "f_", a fix ID must follow which has been
previously defined in the input script and which generates per-atom
quantities. See the individual "fix"_fix.html doc page for details.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with when compute atom/molecule references
the values, else an error results. If no bracketed integer is
appended, the vector calculated by the fix is used. If a bracketed
integer is appended, the Ith column of the array calculated by the fix
is used. Users can also write code for their own fix style and "add
them to LAMMPS"_Section_modify.html.
If an input begins with "v_", a variable name must follow which has
been previously defined in the input script. It must be an
"atom-style variable"_variable.html. Atom-style variables can
reference thermodynamic keywords and various per-atom attributes, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of generating per-atom quantities to sum
on a per-molecule basis.
Here is an example of using this command to sum up the components of
total force on each molecule and print them to a file every 1000
timesteps. The printed values could also be time-averaged by the fix
ave/time command if desired, by changing "1000 1 1000" to "10 100
1000" (for example):
compute 1 all property/atom fx fy fz
compute 2 all atom/molecule c_1\[1\] c_1\[2\] c_1\[3\]
fix 1 all ave/time 1000 1 1000 c_2 mode vector file tmp.molecule.force :pre
:line
[Output info:]
This compute calculates a global vector or global array depending on
the number of input values. The length of the vector or number of
rows in the array is the number of molecules. If a single input is
specified, a global vector is produced. If two or more inputs are
specified, a global array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses global values from a compute as input. See "this
section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
All the vector or array values calculated by this compute are
"extensive".
The vector or array values will be in whatever "units"_units.html the
input quantities are in.
[Restrictions:] none
[Related commands:]
"compute"_compute.html, "fix"_fix.html, "variable"_variable.html
[Default:] none