forked from lijiext/lammps
178 lines
6.6 KiB
Plaintext
178 lines
6.6 KiB
Plaintext
.. index:: compute rigid/local
|
|
|
|
compute rigid/local command
|
|
===========================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
compute ID group-ID rigid/local rigidID input1 input2 ...
|
|
|
|
* ID, group-ID are documented in :doc:`compute <compute>` command
|
|
* rigid/local = style name of this compute command
|
|
* rigidID = ID of fix rigid/small command or one of its variants
|
|
* input = one or more rigid body attributes
|
|
|
|
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. parsed-literal::
|
|
|
|
compute 1 all rigid/local myRigid mol x y z
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Define a computation that simply stores rigid body attributes for
|
|
rigid bodies defined by the :doc:`fix rigid/small <fix_rigid>` command
|
|
or one of its NVE, NVT, NPT, NPH variants. The data is stored as
|
|
local data so it can be accessed by other :ref:`output commands <howto_15>` that process local data, such as
|
|
the :doc:`compute reduce <compute_reduce>` or :doc:`dump local <dump>`
|
|
commands.
|
|
|
|
Note that this command only works with the :doc:`fix rigid/small <fix_rigid>` command or its variants, not the fix rigid
|
|
command and its variants. The ID of the :doc:`fix rigid/small <fix_rigid>` command used to define rigid bodies must
|
|
be specified as *rigidID*\ . The :doc:`fix rigid <fix_rigid>` command is
|
|
typically used to define a handful of (potentially very large) rigid
|
|
bodies. It outputs similar per-body information as this command
|
|
directly from the fix as global data; see the :doc:`fix rigid <fix_rigid>` doc page for details
|
|
|
|
The local data stored by this command is generated by looping over all
|
|
the atoms owned on a processor. If the atom is not in the specified
|
|
*group-ID* or is not part of a rigid body it is skipped. If it is not
|
|
the atom within a body that is assigned to store the body information
|
|
it is skipped (only one atom per body is so assigned). If it is the
|
|
assigned atom, then the info for that body is output. This means that
|
|
information for N bodies is generated. N may be less than the # of
|
|
bodies defined by the fix rigid command, if the atoms in some bodies
|
|
are not in the *group-ID*\ .
|
|
|
|
.. note::
|
|
|
|
Which atom in a body owns the body info is determined internal
|
|
to LAMMPS; it's the one nearest the geometric center of the body.
|
|
Typically you should avoid this complication, by defining the group
|
|
associated with this fix to include/exclude entire bodies.
|
|
|
|
Note that as atoms and bodies migrate from processor to processor,
|
|
there will be no consistent ordering of the entries within the local
|
|
vector or array from one timestep to the next.
|
|
|
|
Here is an example of how to use this compute to dump rigid body info
|
|
to a file:
|
|
|
|
.. parsed-literal::
|
|
|
|
compute 1 all rigid/local myRigid mol x y z fx fy fz
|
|
dump 1 all local 1000 tmp.dump index c_1[1] c_1[2] c_1[3] c_1[4] c_1[5] c_1[6] c_1[7]
|
|
|
|
|
|
----------
|
|
|
|
|
|
This section explains the rigid body attributes that can be specified.
|
|
|
|
The *id* attribute is the atomID of the atom which owns the rigid body, which is
|
|
assigned by the :doc:`fix rigid/small <fix_rigid>` command.
|
|
|
|
The *mol* attribute is the molecule ID of the rigid body. It should
|
|
be the molecule ID which all of the atoms in the body belong to, since
|
|
that is how the :doc:`fix rigid/small <fix_rigid>` command defines its
|
|
rigid bodies.
|
|
|
|
The *mass* attribute is the total mass of the rigid body.
|
|
|
|
There are two options for outputting the coordinates of the center of
|
|
mass (COM) of the body. The *x*\ , *y*\ , *z* attributes write the COM
|
|
"unscaled", in the appropriate distance :doc:`units <units>` (Angstroms,
|
|
sigma, etc). Use *xu*\ , *yu*\ , *zu* if you want the COM "unwrapped" by
|
|
the image flags for each atobody. Unwrapped means that if the body
|
|
COM has passed thru a periodic boundary one or more times, the value
|
|
is generated what the COM coordinate would be if it had not been
|
|
wrapped back into the periodic box.
|
|
|
|
The image flags for the body can be generated directly using the *ix*\ ,
|
|
*iy*\ , *iz* attributes. For periodic dimensions, they specify which
|
|
image of the simulation box the COM is considered to be in. An image
|
|
of 0 means it is inside the box as defined. A value of 2 means add 2
|
|
box lengths to get the true value. A value of -1 means subtract 1 box
|
|
length to get the true value. LAMMPS updates these flags as the rigid
|
|
body COMs cross periodic boundaries during the simulation.
|
|
|
|
The *vx*\ , *vy*\ , *vz*\ , *fx*\ , *fy*\ , *fz* attributes are components of
|
|
the COM velocity and force on the COM of the body.
|
|
|
|
The *omegax*\ , *omegay*\ , and *omegaz* attributes are the angular
|
|
velocity componennts of the body around its COM.
|
|
|
|
The *angmomx*\ , *angmomy*\ , and *angmomz* attributes are the angular
|
|
momentum components of the body around its COM.
|
|
|
|
The *quatw*\ , *quati*\ , *quatj*\ , and *quatk* attributes are the
|
|
components of the 4-vector quaternion representing the orientation of
|
|
the rigid body. See the :doc:`set <set>` command for an explanation of
|
|
the quaternion vector.
|
|
|
|
The *angmomx*\ , *angmomy*\ , and *angmomz* attributes are the angular
|
|
momentum components of the body around its COM.
|
|
|
|
The *tqx*\ , *tqy*\ , *tqz* attributes are components of the torque acting
|
|
on the body around its COM.
|
|
|
|
The *inertiax*\ , *inertiay*\ , *inertiaz* attributes are components of
|
|
diagonalized inertia tensor for the body, i.e the 3 moments of inertia
|
|
for the body around its principal axes, as computed internally by
|
|
LAMMPS.
|
|
|
|
|
|
----------
|
|
|
|
|
|
**Output info:**
|
|
|
|
This compute calculates a local vector or local array depending on the
|
|
number of keywords. The length of the vector or number of rows in the
|
|
array is the number of rigid bodies. If a single keyword is
|
|
specified, a local vector is produced. If two or more keywords are
|
|
specified, a local array is produced where the number of columns = the
|
|
number of keywords. The vector or array can be accessed by any
|
|
command that uses local values from a compute as input. See :ref:`this section <howto_15>` for an overview of LAMMPS output
|
|
options.
|
|
|
|
The vector or array values will be in whatever :doc:`units <units>` the
|
|
corresponding attribute is in:
|
|
|
|
* id,mol = unitless
|
|
* mass = mass units
|
|
* x,y,z and xy,yu,zu = distance units
|
|
* vx,vy,vz = velocity units
|
|
* fx,fy,fz = force units
|
|
* omegax,omegay,omegaz = radians/time units
|
|
* angmomx,angmomy,angmomz = mass*distance^2/time units
|
|
* quatw,quati,quatj,quatk = unitless
|
|
* tqx,tqy,tqz = torque units
|
|
* inertiax,inertiay,inertiaz = mass*distance^2 units
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
|
|
|
|
This compute is part of the RIGID package. It is only enabled if
|
|
LAMMPS was built with that package. See the :ref:`Making LAMMPS <start_3>` section for more info.
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`dump local <dump>`, :doc:`compute reduce <compute_reduce>`
|
|
|
|
**Default:** none
|
|
|
|
|
|
.. _lws: http://lammps.sandia.gov
|
|
.. _ld: Manual.html
|
|
.. _lc: Section_commands.html#comm
|