.. index:: compute improper/local

compute improper/local command
==============================

Syntax
""""""

.. parsed-literal::

   compute ID group-ID improper/local value1 value2 ...

* ID, group-ID are documented in :doc:`compute <compute>` command
* improper/local = style name of this compute command
* one or more values may be appended
* value = *chi*

  .. parsed-literal::

       *chi* = tabulate improper angles

Examples
""""""""

.. code-block:: LAMMPS

   compute 1 all improper/local chi

Description
"""""""""""

Define a computation that calculates properties of individual improper
interactions.  The number of datums generated, aggregated across all
processors, equals the number of impropers in the system, modified by
the group parameter as explained below.

The value *chi* is the improper angle, as defined in the doc pages for
the individual improper styles listed on
:doc:`improper_style <improper_style>` doc page.

The local data stored by this command is generated by looping over all
the atoms owned on a processor and their impropers.  An improper will
only be included if all 4 atoms in the improper are in the specified
compute group.

Note that as atoms 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.  The only consistency that is
guaranteed is that the ordering on a particular timestep will be the
same for local vectors or arrays generated by other compute commands.
For example, improper output from the :doc:`compute property/local <compute_property_local>` command can be combined
with data from this command and output by the :doc:`dump local <dump>`
command in a consistent way.

Here is an example of how to do this:

.. code-block:: LAMMPS

   compute 1 all property/local itype iatom1 iatom2 iatom3 iatom4
   compute 2 all improper/local chi
   dump 1 all local 1000 tmp.dump index c_1[1] c_1[2] c_1[3] c_1[4] c_1[5] c_2[1]

**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 impropers.  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 output for *chi* will be in degrees.

Restrictions
""""""""""""
 none

Related commands
""""""""""""""""

:doc:`dump local <dump>`, :doc:`compute property/local <compute_property_local>`

**Default:** none
