.. index:: fix ave/correlate/long

fix ave/correlate/long command
==============================

Syntax
""""""

.. code-block:: LAMMPS

   fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ...

* ID, group-ID are documented in :doc:`fix <fix>` command
* ave/correlate/long = style name of this fix command
* Nevery = use input values every this many time steps
* Nfreq = save state of the time correlation functions every this many time steps
* one or more input values can be listed
* value = c_ID, c_ID[N], f_ID, f_ID[N], v_name, v_name[I]

  .. parsed-literal::

       c_ID = global scalar calculated by a compute with ID
       c_ID[I] = Ith component of global vector calculated by a compute with ID, I can include wildcard (see below)
       f_ID = global scalar calculated by a fix with ID
       f_ID[I] = Ith component of global vector calculated by a fix with ID, I can include wildcard (see below)
       v_name = global value calculated by an equal-style variable with name
       v_name[I] = Ith component of a vector-style variable with name, I can include wildcard (see below)

* zero or more keyword/arg pairs may be appended
* keyword = *type* or *start* or *file* or *overwrite* or *title1* or *title2* or *ncorr* or *nlen* or *ncount*

  .. parsed-literal::

       *type* arg = *auto* or *upper* or *lower* or *auto/upper* or *auto/lower* or *full*
         auto = correlate each value with itself
         upper = correlate each value with each succeeding value
         lower = correlate each value with each preceding value
         auto/upper = auto + upper
         auto/lower = auto + lower
         full = correlate each value with every other value, including itself = auto + upper + lower
       *start* args = Nstart
         Nstart = start accumulating correlations on this time step
       *file* arg = filename
         filename = name of file to output correlation data to
       *overwrite* arg = none = overwrite output file with only latest output
       *title1* arg = string
         string = text to print as 1st line of output file
       *title2* arg = string
         string = text to print as 2nd line of output file
       *ncorr* arg = Ncorrelators
         Ncorrelators = number of correlators to store
       *nlen* args = Nlen
         Nlen = length of each correlator
       *ncount* args = Ncount
         Ncount = number of values over which successive correlators are averaged

Examples
""""""""

.. code-block:: LAMMPS

   fix 1 all ave/correlate/long 5 1000 c_myTemp file temp.correlate
   fix 1 all ave/correlate/long 1 10000 &
             c_thermo_press[1] c_thermo_press[2] c_thermo_press[3] &
             type upper title1 "My correlation data" nlen 15 ncount 3
   fix 1 all ave/correlate/long 1 10000 c_thermo_press[*]

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

This fix is similar in spirit and syntax to the
:doc:`fix ave/correlate <fix_ave_correlate>`.
However, this fix allows the efficient calculation of time correlation
functions on-the-fly over extremely long time windows with little
additional CPU overhead, using a multiple-:math:`\tau` method
:ref:`(Ramirez) <Ramirez>` that decreases the resolution of the stored
correlation function with time.  It is not a full drop-in replacement.

The group specified with this command is ignored.  However, note that
specified values may represent calculations performed by computes and
fixes which store their own "group" definitions.

Each listed value can be the result of a compute or fix or the
evaluation of an equal-style or vector-style variable.  For
vector-style variables, the specified indices can include a wildcard
character.  See the :doc:`fix ave/correlate <fix_ave_correlate>` page
for details.

The *Nevery* and *Nfreq* arguments specify on what time steps the input
values will be used to calculate correlation data and the frequency
with which the time correlation functions will be output to a file,
respectively.
Note that there is no *Nrepeat* argument, unlike the
:doc:`fix ave/correlate <fix_ave_correlate>` command.

The optional keywords *ncorr*, *nlen*, and *ncount* are unique to this
command and determine the number of correlation points calculated and
the memory and CPU overhead used by this calculation. *Nlen* and
*ncount* determine the amount of averaging done at longer correlation
times.  The default values *nlen* = 16 and *ncount* = 2 ensure that the
systematic error of the multiple-:math:`\tau` correlator is always below the
level of the statistical error of a typical simulation (which depends
on the ensemble size and the simulation length).

The maximum correlation time (in time steps) that can be reached is
given by the formula :math:`(nlen-1) ncount^{(ncorr-1)}`.  Longer correlation
times are discarded and not calculated.  With the default values of
the parameters (:math:`ncorr=20`, :math:`nlen=16` and :math:`ncount=2`),
this corresponds to 7864320 time steps.  If longer correlation times are
needed, the value of ncorr should be increased. Using :math:`nlen=16` and
:math:`ncount=2`, with :math:`ncorr=30`, the maximum number of steps that can
be correlated is 80530636808.  If :math:`ncorr=40`, correlation times in excess
of :math:`8\times 10^{12}` time steps can be calculated.

The total memory needed for each correlation pair is roughly
:math:`4 \times ncorr\times nlen \times 8` bytes.
With the default values of the parameters, this corresponds to about 10 KB.

For the meaning of the additional optional keywords, see the
:doc:`fix ave/correlate <fix_ave_correlate>` doc page.

Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Contrary to :doc:`fix ave/correlate <fix_ave_correlate>` this fix
does **not** provide access to its internal data to various output
options. Since this fix in intended for the calculation of time
correlation functions over very long MD simulations, the information
about this fix is written automatically to binary restart files, so
that the time correlation calculation can continue in subsequent
simulations. None of the fix_modify options are relevant to this fix.

No parameter of this fix can be used with the start/stop keywords of
the run command. This fix is not invoked during energy minimization.

Restrictions
""""""""""""

This compute is part of the EXTRA-FIX package.  It is only enabled if
LAMMPS was built with that package.  See the
:doc:`Build package <Build_package>` page for more info.

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

:doc:`fix ave/correlate <fix_ave_correlate>`

Default
"""""""

none

The option defaults for keywords that are also keywords for the
:doc:`fix ave/correlate <fix_ave_correlate>` command are as follows:
type = auto, start = 0, no file output, title 1,2 = strings as described on
the :doc:`fix ave/correlate <fix_ave_correlate>` doc page.

The option defaults for keywords unique to this command are as
follows: ncorr=20, nlen=16, ncount=2.

----------

.. _Ramirez:

**(Ramirez)** J. Ramirez, S.K. Sukumaran, B. Vorselaars and
A.E. Likhtman, J. Chem. Phys. 133, 154103 (2010).
