\(\renewcommand{\AA}{\text{Å}}\)

# compute dihedral/local command

## Syntax

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

- ID, group-ID are documented in compute command

- dihedral/local = style name of this compute command

- one or more values may be appended

- value = phi or v_name

      phi = tabulate dihedral angles
      v_name = equal-style variable with name (see below)

- zero or more keyword/args pairs may be appended

- keyword = set

      set args = phi name
        phi = only currently allowed arg
        name = name of variable to set with phi

## Examples

    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 (\(\phi\)) is the dihedral angle, as defined in the diagram on the 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 \(\phi\). The name specified for the v_name value is the name of an equal-style variable which should evaluate a formula based on a variable which will store the angle \(\phi\). This other variable must be an internal-style variable specified by the set keyword. It is an internal-style variable, because this command resets its value directly. The internal-style variable does not need to be defined in the input script (though it can be); if it is not defined, then the set option creates an internal-style variable with the specified name.

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 \(\cos\phi\) and \(\cos^2\phi\) of every dihedral angle in the system and output the statistics in various ways:

    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[*] inputs local
    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 dump local command will output the angle (\(\phi\)), \(\cos(\phi)\), and \(\cos^2(\phi)\) for every dihedral in the system. The thermo_style command will print the average of those quantities via the compute reduce command with thermo output. And the 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 compute property/local command can be combined with data from this command and output by the dump local 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]

## 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 Howto output page for an overview of LAMMPS output options.

The output for phi will be in degrees.

## Restrictions

none

## Related commands

dump local, compute property/local

## Default

none