LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands

### fix ave/time command

Syntax:

    fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...

- ID, group-ID are documented in fix command
- ave/time = style name of this fix command
- Nevery = use input values every this many timesteps
- Nrepeat = # of times to use input values for calculating averages
- Nfreq = calculate averages every this many timesteps one or more input values can be listed
- value = c_ID, c_ID[N], f_ID, f_ID[N], v_name

        c_ID = global scalar or vector calculated by a compute with ID
        c_ID[I] = Ith component of global vector or Ith column of global array calculated by a compute with ID
        f_ID = global scalar or vector calculated by a fix with ID
        f_ID[I] = Ith component of global vector or Ith column of global array calculated by a fix with ID
        v_name = global value calculated by an equal-style variable with name

- zero or more keyword/arg pairs may be appended
- keyword = mode or file or ave or start or off or title1 or title2 or title3

        mode arg = scalar or vector
          scalar = all input values are global scalars
          vector = all input values are global vectors
        file arg = filename
          filename = name of file to output time averages to
        ave args = one or running or window M
          one = output a new average value every Nfreq steps
          running = output cumulative average of all previous Nfreq steps
          window M = output average of M most recent Nfreq steps
        start args = Nstart
          Nstart = start averaging on this timestep
        off arg = M = do not average this value
          M = value # from 1 to Nvalues
        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
        title3 arg = string
          string = text to print as 3rd line of output file, only for vector mode

Examples:

    fix 1 all ave/time 100 5 1000 c_myTemp c_thermo_temp file temp.profile
    fix 1 all ave/time 100 5 1000 c_thermo_press[2] ave window 20 &
                                  title1 "My output values"
    fix 1 all ave/time 1 100 1000 f_indent f_indent[1] file temp.indent off 1

Description:

Use one or more global values as inputs every few timesteps, and average them over longer timescales. The resulting averages can be used by other output commands such as thermo_style custom, and can also be written to a file. Note that if no time averaging is done, this command can be used as a convenient way to simply output one or more global values to a file.

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

Each input value can be the result of a compute or fix or the evaluation of an equal-style variable. In each case, the compute, fix, or variable must produce a global quantity, not a per-atom or local quantity. If you wish to spatial- or time-average or histogram per-atom quantities from a compute, fix, or variable, then see the fix ave/spatial, fix ave/atom, or fix ave/histo commands. If you wish to sum a per-atom quantity into a single global quantity, see the compute reduce command.

Computes that produce global quantities are those which do not have the word atom in their style name. Only a few fixes produce global quantities. See the doc pages for individual fixes for info on which ones produce such values. Variables of style equal are the only ones that can be used with this fix. Variables of style atom cannot be used, since they produce per-atom values.

The listed values must either be all scalars or all vectors, depending on the setting of the mode option. In both cases, the averaging is performed independently on each input value. I.e. each input scalar or the elements of each input vector is averaged independently.

If mode = vector, then all the input vectors must be the same length.

The Nevery, Nrepeat, and Nfreq arguments specify on what timesteps the input values will be used in order to contribute to the average. The final averaged quantities are generated every Nfreq timesteps. The average is over Nrepeat quantities, computed in the preceding portion of the simulation every Nevery timesteps. Nfreq must be a multiple of Nevery and Nevery must be non-zero even if Nrepeat is 1. Also, the timesteps contributing to the average value cannot overlap, i.e. Nfreq > (Nrepeat-1)*Nevery is required.

For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on timesteps 90,92,94,96,98,100 will be used to compute the final average on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time averaging is done; values are simply generated on timesteps 100,200,etc.

If a value begins with "c_", a compute ID must follow which has been previously defined in the input script. If mode = scalar, then if no bracketed term is appended, the global scalar calculated by the compute is used. If a bracketed term is appended, the Ith element of the global vector calculated by the compute is used. If mode = vector, then if no bracketed term is appended, the global vector calculated by the compute is used. If a bracketed term is appended, the Ith column of the global array calculated by the compute is used.

Note that there is a compute reduce command which can sum per-atom quantities into a global scalar or vector which can thus be accessed by fix ave/time. Or it can be a compute defined not in your input script, but by thermodynamic output or other fixes such as fix nvt or fix temp/rescale. See the doc pages for these commands which give the IDs of these computes. Users can also write code for their own compute styles and add them to LAMMPS.

If a value begins with "f_", a fix ID must follow which has been previously defined in the input script. If mode = scalar, then if no bracketed term is appended, the global scalar calculated by the fix is used. If a bracketed term is appended, the Ith element of the global vector calculated by the fix is used. If mode = vector, then if no bracketed term is appended, the global vector calculated by the fix is used. If a bracketed term is appended, the Ith column of the global array calculated by the fix is used.

Note that some fixes only produce their values on certain timesteps, which must be compatible with Nevery, else an error will result. Users can also write code for their own fix styles and add them to LAMMPS.

If a value begins with "v_", a variable name must follow which has been previously defined in the input script. Variables can only be used as input for mode = scalar. Only equal-style variables can be referenced. See the variable command for details. Note that variables of style equal define a formula which can reference individual atom properties or thermodynamic keywords, or they can invoke other computes, fixes, or variables when they are evaluated, so this is a very general means of specifying quantities to time average.

Additional optional keywords also affect the operation of this fix.

If the mode keyword is set to scalar, then all input values must be global scalars, or elements of global vectors. If the mode keyword is set to vector, then all input values must be global vectors, or columns of global arrays.

The ave keyword determines how the values produced every Nfreq steps are averaged with values produced on previous steps that were multiples of Nfreq, before they are accessed by another output command or written to a file.

If the ave setting is one, then the values produced on timesteps that are multiples of Nfreq are independent of each other; they are output as-is without further averaging.

If the ave setting is running, then the values produced on timesteps that are multiples of Nfreq are summed and averaged in a cumulative sense before being output. Each output value is thus the average of the value produced on that timestep with all preceding values. This running average begins when the fix is defined; it can only be restarted by deleting the fix via the unfix command, or by re-defining the fix by re-specifying it.

If the ave setting is window, then the values produced on timesteps that are multiples of Nfreq are summed and averaged within a moving "window" of time, so that the last M values are used to produce the output. E.g. if M = 3 and Nfreq = 1000, then the output on step 10000 will be the average of the individual values on steps 8000,9000,10000. Outputs on early steps will average over less than M values if they are not available.

The start keyword specifies what timestep averaging will begin on. The default is step 0. Often input values can be 0.0 at time 0, so setting start to a larger value can avoid including a 0.0 in a running or windowed average.

The off keyword can be used to flag any of the input values. If a value is flagged, it will not be time averaged. Instead the most recent input value will always be stored and output. This is useful if one of more of the inputs produced by a compute or fix or variable are effectively constant or are simply current values. E.g. they are being written to a file with other time-averaged values for purposes of creating well-formatted output.

The file keyword allows a filename to be specified. Every Nfreq steps, one quantity or vector of quantities is written to the file for each input value specified in the fix ave/time command. For mode = scalar, this means a single line is written each time output is performed. Thus the file ends up to be a series of lines, i.e. one column of numbers for each input value. For mode = vector, an array of numbers is written each time output is performed. The number of rows is the length of the input vectors, and the number of columns is the number of values. Thus the file ends up to be a series of these array sections.

The title1 and title2 and title3 keywords allow specification of the strings that will be printed as the first 2 or 3 lines of the output file, assuming the file keyword was used. LAMMPS uses default values for each of these, so they do not need to be specified.

By default, these header lines are as follows for mode = scalar:

    # Time-averaged data for fix ID
    # TimeStep value1 value2 ...

In the first line, ID is replaced with the fix-ID. In the second line the values are replaced with the appropriate fields from the fix ave/time command. There is no third line in the header of the file, so the title3 setting is ignored when mode = scalar.

By default, these header lines are as follows for mode = vector:

    # Time-averaged data for fix ID
    # TimeStep Number-of-rows
    # Row value1 value2 ...

In the first line, ID is replaced with the fix-ID. The second line describes the two values that are printed at the first of each section of output. In the third line the values are replaced with the appropriate fields from the fix ave/time command.

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

No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix.

This fix produces a global scalar or vector or array which can be accessed by various output commands. The values can only be accessed on timesteps that are multiples of Nfreq since that is when averaging is performed.

A scalar is produced if only a single input value is averaged and mode = scalar. A vector is produced if multiple input values are averaged for mode = scalar, or a single input value for mode = vector. In the first case, the length of the vector is the number of inputs. In the second case, the length of the vector is the same as the length of the input vector. An array is produced if multiple input values are averaged and mode = vector. The global array has # of rows = length of the input vectors and # of columns = number of inputs.

If the fix prouduces a scalar or vector, then the scalar and each element of the vector may be either "intensive" or "extensive". If the fix produces an array, then all elements in the array will be either "intensive" or "extensive". If a compute or fix provides the value being time averaged, then the compute or fix determines whether the value is intensive or extensive; see the doc page for that compute or fix for further info. Values produced by a variable are whatever the variable calculates.

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: none

Related commands:

compute, fix ave/atom, fix ave/spatial, fix ave/histo, variable

Default: none

The option defaults are mode = scalar, ave = one, start = 0, no file output, title 1,2,3 = strings as described above, and no off settings for any input values.