.. index:: compute body/local

compute body/local command
==========================

Syntax
""""""

.. parsed-literal::

   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 datums 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>` doc 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 N sub-particles will be looped
over, and it will contribute N datums to the count of datums.  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,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 datums 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>` doc 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
