144 lines
4.9 KiB
ReStructuredText
144 lines
4.9 KiB
ReStructuredText
.. index:: compute dihedral/local
|
|
|
|
compute dihedral/local command
|
|
==============================
|
|
|
|
Syntax
|
|
""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute ID group-ID dihedral/local value1 value2 ... keyword args ...
|
|
|
|
* ID, group-ID are documented in :doc:`compute <compute>` command
|
|
* dihedral/local = style name of this compute command
|
|
* one or more values may be appended
|
|
* value = *phi* or *v_name*
|
|
|
|
.. parsed-literal::
|
|
|
|
*phi* = tabulate dihedral angles
|
|
*v_name* = equal-style variable with name (see below)
|
|
|
|
* zero or more keyword/args pairs may be appended
|
|
* keyword = *set*
|
|
|
|
.. parsed-literal::
|
|
|
|
*set* args = phi name
|
|
phi = only currently allowed arg
|
|
name = name of variable to set with phi
|
|
|
|
Examples
|
|
""""""""
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
compute 1 all dihedral/local phi
|
|
compute 1 all dihedral/local phi v_cos set phi p
|
|
|
|
Description
|
|
"""""""""""
|
|
|
|
Define a computation that calculates properties of individual dihedral
|
|
interactions. The number of datums generated, aggregated across all
|
|
processors, equals the number of dihedral angles in the system, modified
|
|
by the group parameter as explained below.
|
|
|
|
The value *phi* (:math:`\phi`) is the dihedral angle, as defined in the diagram
|
|
on the :doc:`dihedral_style <dihedral_style>` doc page.
|
|
|
|
The value *v_name* can be used together with the *set* keyword to compute a
|
|
user-specified function of the dihedral angle :math:`\phi`. The *name*
|
|
specified for the *v_name* value is the name of an
|
|
:doc:`equal-style variable <variable>` which should evaluate a formula based on
|
|
a variable which will store the angle :math:`\phi`. This other variable must
|
|
be an :doc:`internal-style variable <variable>` defined in the input
|
|
script; its initial numeric value can be anything. It must be an
|
|
internal-style variable, because this command resets its value
|
|
directly. The *set* keyword is used to identify the name of this
|
|
other variable associated with :math:`\phi`.
|
|
|
|
Note that the value of :math:`\phi` for each angle which stored in the internal
|
|
variable is in radians, not degrees.
|
|
|
|
As an example, these commands can be added to the bench/in.rhodo
|
|
script to compute the :math:`\cos\phi` and :math:`\cos^2\phi` of every dihedral
|
|
angle in the system and output the statistics in various ways:
|
|
|
|
.. code-block:: LAMMPS
|
|
|
|
variable p internal 0.0
|
|
variable cos equal cos(v_p)
|
|
variable cossq equal cos(v_p)*cos(v_p)
|
|
|
|
compute 1 all property/local datom1 datom2 datom3 datom4 dtype
|
|
compute 2 all dihedral/local phi v_cos v_cossq set phi p
|
|
dump 1 all local 100 tmp.dump c_1[*] c_2[*]
|
|
|
|
compute 3 all reduce ave c_2[*]
|
|
thermo_style custom step temp press c_3[*]
|
|
|
|
fix 10 all ave/histo 10 10 100 -1 1 20 c_2[2] mode vector file tmp.histo
|
|
|
|
The :doc:`dump local <dump>` command will output the angle (:math:`\phi`),
|
|
:math:`\cos(\phi)`, and :math:`\cos^2(\phi)` for every dihedral in the system.
|
|
The :doc:`thermo_style <thermo_style>` command will print the average of
|
|
those quantities via the :doc:`compute reduce <compute_reduce>` command
|
|
with thermo output. And the :doc:`fix ave/histo <fix_ave_histo>`
|
|
command will histogram the cosine(angle) values and write them to a file.
|
|
|
|
----------
|
|
|
|
The local data stored by this command is generated by looping over all
|
|
the atoms owned on a processor and their dihedrals. A dihedral will
|
|
only be included if all four atoms in the dihedral 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, dihedral 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 dtype datom1 datom2 datom3 datom4
|
|
compute 2 all dihedral/local phi
|
|
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 values. The length of the vector or number of rows in the
|
|
array is the number of dihedrals. If a single value is specified, a
|
|
local vector is produced. If two or more values are specified, a
|
|
local array is produced where the number of columns is equal to the number of
|
|
values. 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 output for *phi* will be in degrees.
|
|
|
|
Restrictions
|
|
""""""""""""
|
|
none
|
|
|
|
Related commands
|
|
""""""""""""""""
|
|
|
|
:doc:`dump local <dump>`, :doc:`compute property/local <compute_property_local>`
|
|
|
|
Default
|
|
"""""""
|
|
|
|
none
|