105 lines
3.4 KiB
ReStructuredText
105 lines
3.4 KiB
ReStructuredText
.. index:: compute body/local
|
|
|
|
compute body/local command
|
|
==========================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute ID group-ID body/local input1 input2 ...
|
|
|
|
* ID, group-ID are documented in :doc:`compute <compute>` command
|
|
* body/local = style name of this compute command
|
|
* one or more keywords may be appended
|
|
* keyword = *id* or *type* or *integer*
|
|
|
|
.. parsed-literal::
|
|
|
|
*id* = atom ID of the body particle
|
|
*type* = atom type of the body particle
|
|
*integer* = 1,2,3,etc = index of fields defined by body style
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute 1 all body/local type 1 2 3
|
|
compute 1 all body/local 3 6
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Define a computation that calculates properties of individual body
|
|
sub-particles. The number of data generated, aggregated across all
|
|
processors, equals the number of body sub-particles plus the number of
|
|
non-body particles in the system, modified by the group parameter as
|
|
explained below. See the :doc:`Howto body <Howto_body>` page for
|
|
more details on using body particles.
|
|
|
|
The local data stored by this command is generated by looping over all
|
|
the atoms. An atom will only be included if it is in the group. If
|
|
the atom is a body particle, then its :math:`N` sub-particles will be looped
|
|
over, and it will contribute :math:`N` data to the count of data. If it
|
|
is not a body particle, it will contribute 1 datum.
|
|
|
|
For both body particles and non-body particles, the *id* keyword
|
|
will store the ID of the particle.
|
|
|
|
For both body particles and non-body particles, the *type* keyword
|
|
will store the type of the particle.
|
|
|
|
The *integer* keywords mean different things for body and non-body
|
|
particles. If the atom is not a body particle, only its *x*, *y*, *z*
|
|
coordinates can be referenced, using the *integer* keywords 1,2,3.
|
|
Note that this means that if you want to access more fields than this
|
|
for body particles, then you cannot include non-body particles in the
|
|
group.
|
|
|
|
For a body particle, the *integer* keywords refer to fields calculated
|
|
by the body style for each sub-particle. The body style, as specified
|
|
by the :doc:`atom_style body <atom_style>`, determines how many fields
|
|
exist and what they are. See the :doc:`Howto_body <Howto_body>` doc
|
|
page for details of the different styles.
|
|
|
|
Here is an example of how to output body information using the :doc:`dump local <dump>` command with this compute. If fields 1, 2, and 3 for the
|
|
body sub-particles are (*x*, *y*, *z*) coordinates, then the dump file will be
|
|
formatted similar to the output of a :doc:`dump atom or custom <dump>`
|
|
command.
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute 1 all body/local type 1 2 3
|
|
dump 1 all local 1000 tmp.dump index c_1[1] c_1[2] c_1[3] c_1[4]
|
|
|
|
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 data as described above. 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 the
|
|
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS
|
|
output options.
|
|
|
|
The :doc:`units <units>` for output values depend on the body style.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
none
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`dump local <dump>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
none
|