"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c

:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)

:line

compute dihedral/local command :h3

[Syntax:]

compute ID group-ID dihedral/local value1 value2 ... keyword args ... :pre

ID, group-ID are documented in "compute"_compute.html command :ulb,l
dihedral/local = style name of this compute command :l
one or more values may be appended :l
value = {phi} or {v_name} :l
  {phi} = tabulate dihedral angles
  {v_name} = equal-style variable with name (see below) :pre
zero or more keyword/args pairs may be appended :l
keyword = {set} :l
  {set} args = phi name
    phi = only currently allowed arg
    name = name of variable to set with phi :pre
:ule

[Examples:]

compute 1 all dihedral/local phi :pre
compute 1 all dihedral/local phi v_cos set phi p :pre

[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} is the dihedral angle, as defined in the diagram on
the "dihedral_style"_dihedral_style.html doc page.

The value {v_name} can be used together with the {set} keyword to
compute a user-specified function of the dihedral angle phi.  The
{name} specified for the {v_name} value is the name of an "equal-style
variable"_variable.html which should evaluate a formula based on a
variable which will store the angle phi.  This other variable must
be an "internal-style variable"_variable.html 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 phi.

Note that the value of 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 cosine and cosine^2 of every dihedral angle in
the system and output the statistics in various ways:

variable p internal 0.0
variable cos equal cos(v_p)
variable cossq equal cos(v_p)*cos(v_p) :pre

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[*] :pre

compute 3 all reduce ave c_2[*]
thermo_style custom step temp press c_3[*] :pre

fix 10 all ave/histo 10 10 100 -1 1 20 c_2[2] mode vector file tmp.histo :pre

The "dump local"_dump.html command will output the angle,
cosine(angle), cosine^2(angle) for every dihedral in the system.  The
"thermo_style"_thermo_style.html command will print the average of
those quantities via the "compute reduce"_compute_reduce.html command
with thermo output.  And the "fix ave/histo"_fix_ave_histo.html
command will histogram the cosine(angle) values and write them to a
file.

:line

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 4 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 "compute
property/local"_compute_property_local.html command can be combined
with data from this command and output by the "dump local"_dump.html
command in a consistent way.

Here is an example of how to do this:

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\] :pre

[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 = 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 "Howto
output"_Howto_output.html doc page for an overview of LAMMPS output
options.

The output for {phi} will be in degrees.

[Restrictions:] none

[Related commands:]

"dump local"_dump.html, "compute
property/local"_compute_property_local.html

[Default:] none
