Merge remote-tracking branch 'github/develop' into collected-small-fixes
This commit is contained in:
@ -29,6 +29,7 @@ OPT.
|
|||||||
* :doc:`ave/grid <fix_ave_grid>`
|
* :doc:`ave/grid <fix_ave_grid>`
|
||||||
* :doc:`ave/histo <fix_ave_histo>`
|
* :doc:`ave/histo <fix_ave_histo>`
|
||||||
* :doc:`ave/histo/weight <fix_ave_histo>`
|
* :doc:`ave/histo/weight <fix_ave_histo>`
|
||||||
|
* :doc:`ave/moments <fix_ave_moments>`
|
||||||
* :doc:`ave/time <fix_ave_time>`
|
* :doc:`ave/time <fix_ave_time>`
|
||||||
* :doc:`aveforce <fix_aveforce>`
|
* :doc:`aveforce <fix_aveforce>`
|
||||||
* :doc:`balance <fix_balance>`
|
* :doc:`balance <fix_balance>`
|
||||||
|
|||||||
@ -208,6 +208,7 @@ accelerated styles exist.
|
|||||||
* :doc:`ave/grid <fix_ave_grid>` - compute per-grid time-averaged quantities
|
* :doc:`ave/grid <fix_ave_grid>` - compute per-grid time-averaged quantities
|
||||||
* :doc:`ave/histo <fix_ave_histo>` - compute/output time-averaged histograms
|
* :doc:`ave/histo <fix_ave_histo>` - compute/output time-averaged histograms
|
||||||
* :doc:`ave/histo/weight <fix_ave_histo>` - weighted version of fix ave/histo
|
* :doc:`ave/histo/weight <fix_ave_histo>` - weighted version of fix ave/histo
|
||||||
|
* :doc:`ave/moments <fix_ave_moments>` - compute moments of scalar quantities
|
||||||
* :doc:`ave/time <fix_ave_time>` - compute/output global time-averaged quantities
|
* :doc:`ave/time <fix_ave_time>` - compute/output global time-averaged quantities
|
||||||
* :doc:`aveforce <fix_aveforce>` - add an averaged force to each atom
|
* :doc:`aveforce <fix_aveforce>` - add an averaged force to each atom
|
||||||
* :doc:`balance <fix_balance>` - perform dynamic load-balancing
|
* :doc:`balance <fix_balance>` - perform dynamic load-balancing
|
||||||
|
|||||||
296
doc/src/fix_ave_moments.rst
Normal file
296
doc/src/fix_ave_moments.rst
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
.. index:: fix ave/moments
|
||||||
|
|
||||||
|
fix ave/moments command
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Syntax
|
||||||
|
""""""
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix ID group-ID ave/moments Nevery Nrepeat Nfreq value1 value2 ... moment1 moment2 ... keyword args ...
|
||||||
|
|
||||||
|
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||||
|
* ave/moments = style name of this fix command
|
||||||
|
* Nevery = use input values every this many time steps
|
||||||
|
* Nrepeat = # of times to use input values for calculating averages
|
||||||
|
* Nfreq = calculate averages every this many time steps
|
||||||
|
* one or more input variables can be listed
|
||||||
|
* value = v_name
|
||||||
|
|
||||||
|
.. 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 = value calculated by an equal-style variable with name
|
||||||
|
v_name[I] = value calculated by a vector-style variable with name, I can include wildcard (see below)
|
||||||
|
|
||||||
|
* one or more moments to compute can be listed
|
||||||
|
* moment = *mean* or *stddev* or *variance* or *skew* or *kurtosis*, see exact definitions below.
|
||||||
|
* zero or more keyword/arg pairs may be appended
|
||||||
|
* keyword = *start* or *history*
|
||||||
|
|
||||||
|
.. parsed-literal::
|
||||||
|
|
||||||
|
*start* args = Nstart
|
||||||
|
Nstart = invoke first after this time step
|
||||||
|
*history* args = Nrecent
|
||||||
|
Nrecent = keep a history of up to Nrecent outputs
|
||||||
|
|
||||||
|
Examples
|
||||||
|
""""""""
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix 1 all ave/moments 1 1000 100 v_volume mean stddev
|
||||||
|
fix 1 all ave/moments 1 200 1000 v_volume variance kurtosis history 10
|
||||||
|
|
||||||
|
Description
|
||||||
|
"""""""""""
|
||||||
|
|
||||||
|
.. versionadded:: TBD
|
||||||
|
|
||||||
|
Using one or more values as input, calculate the moments of the underlying
|
||||||
|
(population) distributions based on samples collected every few time
|
||||||
|
steps over a time step window. The definitions of the moments calculated
|
||||||
|
are given below.
|
||||||
|
|
||||||
|
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 :doc:`compute <compute>` or
|
||||||
|
:doc:`fix <fix>` or the evaluation of an equal-style or vector-style
|
||||||
|
:doc:`variable <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 :doc:`fix
|
||||||
|
ave/chunk <fix_ave_chunk>`, :doc:`fix ave/atom <fix_ave_atom>`, or
|
||||||
|
:doc:`fix ave/histo <fix_ave_histo>` commands. If you wish to sum a
|
||||||
|
per-atom quantity into a single global quantity, see the :doc:`compute
|
||||||
|
reduce <compute_reduce>` command.
|
||||||
|
|
||||||
|
Many :doc:`computes <compute>` and :doc:`fixes <fix>` produce global
|
||||||
|
quantities. See their doc pages for details. :doc:`Variables <variable>`
|
||||||
|
of style *equal* and *vector* 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 input values must all be scalars or vectors with a bracketed term
|
||||||
|
appended, indicating the :math:`I^\text{th}` value of the vector is
|
||||||
|
used.
|
||||||
|
|
||||||
|
The result of this fix can be accessed as a vector, containing the
|
||||||
|
interleaved moments of each input in order. If M moments are requested,
|
||||||
|
then the moments of input 1 will be the first M values in the vector
|
||||||
|
output by this fix. The moments of input 2 will the next M values, etc.
|
||||||
|
If there are N values, the vector length will be N*M.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
For input values from a compute or fix or variable, the bracketed index
|
||||||
|
I can be specified using a wildcard asterisk with the index to
|
||||||
|
effectively specify multiple values. This takes the form "\*" or "\*n"
|
||||||
|
or "m\*" or "m\*n". If :math:`N` is the size of the vector, then an
|
||||||
|
asterisk with no numeric values means all indices from 1 to :math:`N`.
|
||||||
|
A leading asterisk means all indices from 1 to n (inclusive). A
|
||||||
|
trailing asterisk means all indices from n to :math:`N` (inclusive). A
|
||||||
|
middle asterisk means all indices from m to n (inclusive).
|
||||||
|
|
||||||
|
Using a wildcard is the same as if the individual elements of the vector
|
||||||
|
or cells of the array had been listed one by one. For examples, see the
|
||||||
|
description of this capability in :doc:`fix ave/time <fix_ave_time>`.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and
|
||||||
|
:math:`N_\text{freq}` arguments specify on what time steps the input
|
||||||
|
values will be used in order to contribute to the average. The final
|
||||||
|
statistics are generated on time steps that are a multiple of
|
||||||
|
:math:`N_\text{freq}`\ . The average is over a window of up to
|
||||||
|
:math:`N_\text{repeat}` quantities, computed in the preceding portion of
|
||||||
|
the simulation once every :math:`N_\text{every}` time steps.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
Contrary to most fix ave/* commands, it is not required that Nevery *
|
||||||
|
Nrepeat <= Nfreq. This is to allow the user to choose the time
|
||||||
|
window and number of samples contributing to the output at each
|
||||||
|
Nfreq interval.
|
||||||
|
|
||||||
|
For example, if :math:`N_\text{freq}=100` and :math:`N_\text{repeat}=5`
|
||||||
|
(and :math:`N_\text{every}=1`), then on step 100 values from time steps
|
||||||
|
96, 97, 98, 99, and 100 will be used. The fix does not compute its
|
||||||
|
inputs on steps that are not required. If :math:`N_\text{freq}=5`,
|
||||||
|
:math:`N_\text{repeat}=8` and :math:`N_\text{every}=1`, then values
|
||||||
|
will first be calculated on step 5 from steps 1-5, on step 10 from 3-10,
|
||||||
|
on step 15 from 8-15 and so on, forming a rolling average over
|
||||||
|
timesteps that span a time window larger than Nfreq.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
If a value begins with "c\_", a compute ID must follow which has been
|
||||||
|
previously defined in the input script. 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. See the discussion above for how I
|
||||||
|
can be specified with a wildcard asterisk to effectively specify
|
||||||
|
multiple values.
|
||||||
|
|
||||||
|
If a value begins with "f\_", a fix ID must follow which has been
|
||||||
|
previously defined in the input script. 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. See the discussion above for how I can
|
||||||
|
be specified with a wildcard asterisk to effectively specify multiple
|
||||||
|
values.
|
||||||
|
|
||||||
|
Note that some fixes only produce their values on certain time steps,
|
||||||
|
which must be compatible with *Nevery*, else an error will result.
|
||||||
|
Users can also write code for their own fix styles and :doc:`add them to
|
||||||
|
LAMMPS <Modify>`.
|
||||||
|
|
||||||
|
If a value begins with "v\_", a variable name must follow which has been
|
||||||
|
previously defined in the input script. Only equal-style or vector-style
|
||||||
|
variables can be used, which both produce global values. Vector-style
|
||||||
|
variables require a bracketed term to specify the Ith element of the
|
||||||
|
vector calculated by the variable.
|
||||||
|
|
||||||
|
Note that variables of style *equal* and *vector* 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.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
The moments are output in the order requested in the arguments following
|
||||||
|
the last input. Any number and order of moments can be specified,
|
||||||
|
although it does not make much sense to specify the same moment multiple
|
||||||
|
times. All moments are computed using a correction of the sample estimators
|
||||||
|
used to obtain unbiased cumulants :math:`k_{1..4}` (see :ref:`(Cramer)
|
||||||
|
<Cramer1>`). The correction for variance is the standard Bessel
|
||||||
|
correction. For other moments, see :ref:`(Joanes)<Joanes1>`.
|
||||||
|
|
||||||
|
For *mean*, the arithmetic mean :math:`\bar{x} = \frac{1}{n}
|
||||||
|
\sum_{i=1}^{n} x_i` is calculated.
|
||||||
|
|
||||||
|
For *variance*, the Bessel-corrected sample variance :math:`var = k_2 =
|
||||||
|
\frac{1}{n - 1} \sum_{i=1}^{n} (x_i - \bar{x})^2` is calculated.
|
||||||
|
|
||||||
|
For *stddev*, the Bessel-corrected sample standard deviation
|
||||||
|
:math:`stddev = \sqrt{k_2}` is calculated.
|
||||||
|
|
||||||
|
For *skew*, the adjusted Fisher--Pearson standardized moment :math:`G_1
|
||||||
|
= \frac{k_3}{k_2^{3/2}} = \frac{k_3}{stddev^3}` is calculated.
|
||||||
|
|
||||||
|
For *kurtosis*, the adjusted Fisher--Pearson standardized moment
|
||||||
|
:math:`G_2 = \frac{k_4}{k_2^2}` is calculated.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
Fix invocation and output can be modified by optional keywords.
|
||||||
|
|
||||||
|
The *start* keyword specifies that the first computation should be no
|
||||||
|
earlier than the step number given (but will still occur on a multiple
|
||||||
|
of *Nfreq*). 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 longer series.
|
||||||
|
|
||||||
|
The *history* keyword stores the Nrecent most recent outputs on Nfreq
|
||||||
|
timesteps, so they can be accessed as global outputs of the fix. Nrecent
|
||||||
|
must be >= 1. The default is 1, meaning only the most recent output is
|
||||||
|
accessible. For example, if history 10 is specified and Nfreq = 1000,
|
||||||
|
then on timestep 20000, the Nfreq outputs from steps 20000, 19000, ...
|
||||||
|
11000 are available for access. See below for details on how to access
|
||||||
|
the history values.
|
||||||
|
|
||||||
|
For example, this will store the outputs of the previous 10 Nfreq
|
||||||
|
time steps, i.e. a window of 10000 time steps:
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
fix 1 all ave/moments 1 200 1000 v_volume mean history 10
|
||||||
|
|
||||||
|
The previous results can be accessed as values in a global array output
|
||||||
|
by this fix. Each column of the array is the vector output of the N-th
|
||||||
|
preceding Nfreq timestep. For example, assuming a single moment is
|
||||||
|
calculated, the most recent result corresponding to the third input
|
||||||
|
value would be accessed as "f_name[3][1]", "f_name[3][4]" is the 4th
|
||||||
|
most recent and so on. The current vector output is always the first
|
||||||
|
column of the array, corresponding to the most recent result.
|
||||||
|
|
||||||
|
To illustrate the utility of keeping output history, consider using
|
||||||
|
this fix in conjunction with :doc:`fix halt <fix_halt>` to stop a run
|
||||||
|
automatically if a quantity is converged to within some desired tolerance:
|
||||||
|
|
||||||
|
.. code-block:: LAMMPS
|
||||||
|
|
||||||
|
variable target equal etot
|
||||||
|
fix aveg all ave/moments 1 200 1000 v_target mean stddev history 10
|
||||||
|
variable stopcond equal "abs(f_aveg[1]-f_aveg[1][10])<f_aveg[2]"
|
||||||
|
fix fhalt all halt 1000 v_stopcond == 1
|
||||||
|
|
||||||
|
In this example, every 1000 time steps, the average and standard
|
||||||
|
deviation of the total energy over the previous 200 time steps are
|
||||||
|
calculated. If the difference between the most recent and 10-th most
|
||||||
|
recent average is lower than the most recent standard deviation, the run
|
||||||
|
is stopped.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
Restart, fix_modify, output, run start/stop, minimize info
|
||||||
|
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
No information about this fix is written to :doc:`binary restart files
|
||||||
|
<restart>`.
|
||||||
|
|
||||||
|
This fix produces a global vector and global array which can be accessed
|
||||||
|
by various :doc:`output commands <Howto_output>`. The values can be
|
||||||
|
accessed on any time step, but may not be current.
|
||||||
|
|
||||||
|
A global vector is produced with the # of elements = number of moments *
|
||||||
|
number of inputs. The moments are output in the order given in the fix
|
||||||
|
definition. An array is produced having # of rows = length of vector
|
||||||
|
output (with an ordering which matches the vector) and # of columns =
|
||||||
|
value of *history*. There is always at least one column.
|
||||||
|
|
||||||
|
Each element of the global vector or array can be either "intensive" or
|
||||||
|
"extensive", depending on whether the values contributing to the element
|
||||||
|
are "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 page for that compute or fix for
|
||||||
|
further info. Values produced by a variable are treated as intensive.
|
||||||
|
|
||||||
|
No parameter of this fix can be used with the *start/stop* keywords of
|
||||||
|
the :doc:`run <run>` command. This fix is not invoked during
|
||||||
|
:doc:`energy minimization <minimize>`.
|
||||||
|
|
||||||
|
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/time <fix_ave_time>`,
|
||||||
|
|
||||||
|
Default
|
||||||
|
"""""""
|
||||||
|
|
||||||
|
The option defaults are history = 1, start = 0.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. _Cramer1:
|
||||||
|
|
||||||
|
**(Cramer)** Cramer, Mathematical Methods of Statistics, Princeton University Press (1946).
|
||||||
|
|
||||||
|
.. _Joanes1:
|
||||||
|
|
||||||
|
**(Joanes)** Joanes, Gill, The Statistician, 47, 183--189 (1998).
|
||||||
@ -631,6 +631,7 @@ cp
|
|||||||
cpp
|
cpp
|
||||||
cpu
|
cpu
|
||||||
cradius
|
cradius
|
||||||
|
Cramer
|
||||||
createatoms
|
createatoms
|
||||||
createAtoms
|
createAtoms
|
||||||
CreateIDs
|
CreateIDs
|
||||||
@ -671,6 +672,7 @@ cuFFT
|
|||||||
CuH
|
CuH
|
||||||
Cui
|
Cui
|
||||||
Cummins
|
Cummins
|
||||||
|
cumulants
|
||||||
Cundall
|
Cundall
|
||||||
cundall
|
cundall
|
||||||
Curk
|
Curk
|
||||||
@ -1772,6 +1774,7 @@ jik
|
|||||||
JIK
|
JIK
|
||||||
jku
|
jku
|
||||||
jN
|
jN
|
||||||
|
Joanes
|
||||||
Joannopoulos
|
Joannopoulos
|
||||||
Jochim
|
Jochim
|
||||||
Jonsson
|
Jonsson
|
||||||
|
|||||||
35
examples/PACKAGES/moments/in.converge
Normal file
35
examples/PACKAGES/moments/in.converge
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Detect convergence in a simulation using the relative change in
|
||||||
|
# moments. This demonstrates the "history" option.
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
|
||||||
|
# compute mean and stddev over the preceding 5000 steps, every 20 steps
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 10 500 200 v_toteng mean stddev history 5
|
||||||
|
|
||||||
|
# Convergence criterion: stddev is smaller than threshold and was previously larger
|
||||||
|
# This avoids issues with system oscillations in the order of the averaging window
|
||||||
|
# that would otherwise lead to "nodes" in the stddev.
|
||||||
|
variable conv equal "(f_2[2] < 2.0) && (f_2[2][1] < f_2[2][5])"
|
||||||
|
fix 3 all halt 100 v_conv == 1
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal f_2[*][1] f_2[*][5] v_conv
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
run 10000
|
||||||
|
|
||||||
27
examples/PACKAGES/moments/in.simple
Normal file
27
examples/PACKAGES/moments/in.simple
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Perform a simple simulation and output the moments of the total energy
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 5 200 100 v_toteng mean stddev variance skew kurtosis
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal f_2[*]
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
run 10000
|
||||||
|
|
||||||
28
examples/PACKAGES/moments/in.valtest
Normal file
28
examples/PACKAGES/moments/in.valtest
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Output raw and computed data. This can be used to perform the moment
|
||||||
|
# calculation in some external tool and validate our results
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 1 10 10 v_toteng mean variance skew kurtosis
|
||||||
|
|
||||||
|
thermo_style custom step etotal f_2[*]
|
||||||
|
thermo_modify format float %14.8f
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 100
|
||||||
171
examples/PACKAGES/moments/log.02May2025.converge.g++.1
Normal file
171
examples/PACKAGES/moments/log.02May2025.converge.g++.1
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
LAMMPS (2 Apr 2025 - Development - patch_4Feb2025-645-gba166d42e1-modified)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
Created 864 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 0.2000000000000000111
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 10 500 200 v_toteng mean stddev history 5
|
||||||
|
|
||||||
|
variable conv equal "(f_2[2] < 2) && (f_2[2][1] < f_2[2][5])"
|
||||||
|
fix 3 all halt 1000 v_conv == 1
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal f_2[*][1] f_2[*][5] v_conv
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
run 10000
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 8.6825
|
||||||
|
ghost atom cutoff = 8.6825
|
||||||
|
binsize = 4.34125, bins = 6 6 6
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair eam/alloy, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.484 | 3.484 | 3.484 Mbytes
|
||||||
|
Step Temp Press TotEng f_2[1][1] f_2[2][1] f_2[1][5] f_2[2][5] v_conv
|
||||||
|
0 1000 -107410.22 -2884.9159 0 0 0 0 0
|
||||||
|
100 512.04214 -124.66263 -2928.6 0 0 0 0 0
|
||||||
|
200 479.34328 -136.26635 -2931.3905 -2928.6251 2.1584834 0 0 0
|
||||||
|
300 480.05298 128.92946 -2933.9233 -2928.6251 2.1584834 0 0 0
|
||||||
|
400 471.83641 -29.253334 -2936.8631 -2931.3742 3.3668783 0 0 0
|
||||||
|
500 456.96309 -274.69336 -2939.9081 -2931.3742 3.3668783 0 0 0
|
||||||
|
600 450.32413 14.606227 -2942.973 -2934.277 5.0681849 0 0 0
|
||||||
|
700 431.71192 -45.641261 -2946.006 -2934.277 5.0681849 0 0 0
|
||||||
|
800 436.4217 589.91981 -2948.8885 -2937.2386 6.823233 0 0 0
|
||||||
|
900 407.84688 -3728.1499 -2951.6643 -2937.2386 6.823233 0 0 0
|
||||||
|
1000 401.69178 6695.3653 -2954.2959 -2940.1463 8.4728269 -2928.6251 2.1584834 0
|
||||||
|
1100 370.87469 -2294.843 -2956.9413 -2940.1463 8.4728269 -2928.6251 2.1584834 0
|
||||||
|
1200 375.15562 704.6568 -2959.3841 -2942.9613 10.001542 -2931.3742 3.3668783 0
|
||||||
|
1300 371.09077 -493.04016 -2961.6803 -2942.9613 10.001542 -2931.3742 3.3668783 0
|
||||||
|
1400 365.88512 490.98174 -2963.8365 -2945.6475 11.378724 -2934.277 5.0681849 0
|
||||||
|
1500 358.42655 -218.94911 -2965.8652 -2945.6475 11.378724 -2934.277 5.0681849 0
|
||||||
|
1600 329.08402 56.411923 -2967.7662 -2948.1844 12.597017 -2937.2386 6.823233 0
|
||||||
|
1700 317.74207 1192.918 -2969.557 -2948.1844 12.597017 -2937.2386 6.823233 0
|
||||||
|
1800 331.98966 -2205.7213 -2971.1465 -2950.559 13.653575 -2940.1463 8.4728269 0
|
||||||
|
1900 330.96814 1401.3066 -2972.6923 -2950.559 13.653575 -2940.1463 8.4728269 0
|
||||||
|
2000 315.41816 -909.41909 -2974.0785 -2952.7764 14.568194 -2942.9613 10.001542 0
|
||||||
|
2100 320.4269 1226.2006 -2975.3676 -2952.7764 14.568194 -2942.9613 10.001542 0
|
||||||
|
2200 302.88235 -1238.8052 -2976.5099 -2954.8327 15.341787 -2945.6475 11.378724 0
|
||||||
|
2300 300.4349 2667.202 -2977.5329 -2954.8327 15.341787 -2945.6475 11.378724 0
|
||||||
|
2400 292.94691 -5532.1854 -2978.3724 -2956.7266 15.978754 -2948.1844 12.597017 0
|
||||||
|
2500 286.12064 4647.3841 -2979.2217 -2956.7266 15.978754 -2948.1844 12.597017 0
|
||||||
|
2600 290.74305 -1950.526 -2979.9142 -2958.4592 16.485773 -2950.559 13.653575 0
|
||||||
|
2700 281.51347 937.60472 -2980.4808 -2958.4592 16.485773 -2950.559 13.653575 0
|
||||||
|
2800 279.71836 -801.62498 -2980.8899 -2960.032 16.869365 -2952.7764 14.568194 0
|
||||||
|
2900 277.41241 609.21495 -2981.1721 -2960.032 16.869365 -2952.7764 14.568194 0
|
||||||
|
3000 281.31161 -760.27203 -2981.3003 -2961.4399 17.128547 -2954.8327 15.341787 0
|
||||||
|
3100 284.72904 315.53038 -2981.297 -2961.4399 17.128547 -2954.8327 15.341787 0
|
||||||
|
3200 278.39445 516.25074 -2981.1224 -2962.6768 17.263037 -2956.7266 15.978754 0
|
||||||
|
3300 294.46998 -655.06212 -2980.8266 -2962.6768 17.263037 -2956.7266 15.978754 0
|
||||||
|
3400 290.04647 788.30424 -2980.3963 -2963.7417 17.280979 -2958.4592 16.485773 0
|
||||||
|
3500 283.218 -844.33188 -2979.8504 -2963.7417 17.280979 -2958.4592 16.485773 0
|
||||||
|
3600 288.76031 1339.2734 -2979.2382 -2964.6345 17.192698 -2960.032 16.869365 0
|
||||||
|
3700 289.44519 -3015.7161 -2978.5394 -2964.6345 17.192698 -2960.032 16.869365 0
|
||||||
|
3800 309.04206 5579.3265 -2977.8282 -2965.3649 17.01845 -2961.4399 17.128547 0
|
||||||
|
3900 309.34588 -4255.5213 -2977.1281 -2965.3649 17.01845 -2961.4399 17.128547 0
|
||||||
|
4000 305.79444 2358.1383 -2976.5251 -2965.9537 16.784519 -2962.6768 17.263037 0
|
||||||
|
4100 309.12957 -1401.6484 -2975.9173 -2965.9537 16.784519 -2962.6768 17.263037 0
|
||||||
|
4200 309.41928 1180.4111 -2975.3857 -2966.4277 16.516135 -2963.7417 17.280979 0
|
||||||
|
4300 299.88949 -1549.6591 -2974.927 -2966.4277 16.516135 -2963.7417 17.280979 0
|
||||||
|
4400 319.09918 1937.7006 -2974.5598 -2966.8138 16.232551 -2964.6345 17.192698 0
|
||||||
|
4500 326.48719 -1489.2073 -2974.311 -2966.8138 16.232551 -2964.6345 17.192698 0
|
||||||
|
4600 310.93392 37.586899 -2974.1959 -2967.1394 15.948448 -2965.3649 17.01845 0
|
||||||
|
4700 314.28994 317.12347 -2974.1763 -2967.1394 15.948448 -2965.3649 17.01845 0
|
||||||
|
4800 309.88756 -698.72705 -2974.2892 -2967.4334 15.675606 -2965.9537 16.784519 0
|
||||||
|
4900 309.53444 962.42921 -2974.5261 -2967.4334 15.675606 -2965.9537 16.784519 0
|
||||||
|
5000 316.06666 -1869.3275 -2974.8492 -2967.7182 15.421633 -2966.4277 16.516135 0
|
||||||
|
5100 304.82485 4042.6797 -2975.2715 -2967.7182 15.421633 -2966.4277 16.516135 0
|
||||||
|
5200 307.75342 -5058.4814 -2975.7195 -2969.5853 13.236776 -2966.8138 16.232551 0
|
||||||
|
5300 298.83511 3096.4566 -2976.3329 -2969.5853 13.236776 -2966.8138 16.232551 0
|
||||||
|
5400 296.85413 -1929.1654 -2976.8797 -2971.2747 11.121537 -2967.1394 15.948448 0
|
||||||
|
5500 295.88343 1449.3005 -2977.4488 -2971.2747 11.121537 -2967.1394 15.948448 0
|
||||||
|
5600 305.59328 -1504.0321 -2977.9573 -2972.77 9.1579616 -2967.4334 15.675606 0
|
||||||
|
5700 293.40683 2579.0134 -2978.4364 -2972.77 9.1579616 -2967.4334 15.675606 0
|
||||||
|
5800 297.93644 -2742.705 -2978.8276 -2974.0625 7.4101102 -2967.7182 15.421633 0
|
||||||
|
5900 290.39408 1189.4042 -2979.2224 -2974.0625 7.4101102 -2967.7182 15.421633 0
|
||||||
|
6000 293.73148 -232.54292 -2979.503 -2975.1594 5.8959922 -2969.5853 13.236776 0
|
||||||
|
6100 292.04933 -168.30971 -2979.6898 -2975.1594 5.8959922 -2969.5853 13.236776 0
|
||||||
|
6200 299.23747 839.17828 -2979.7883 -2976.0647 4.6378408 -2971.2747 11.121537 0
|
||||||
|
6300 294.92201 -1597.9426 -2979.7975 -2976.0647 4.6378408 -2971.2747 11.121537 0
|
||||||
|
6400 291.7185 3411.2916 -2979.6978 -2976.7848 3.643826 -2972.77 9.1579616 0
|
||||||
|
6500 285.34227 -4280.7968 -2979.4874 -2976.7848 3.643826 -2972.77 9.1579616 0
|
||||||
|
6600 295.53838 2138.7496 -2979.2799 -2977.3265 2.9178925 -2974.0625 7.4101102 0
|
||||||
|
6700 288.54718 -1818.7662 -2978.9379 -2977.3265 2.9178925 -2974.0625 7.4101102 0
|
||||||
|
6800 290.41342 2175.3559 -2978.543 -2977.7009 2.4532223 -2975.1594 5.8959922 0
|
||||||
|
6900 296.34456 -4782.08 -2978.0362 -2977.7009 2.4532223 -2975.1594 5.8959922 0
|
||||||
|
7000 303.74314 5905.219 -2977.577 -2977.9137 2.2279716 -2976.0647 4.6378408 0
|
||||||
|
7100 303.90284 -3291.7627 -2977.1308 -2977.9137 2.2279716 -2976.0647 4.6378408 0
|
||||||
|
7200 296.13966 2209.574 -2976.7001 -2977.9829 2.1708943 -2976.7848 3.643826 0
|
||||||
|
7300 295.79694 -1609.1898 -2976.2816 -2977.9829 2.1708943 -2976.7848 3.643826 0
|
||||||
|
7400 306.53289 988.50902 -2975.8992 -2977.931 2.1935882 -2977.3265 2.9178925 0
|
||||||
|
7500 303.89992 -631.22838 -2975.5597 -2977.931 2.1935882 -2977.3265 2.9178925 0
|
||||||
|
7600 303.83684 -348.48744 -2975.3074 -2977.7831 2.2226664 -2977.7009 2.4532223 0
|
||||||
|
7700 309.67313 1350.9414 -2975.1279 -2977.7831 2.2226664 -2977.7009 2.4532223 0
|
||||||
|
7800 309.74314 -1182.8905 -2975.0174 -2977.5683 2.2106484 -2977.9137 2.2279716 0
|
||||||
|
7900 309.42429 999.08033 -2975.0089 -2977.5683 2.2106484 -2977.9137 2.2279716 0
|
||||||
|
8000 315.51872 -1337.8894 -2975.0791 -2977.3233 2.1379295 -2977.9829 2.1708943 0
|
||||||
|
8100 314.80533 2392.3424 -2975.25 -2977.3233 2.1379295 -2977.9829 2.1708943 0
|
||||||
|
8200 303.80236 -3224.5976 -2975.4744 -2977.0851 2.0176342 -2977.931 2.1935882 0
|
||||||
|
8300 295.0505 3296.6912 -2975.8196 -2977.0851 2.0176342 -2977.931 2.1935882 0
|
||||||
|
8400 302.4154 -3314.5096 -2976.1586 -2976.8877 1.883051 -2977.7831 2.2226664 1
|
||||||
|
8500 300.95491 2971.1291 -2976.5859 -2976.8877 1.883051 -2977.7831 2.2226664 1
|
||||||
|
8600 301.68919 -2297.6673 -2976.9953 -2976.7596 1.785401 -2977.5683 2.2106484 1
|
||||||
|
8700 291.21002 1477.5703 -2977.4323 -2976.7596 1.785401 -2977.5683 2.2106484 1
|
||||||
|
8800 305.87126 -1085.459 -2977.8247 -2976.7169 1.7541517 -2977.3233 2.1379295 1
|
||||||
|
8900 296.17567 777.95805 -2978.2081 -2976.7169 1.7541517 -2977.3233 2.1379295 1
|
||||||
|
Fix halt condition for fix-id 3 met on step 9000 with value 1 (src/fix_halt.cpp:310)
|
||||||
|
9000 295.71917 -425.00708 -2978.5264 -2976.7595 1.7755885 -2977.0851 2.0176342 1
|
||||||
|
Loop time of 42.1758 on 1 procs for 9000 steps with 864 atoms
|
||||||
|
|
||||||
|
Performance: 36.874 ns/day, 0.651 hours/ns, 213.393 timesteps/s, 184.371 katom-step/s
|
||||||
|
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 41.126 | 41.126 | 41.126 | 0.0 | 97.51
|
||||||
|
Neigh | 0.0078787 | 0.0078787 | 0.0078787 | 0.0 | 0.02
|
||||||
|
Comm | 0.26508 | 0.26508 | 0.26508 | 0.0 | 0.63
|
||||||
|
Output | 0.0096224 | 0.0096224 | 0.0096224 | 0.0 | 0.02
|
||||||
|
Modify | 0.65597 | 0.65597 | 0.65597 | 0.0 | 1.56
|
||||||
|
Other | | 0.1108 | | | 0.26
|
||||||
|
|
||||||
|
Nlocal: 864 ave 864 max 864 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 3767 ave 3767 max 3767 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 96746 ave 96746 max 96746 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 96746
|
||||||
|
Ave neighs/atom = 111.97454
|
||||||
|
Neighbor list builds = 1
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:42
|
||||||
171
examples/PACKAGES/moments/log.02May2025.converge.g++.4
Normal file
171
examples/PACKAGES/moments/log.02May2025.converge.g++.4
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
LAMMPS (2 Apr 2025 - Development - patch_4Feb2025-645-gba166d42e1-modified)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
Created 864 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 0.2000000000000000111
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 10 500 200 v_toteng mean stddev history 5
|
||||||
|
|
||||||
|
variable conv equal "(f_2[2] < 2) && (f_2[2][1] < f_2[2][5])"
|
||||||
|
fix 3 all halt 1000 v_conv == 1
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal f_2[*][1] f_2[*][5] v_conv
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
run 10000
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 8.6825
|
||||||
|
ghost atom cutoff = 8.6825
|
||||||
|
binsize = 4.34125, bins = 6 6 6
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair eam/alloy, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.42 | 3.42 | 3.42 Mbytes
|
||||||
|
Step Temp Press TotEng f_2[1][1] f_2[2][1] f_2[1][5] f_2[2][5] v_conv
|
||||||
|
0 1000 -107410.22 -2884.9159 0 0 0 0 0
|
||||||
|
100 492.38014 -134.33622 -2928.6874 0 0 0 0 0
|
||||||
|
200 484.82396 -214.26318 -2931.4603 -2928.6979 2.1805063 0 0 0
|
||||||
|
300 476.69743 15.78678 -2934.0022 -2928.6979 2.1805063 0 0 0
|
||||||
|
400 482.51415 141.67184 -2936.9347 -2931.4437 3.3715811 0 0 0
|
||||||
|
500 455.45411 2.4424602 -2939.9649 -2931.4437 3.3715811 0 0 0
|
||||||
|
600 455.20054 -6.8170934 -2943.0454 -2934.339 5.0598781 0 0 0
|
||||||
|
700 429.81168 -75.812923 -2946.0438 -2934.339 5.0598781 0 0 0
|
||||||
|
800 428.22097 604.18705 -2948.9285 -2937.2965 6.813037 0 0 0
|
||||||
|
900 399.10914 -3622.6904 -2951.7252 -2937.2965 6.813037 0 0 0
|
||||||
|
1000 394.62543 7905.9041 -2954.2925 -2940.2044 8.4668749 -2928.6979 2.1805063 0
|
||||||
|
1100 404.27007 -2565.5508 -2956.9736 -2940.2044 8.4668749 -2928.6979 2.1805063 0
|
||||||
|
1200 368.47178 741.43707 -2959.4264 -2943.0151 9.9914785 -2931.4437 3.3715811 0
|
||||||
|
1300 360.91266 -267.08372 -2961.69 -2943.0151 9.9914785 -2931.4437 3.3715811 0
|
||||||
|
1400 356.74405 158.09093 -2963.8501 -2945.696 11.36357 -2934.339 5.0598781 0
|
||||||
|
1500 335.45696 -71.007783 -2965.8817 -2945.696 11.36357 -2934.339 5.0598781 0
|
||||||
|
1600 331.01199 -454.90004 -2967.7708 -2948.2278 12.577884 -2937.2965 6.813037 0
|
||||||
|
1700 329.223 2428.4284 -2969.5452 -2948.2278 12.577884 -2937.2965 6.813037 0
|
||||||
|
1800 327.61481 -4757.648 -2971.1105 -2950.5985 13.632251 -2940.2044 8.4668749 0
|
||||||
|
1900 318.18741 2226.7765 -2972.6906 -2950.5985 13.632251 -2940.2044 8.4668749 0
|
||||||
|
2000 308.79313 -1089.8603 -2974.0899 -2952.8123 14.545164 -2943.0151 9.9914785 0
|
||||||
|
2100 303.32047 757.53534 -2975.3597 -2952.8123 14.545164 -2943.0151 9.9914785 0
|
||||||
|
2200 307.41102 -837.97246 -2976.4966 -2954.8654 15.317558 -2945.696 11.36357 0
|
||||||
|
2300 303.01088 1618.29 -2977.5454 -2954.8654 15.317558 -2945.696 11.36357 0
|
||||||
|
2400 297.59385 -3233.8282 -2978.4064 -2956.7565 15.953758 -2948.2278 12.577884 0
|
||||||
|
2500 288.72232 5209.2099 -2979.1999 -2956.7565 15.953758 -2948.2278 12.577884 0
|
||||||
|
2600 298.92201 -2193.618 -2979.8873 -2958.4845 16.457635 -2950.5985 13.632251 0
|
||||||
|
2700 282.61818 765.88178 -2980.4563 -2958.4845 16.457635 -2950.5985 13.632251 0
|
||||||
|
2800 273.63104 -389.49749 -2980.8636 -2960.0533 16.839029 -2952.8123 14.545164 0
|
||||||
|
2900 274.12166 -9.2552992 -2981.1421 -2960.0533 16.839029 -2952.8123 14.545164 0
|
||||||
|
3000 279.43592 212.25445 -2981.2716 -2961.4578 17.096628 -2954.8654 15.317558 0
|
||||||
|
3100 291.10071 -1139.205 -2981.2475 -2961.4578 17.096628 -2954.8654 15.317558 0
|
||||||
|
3200 281.53171 3124.6411 -2981.0818 -2962.6921 17.230604 -2956.7565 15.953758 0
|
||||||
|
3300 277.0223 -2795.9494 -2980.7825 -2962.6921 17.230604 -2956.7565 15.953758 0
|
||||||
|
3400 284.8443 1587.8876 -2980.3701 -2963.754 17.247489 -2958.4845 16.457635 0
|
||||||
|
3500 281.19 -1143.0785 -2979.8374 -2963.754 17.247489 -2958.4845 16.457635 0
|
||||||
|
3600 296.58287 1156.4706 -2979.2182 -2964.645 17.159411 -2960.0533 16.839029 0
|
||||||
|
3700 297.24517 -1888.4993 -2978.5352 -2964.645 17.159411 -2960.0533 16.839029 0
|
||||||
|
3800 290.81586 3843.3483 -2977.8509 -2965.3746 16.985916 -2961.4578 17.096628 0
|
||||||
|
3900 300.39456 -5584.8386 -2977.0837 -2965.3746 16.985916 -2961.4578 17.096628 0
|
||||||
|
4000 306.15811 3310.0105 -2976.5086 -2965.9619 16.752214 -2962.6921 17.230604 0
|
||||||
|
4100 295.907 -1475.0458 -2975.9096 -2965.9619 16.752214 -2962.6921 17.230604 0
|
||||||
|
4200 322.70162 933.76586 -2975.3867 -2966.4348 16.484219 -2963.754 17.247489 0
|
||||||
|
4300 306.69631 -512.7048 -2974.9324 -2966.4348 16.484219 -2963.754 17.247489 0
|
||||||
|
4400 309.23776 226.77219 -2974.5791 -2966.8208 16.201471 -2964.645 17.159411 0
|
||||||
|
4500 313.15783 508.29785 -2974.3263 -2966.8208 16.201471 -2964.645 17.159411 0
|
||||||
|
4600 316.26151 -2043.7571 -2974.1697 -2967.1463 15.918137 -2965.3746 16.985916 0
|
||||||
|
4700 312.27329 1831.682 -2974.1732 -2967.1463 15.918137 -2965.3746 16.985916 0
|
||||||
|
4800 307.61066 -1476.0019 -2974.2885 -2967.4397 15.645834 -2965.9619 16.752214 0
|
||||||
|
4900 305.73489 1303.4848 -2974.5506 -2967.4397 15.645834 -2965.9619 16.752214 0
|
||||||
|
5000 309.3774 -1574.6812 -2974.8687 -2967.7249 15.392787 -2966.4348 16.484219 0
|
||||||
|
5100 304.8602 2679.7476 -2975.3082 -2967.7249 15.392787 -2966.4348 16.484219 0
|
||||||
|
5200 297.54226 -5008.0905 -2975.7443 -2969.5904 13.211657 -2966.8208 16.201471 0
|
||||||
|
5300 306.18872 4840.4175 -2976.324 -2969.5904 13.211657 -2966.8208 16.201471 0
|
||||||
|
5400 299.57661 -2513.1706 -2976.8842 -2971.2774 11.099846 -2967.1463 15.918137 0
|
||||||
|
5500 302.30844 1301.3525 -2977.4539 -2971.2774 11.099846 -2967.1463 15.918137 0
|
||||||
|
5600 302.11038 -760.79712 -2977.9764 -2972.7712 9.1381778 -2967.4397 15.645834 0
|
||||||
|
5700 294.49825 718.67318 -2978.4584 -2972.7712 9.1381778 -2967.4397 15.645834 0
|
||||||
|
5800 305.97636 -478.64224 -2978.8638 -2974.0628 7.3929182 -2967.7249 15.392787 0
|
||||||
|
5900 291.93868 -419.74179 -2979.2292 -2974.0628 7.3929182 -2967.7249 15.392787 0
|
||||||
|
6000 289.50667 859.85085 -2979.5018 -2975.1575 5.8837236 -2969.5904 13.211657 0
|
||||||
|
6100 305.70118 -933.35917 -2979.6877 -2975.1575 5.8837236 -2969.5904 13.211657 0
|
||||||
|
6200 284.37805 1526.0707 -2979.806 -2976.062 4.6281363 -2971.2774 11.099846 0
|
||||||
|
6300 291.08863 -2156.6708 -2979.8064 -2976.062 4.6281363 -2971.2774 11.099846 0
|
||||||
|
6400 295.99073 2819.8245 -2979.7378 -2976.7827 3.6358684 -2972.7712 9.1381778 0
|
||||||
|
6500 298.06769 -3396.3504 -2979.5428 -2976.7827 3.6358684 -2972.7712 9.1381778 0
|
||||||
|
6600 301.78514 5496.6525 -2979.2768 -2977.3261 2.9112079 -2974.0628 7.3929182 0
|
||||||
|
6700 290.80665 -5229.4989 -2978.9177 -2977.3261 2.9112079 -2974.0628 7.3929182 0
|
||||||
|
6800 296.75761 2401.7807 -2978.5996 -2977.7014 2.4473856 -2975.1575 5.8837236 0
|
||||||
|
6900 295.77553 -1521.6269 -2978.1619 -2977.7014 2.4473856 -2975.1575 5.8837236 0
|
||||||
|
7000 303.59015 1530.7255 -2977.7097 -2977.9176 2.2219164 -2976.062 4.6281363 0
|
||||||
|
7100 297.51038 -3016.4426 -2977.2025 -2977.9176 2.2219164 -2976.062 4.6281363 0
|
||||||
|
7200 293.53789 2705.9808 -2976.7651 -2977.9894 2.1638143 -2976.7827 3.6358684 0
|
||||||
|
7300 301.78809 -1042.1076 -2976.3388 -2977.9894 2.1638143 -2976.7827 3.6358684 0
|
||||||
|
7400 307.50053 214.56923 -2975.9581 -2977.9394 2.1852009 -2977.3261 2.9112079 0
|
||||||
|
7500 301.98985 281.86495 -2975.6146 -2977.9394 2.1852009 -2977.3261 2.9112079 0
|
||||||
|
7600 318.37347 -1145.7795 -2975.3473 -2977.7949 2.2136707 -2977.7014 2.4473856 0
|
||||||
|
7700 314.94512 4536.9887 -2975.1351 -2977.7949 2.2136707 -2977.7014 2.4473856 0
|
||||||
|
7800 312.91485 -2980.6408 -2975.0156 -2977.5818 2.2038198 -2977.9176 2.2219164 0
|
||||||
|
7900 310.06854 2244.3877 -2975.0094 -2977.5818 2.2038198 -2977.9176 2.2219164 0
|
||||||
|
8000 308.55007 -2427.1464 -2975.0491 -2977.3378 2.1348358 -2977.9894 2.1638143 0
|
||||||
|
8100 323.02796 3187.4728 -2975.2081 -2977.3378 2.1348358 -2977.9894 2.1638143 0
|
||||||
|
8200 327.05029 -6447.7875 -2975.3162 -2977.0986 2.0196599 -2977.9394 2.1852009 0
|
||||||
|
8300 311.194 4273.1174 -2975.7217 -2977.0986 2.0196599 -2977.9394 2.1852009 0
|
||||||
|
8400 290.61931 -2301.019 -2976.0963 -2976.8989 1.8918948 -2977.7949 2.2136707 1
|
||||||
|
8500 314.00559 1966.1297 -2976.5206 -2976.8989 1.8918948 -2977.7949 2.2136707 1
|
||||||
|
8600 288.26541 -1608.4524 -2976.9304 -2976.7685 1.7971228 -2977.5818 2.2038198 1
|
||||||
|
8700 298.92083 1353.9988 -2977.355 -2976.7685 1.7971228 -2977.5818 2.2038198 1
|
||||||
|
8800 299.97274 -638.68301 -2977.766 -2976.722 1.7650747 -2977.3378 2.1348358 1
|
||||||
|
8900 300.66443 -279.62514 -2978.1476 -2976.722 1.7650747 -2977.3378 2.1348358 1
|
||||||
|
Fix halt condition for fix-id 3 met on step 9000 with value 1 (src/fix_halt.cpp:310)
|
||||||
|
9000 290.44715 489.06352 -2978.4892 -2976.7631 1.7846181 -2977.0986 2.0196599 1
|
||||||
|
Loop time of 14.7347 on 4 procs for 9000 steps with 864 atoms
|
||||||
|
|
||||||
|
Performance: 105.547 ns/day, 0.227 hours/ns, 610.804 timesteps/s, 527.735 katom-step/s
|
||||||
|
92.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 10.565 | 11.474 | 12.015 | 16.1 | 77.87
|
||||||
|
Neigh | 0.0020313 | 0.0020966 | 0.002163 | 0.1 | 0.01
|
||||||
|
Comm | 2.008 | 2.5374 | 3.4278 | 33.5 | 17.22
|
||||||
|
Output | 0.0030284 | 0.0036299 | 0.0051776 | 1.5 | 0.02
|
||||||
|
Modify | 0.42442 | 0.43307 | 0.44329 | 1.0 | 2.94
|
||||||
|
Other | | 0.2849 | | | 1.93
|
||||||
|
|
||||||
|
Nlocal: 216 ave 224 max 204 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 2 0 1
|
||||||
|
Nghost: 2147 ave 2159 max 2139 min
|
||||||
|
Histogram: 1 0 0 2 0 0 0 0 0 1
|
||||||
|
Neighs: 24185.8 ave 26045 max 21309 min
|
||||||
|
Histogram: 1 0 0 0 0 1 0 0 0 2
|
||||||
|
|
||||||
|
Total # of neighbors = 96743
|
||||||
|
Ave neighs/atom = 111.97106
|
||||||
|
Neighbor list builds = 1
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:14
|
||||||
177
examples/PACKAGES/moments/log.02May2025.simple.g++.1
Normal file
177
examples/PACKAGES/moments/log.02May2025.simple.g++.1
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
LAMMPS (2 Apr 2025 - Development - patch_4Feb2025-645-gba166d42e1-modified)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
Created 864 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 0.2000000000000000111
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 5 200 100 v_toteng mean stddev variance skew kurtosis
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal f_2[*]
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
run 10000
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 8.6825
|
||||||
|
ghost atom cutoff = 8.6825
|
||||||
|
binsize = 4.34125, bins = 6 6 6
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair eam/alloy, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.484 | 3.484 | 3.484 Mbytes
|
||||||
|
Step Temp Press TotEng f_2[1] f_2[2] f_2[3] f_2[4] f_2[5]
|
||||||
|
0 1000 -107410.22 -2884.9159 0 0 0 0 0
|
||||||
|
100 512.04214 -124.66263 -2928.6 -2927.1688 1.6797138 2.8214386 2.5218138 6.164012
|
||||||
|
200 479.34328 -136.26635 -2931.3905 -2928.6374 1.9791406 3.9169976 1.3377745 3.2426285
|
||||||
|
300 480.05298 128.92946 -2933.9233 -2929.9825 2.5401119 6.4521682 0.66415393 0.77130236
|
||||||
|
400 471.83641 -29.253334 -2936.8631 -2931.346 3.2640831 10.654239 0.29075579 -0.26904542
|
||||||
|
500 456.96309 -274.69336 -2939.9081 -2932.7721 4.1077082 16.873267 0.094954709 -0.72240572
|
||||||
|
600 450.32413 14.606227 -2942.973 -2934.2328 4.9928765 24.928816 0.0090731063 -0.93757177
|
||||||
|
700 431.71192 -45.641261 -2946.006 -2935.7111 5.8871117 34.658084 -0.024573652 -1.0540107
|
||||||
|
800 436.4217 589.91981 -2948.8885 -2937.1871 6.762411 45.730202 -0.028553126 -1.1275153
|
||||||
|
900 407.84688 -3728.1499 -2951.6643 -2938.652 7.6129868 57.957569 -0.020186137 -1.172618
|
||||||
|
1000 401.69178 6695.3653 -2954.2959 -2940.0921 8.423174 70.949861 -0.0018224075 -1.2051609
|
||||||
|
1100 370.87469 -2294.843 -2956.9413 -2942.9469 8.384346 70.297257 0.016964628 -1.2643199
|
||||||
|
1200 375.15562 704.6568 -2959.3841 -2945.7589 8.3201293 69.224551 0.070500644 -1.2400262
|
||||||
|
1300 371.09077 -493.04016 -2961.6803 -2948.5516 8.1425118 66.300499 0.11183042 -1.2099873
|
||||||
|
1400 365.88512 490.98174 -2963.8365 -2951.2897 7.8673969 61.895934 0.13639588 -1.198071
|
||||||
|
1500 358.42655 -218.94911 -2965.8652 -2953.9337 7.5491659 56.989906 0.15564307 -1.1896984
|
||||||
|
1600 329.08402 56.411923 -2967.7662 -2956.467 7.2016413 51.863637 0.17198437 -1.186472
|
||||||
|
1700 317.74207 1192.918 -2969.557 -2958.8765 6.8379658 46.757776 0.19041811 -1.1812241
|
||||||
|
1800 331.98966 -2205.7213 -2971.1465 -2961.1601 6.4614065 41.749774 0.20925197 -1.1714131
|
||||||
|
1900 330.96814 1401.3066 -2972.6923 -2963.3191 6.0867317 37.048302 0.22552163 -1.1523125
|
||||||
|
2000 315.41816 -909.41909 -2974.0785 -2965.3567 5.7020261 32.513101 0.2328316 -1.1454375
|
||||||
|
2100 320.4269 1226.2006 -2975.3676 -2967.2609 5.3260556 28.366869 0.24130517 -1.1432352
|
||||||
|
2200 302.88235 -1238.8052 -2976.5099 -2969.0355 4.9584282 24.58601 0.25200271 -1.141699
|
||||||
|
2300 300.4349 2667.202 -2977.5329 -2970.6815 4.5986371 21.147463 0.26764984 -1.1380521
|
||||||
|
2400 292.94691 -5532.1854 -2978.3724 -2972.201 4.2403749 17.980779 0.28797864 -1.1357902
|
||||||
|
2500 286.12064 4647.3841 -2979.2217 -2973.5946 3.8875889 15.113348 0.31556585 -1.1249025
|
||||||
|
2600 290.74305 -1950.526 -2979.9142 -2974.8686 3.5422986 12.547879 0.34719546 -1.0987558
|
||||||
|
2700 281.51347 937.60472 -2980.4808 -2976.0235 3.1955646 10.211633 0.38268676 -1.0664838
|
||||||
|
2800 279.71836 -801.62498 -2980.8899 -2977.0588 2.844105 8.0889331 0.41930147 -1.0460672
|
||||||
|
2900 277.41241 609.21495 -2981.1721 -2977.9673 2.4956133 6.2280855 0.47337432 -1.0140054
|
||||||
|
3000 281.31161 -760.27203 -2981.3003 -2978.7489 2.1466012 4.6078967 0.55325134 -0.95161956
|
||||||
|
3100 284.72904 315.53038 -2981.297 -2979.4023 1.7929581 3.2146986 0.66481771 -0.84726207
|
||||||
|
3200 278.39445 516.25074 -2981.1224 -2979.9226 1.4369984 2.0649644 0.82583409 -0.63830994
|
||||||
|
3300 294.46998 -655.06212 -2980.8266 -2980.3134 1.0905211 1.1892364 1.0357766 -0.22841943
|
||||||
|
3400 290.04647 788.30424 -2980.3963 -2980.5732 0.77030961 0.59337689 1.1867647 0.34447355
|
||||||
|
3500 283.218 -844.33188 -2979.8504 -2980.6995 0.54590076 0.29800764 0.78163948 -0.42619888
|
||||||
|
3600 288.76031 1339.2734 -2979.2382 -2980.6921 0.56032295 0.31396181 0.83603869 -0.30853278
|
||||||
|
3700 289.44519 -3015.7161 -2978.5394 -2980.5581 0.77708069 0.60385439 1.0796997 -0.022962365
|
||||||
|
3800 309.04206 5579.3265 -2977.8282 -2980.3052 1.0531468 1.1091181 0.890018 -0.56034495
|
||||||
|
3900 309.34588 -4255.5213 -2977.1281 -2979.9487 1.3153981 1.7302721 0.65242676 -0.95498589
|
||||||
|
4000 305.79444 2358.1383 -2976.5251 -2979.5068 1.5325477 2.3487025 0.44420123 -1.1839975
|
||||||
|
4100 309.12957 -1401.6484 -2975.9173 -2978.9985 1.6923829 2.86416 0.26850538 -1.3006942
|
||||||
|
4200 309.41928 1180.4111 -2975.3857 -2978.4446 1.7941259 3.2188877 0.11443933 -1.3365167
|
||||||
|
4300 299.88949 -1549.6591 -2974.927 -2977.8616 1.8268192 3.3372683 -0.018659059 -1.3293426
|
||||||
|
4400 319.09918 1937.7006 -2974.5598 -2977.273 1.7942266 3.219249 -0.13743367 -1.2958767
|
||||||
|
4500 326.48719 -1489.2073 -2974.311 -2976.7017 1.7042328 2.9044096 -0.25309558 -1.2385503
|
||||||
|
4600 310.93392 37.586899 -2974.1959 -2976.1697 1.5590672 2.4306905 -0.3757949 -1.1641151
|
||||||
|
4700 314.28994 317.12347 -2974.1763 -2975.6978 1.3661244 1.8662958 -0.51792367 -1.0609001
|
||||||
|
4800 309.88756 -698.72705 -2974.2892 -2975.3021 1.1422822 1.3048085 -0.69587053 -0.87319738
|
||||||
|
4900 309.53444 962.42921 -2974.5261 -2974.9944 0.89961859 0.80931361 -0.91892105 -0.49661907
|
||||||
|
5000 316.06666 -1869.3275 -2974.8492 -2974.7804 0.65817496 0.43319428 -1.0974595 0.048447651
|
||||||
|
5100 304.82485 4042.6797 -2975.2715 -2974.6661 0.47073268 0.22158926 -0.82059377 -0.31531887
|
||||||
|
5200 307.75342 -5058.4814 -2975.7195 -2974.6547 0.44733518 0.20010876 -0.68956594 -0.65171579
|
||||||
|
5300 298.83511 3096.4566 -2976.3329 -2974.7467 0.60599527 0.36723026 -1.0652601 0.032591262
|
||||||
|
5400 296.85413 -1929.1654 -2976.8797 -2974.9367 0.82832935 0.68612952 -0.91576774 -0.50322222
|
||||||
|
5500 295.88343 1449.3005 -2977.4488 -2975.215 1.044317 1.090598 -0.67574925 -0.92510515
|
||||||
|
5600 305.59328 -1504.0321 -2977.9573 -2975.5653 1.2243609 1.4990595 -0.46160433 -1.1708115
|
||||||
|
5700 293.40683 2579.0134 -2978.4364 -2975.97 1.3577316 1.843435 -0.27746111 -1.2993802
|
||||||
|
5800 297.93644 -2742.705 -2978.8276 -2976.411 1.4332742 2.054275 -0.11245859 -1.3584974
|
||||||
|
5900 290.39408 1189.4042 -2979.2224 -2976.8733 1.4576633 2.1247823 0.030209056 -1.3466833
|
||||||
|
6000 293.73148 -232.54292 -2979.503 -2977.3408 1.4300816 2.0451335 0.15663025 -1.2965878
|
||||||
|
6100 292.04933 -168.30971 -2979.6898 -2977.7936 1.3523929 1.8289665 0.28027258 -1.2214523
|
||||||
|
6200 299.23747 839.17828 -2979.7883 -2978.2154 1.2284868 1.5091798 0.40149929 -1.1382373
|
||||||
|
6300 294.92201 -1597.9426 -2979.7975 -2978.589 1.072002 1.1491883 0.53769821 -1.0262094
|
||||||
|
6400 291.7185 3411.2916 -2979.6978 -2978.9013 0.89165749 0.79505308 0.70748196 -0.83601078
|
||||||
|
6500 285.34227 -4280.7968 -2979.4874 -2979.1407 0.69727552 0.48619315 0.91500724 -0.4890805
|
||||||
|
6600 295.53838 2138.7496 -2979.2799 -2979.3084 0.50938648 0.25947459 1.0827149 -0.0043801382
|
||||||
|
6700 288.54718 -1818.7662 -2978.9379 -2979.3979 0.3658125 0.13381879 0.85573626 -0.20104653
|
||||||
|
6800 290.41342 2175.3559 -2978.543 -2979.4085 0.34439248 0.11860618 0.70989241 -0.55138716
|
||||||
|
6900 296.34456 -4782.08 -2978.0362 -2979.3362 0.47081063 0.22166265 1.1051059 0.16381282
|
||||||
|
7000 303.74314 5905.219 -2977.577 -2979.182 0.65635739 0.43080502 0.97456755 -0.34269231
|
||||||
|
7100 303.90284 -3291.7627 -2977.1308 -2978.9595 0.83412944 0.69577192 0.71973637 -0.85687335
|
||||||
|
7200 296.13966 2209.574 -2976.7001 -2978.6767 0.98885368 0.97783159 0.50554418 -1.124705
|
||||||
|
7300 295.79694 -1609.1898 -2976.2816 -2978.3446 1.1093729 1.2307082 0.32952142 -1.2657581
|
||||||
|
7400 306.53289 988.50902 -2975.8992 -2977.977 1.1910167 1.4185209 0.17936365 -1.331845
|
||||||
|
7500 303.89992 -631.22838 -2975.5597 -2977.5901 1.2352698 1.5258915 0.033110856 -1.3362459
|
||||||
|
7600 303.83684 -348.48744 -2975.3074 -2977.1915 1.2312686 1.5160224 -0.094817417 -1.3063491
|
||||||
|
7700 309.67313 1350.9414 -2975.1279 -2976.7984 1.1829266 1.3993154 -0.21343083 -1.2573517
|
||||||
|
7800 309.74314 -1182.8905 -2975.0174 -2976.4294 1.0913021 1.1909402 -0.3401118 -1.198459
|
||||||
|
7900 309.42429 999.08033 -2975.0089 -2976.0995 0.96393318 0.92916717 -0.48456322 -1.1149956
|
||||||
|
8000 315.51872 -1337.8894 -2975.0791 -2975.822 0.81535467 0.66480324 -0.67906685 -0.90499956
|
||||||
|
8100 314.80533 2392.3424 -2975.25 -2975.6019 0.64582022 0.41708376 -0.90521871 -0.5328796
|
||||||
|
8200 303.80236 -3224.5976 -2975.4744 -2975.4481 0.47449379 0.22514436 -1.0884377 -0.00018150871
|
||||||
|
8300 295.0505 3296.6912 -2975.8196 -2975.3667 0.34164698 0.11672266 -0.83269043 -0.31809119
|
||||||
|
8400 302.4154 -3314.5096 -2976.1586 -2975.3606 0.32904826 0.10827276 -0.73500255 -0.57861735
|
||||||
|
8500 300.95491 2971.1291 -2976.5859 -2975.4288 0.44584452 0.19877734 -1.0760301 0.014924509
|
||||||
|
8600 301.68919 -2297.6673 -2976.9953 -2975.5682 0.60852433 0.37030186 -0.91802963 -0.5143582
|
||||||
|
8700 291.21002 1477.5703 -2977.4323 -2975.7733 0.76843347 0.59048999 -0.68059043 -0.92051715
|
||||||
|
8800 305.87126 -1085.459 -2977.8247 -2976.0327 0.90672273 0.82214612 -0.47413162 -1.1492716
|
||||||
|
8900 296.17567 777.95805 -2978.2081 -2976.3349 1.0129061 1.0259789 -0.29734681 -1.271416
|
||||||
|
9000 295.71917 -425.00708 -2978.5264 -2976.6672 1.0786137 1.1634075 -0.14055755 -1.3302079
|
||||||
|
9100 296.85578 -533.46289 -2978.8197 -2977.0152 1.1000855 1.2101882 0.0045950751 -1.3434868
|
||||||
|
9200 293.949 605.27065 -2979.0349 -2977.3702 1.0854405 1.1781811 0.123965 -1.3093197
|
||||||
|
9300 289.11704 -896.44753 -2979.1981 -2977.7166 1.0353526 1.071955 0.23898813 -1.2558296
|
||||||
|
9400 285.34521 1181.7542 -2979.2879 -2978.0404 0.95298596 0.90818224 0.36461645 -1.1736585
|
||||||
|
9500 296.17714 -2503.9848 -2979.2668 -2978.3301 0.8407037 0.70678272 0.50841734 -1.0540275
|
||||||
|
9600 296.43744 4912.6395 -2979.1829 -2978.5736 0.70352404 0.49494608 0.68312042 -0.86335848
|
||||||
|
9700 288.63317 -3935.8902 -2979.0381 -2978.7635 0.55322477 0.30605764 0.88509388 -0.54108379
|
||||||
|
9800 296.27133 1365.4106 -2978.8723 -2978.8969 0.40665162 0.16536554 1.0460992 -0.092552905
|
||||||
|
9900 299.37628 -1267.2668 -2978.5934 -2978.9673 0.29467695 0.086834506 0.80391757 -0.38307943
|
||||||
|
10000 296.60645 1950.1018 -2978.2725 -2978.9739 0.28169006 0.079349287 0.70171659 -0.62026504
|
||||||
|
Loop time of 47.4814 on 1 procs for 10000 steps with 864 atoms
|
||||||
|
|
||||||
|
Performance: 36.393 ns/day, 0.659 hours/ns, 210.609 timesteps/s, 181.966 katom-step/s
|
||||||
|
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 46.299 | 46.299 | 46.299 | 0.0 | 97.51
|
||||||
|
Neigh | 0.010908 | 0.010908 | 0.010908 | 0.0 | 0.02
|
||||||
|
Comm | 0.29643 | 0.29643 | 0.29643 | 0.0 | 0.62
|
||||||
|
Output | 0.0090682 | 0.0090682 | 0.0090682 | 0.0 | 0.02
|
||||||
|
Modify | 0.7406 | 0.7406 | 0.7406 | 0.0 | 1.56
|
||||||
|
Other | | 0.1254 | | | 0.26
|
||||||
|
|
||||||
|
Nlocal: 864 ave 864 max 864 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 3767 ave 3767 max 3767 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 96746 ave 96746 max 96746 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 96746
|
||||||
|
Ave neighs/atom = 111.97454
|
||||||
|
Neighbor list builds = 1
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:47
|
||||||
177
examples/PACKAGES/moments/log.02May2025.simple.g++.4
Normal file
177
examples/PACKAGES/moments/log.02May2025.simple.g++.4
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
LAMMPS (2 Apr 2025 - Development - patch_4Feb2025-645-gba166d42e1-modified)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
Created 864 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
create_atoms CPU = 0.010 seconds
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 0.2000000000000000111
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 5 200 100 v_toteng mean stddev variance skew kurtosis
|
||||||
|
|
||||||
|
thermo_style custom step temp press etotal f_2[*]
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
run 10000
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 8.6825
|
||||||
|
ghost atom cutoff = 8.6825
|
||||||
|
binsize = 4.34125, bins = 6 6 6
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair eam/alloy, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.42 | 3.42 | 3.42 Mbytes
|
||||||
|
Step Temp Press TotEng f_2[1] f_2[2] f_2[3] f_2[4] f_2[5]
|
||||||
|
0 1000 -107410.22 -2884.9159 0 0 0 0 0
|
||||||
|
100 492.38014 -134.33622 -2928.6874 -2927.2291 1.7092959 2.9216925 2.5081594 6.099781
|
||||||
|
200 484.82396 -214.26318 -2931.4603 -2928.71 2.0003214 4.0012857 1.3645049 3.3103886
|
||||||
|
300 476.69743 15.78678 -2934.0022 -2930.0515 2.5470901 6.4876682 0.6954232 0.86102766
|
||||||
|
400 482.51415 141.67184 -2936.9347 -2931.4152 3.2681043 10.680505 0.30641098 -0.22337036
|
||||||
|
500 455.45411 2.4424602 -2939.9649 -2932.8397 4.1076295 16.87262 0.10483325 -0.6997127
|
||||||
|
600 455.20054 -6.8170934 -2943.0454 -2934.2947 4.9842257 24.842506 0.018003661 -0.92490336
|
||||||
|
700 429.81168 -75.812923 -2946.0438 -2935.7704 5.8766819 34.53539 -0.019539731 -1.0444564
|
||||||
|
800 428.22097 604.18705 -2948.9285 -2937.2449 6.7522047 45.592268 -0.026384526 -1.1194924
|
||||||
|
900 399.10914 -3622.6904 -2951.7252 -2938.7094 7.6043904 57.826753 -0.019997758 -1.1658244
|
||||||
|
1000 394.62543 7905.9041 -2954.2925 -2940.15 8.4168551 70.84345 -0.0026187371 -1.2004009
|
||||||
|
1100 404.27007 -2565.5508 -2956.9736 -2943.0009 8.3722389 70.094384 0.015852037 -1.2665587
|
||||||
|
1200 368.47178 741.43707 -2959.4264 -2945.8091 8.3127243 69.101386 0.069744698 -1.2412651
|
||||||
|
1300 360.91266 -267.08372 -2961.69 -2948.5981 8.1334656 66.153263 0.1116445 -1.2129213
|
||||||
|
1400 356.74405 158.09093 -2963.8501 -2951.3302 7.8574973 61.740264 0.13825232 -1.1999727
|
||||||
|
1500 335.45696 -71.007783 -2965.8817 -2953.9689 7.5384846 56.82875 0.15915227 -1.1877331
|
||||||
|
1600 331.01199 -454.90004 -2967.7708 -2956.5 7.1862592 51.642321 0.17403957 -1.1840985
|
||||||
|
1700 329.223 2428.4284 -2969.5452 -2958.9073 6.8228029 46.55064 0.19027454 -1.1778276
|
||||||
|
1800 327.61481 -4757.648 -2971.1105 -2961.1863 6.4445074 41.531675 0.20819854 -1.1712539
|
||||||
|
1900 318.18741 2226.7765 -2972.6906 -2963.3396 6.0703365 36.848986 0.22378928 -1.1556732
|
||||||
|
2000 308.79313 -1089.8603 -2974.0899 -2965.3712 5.6913723 32.391718 0.23279863 -1.1445916
|
||||||
|
2100 303.32047 757.53534 -2975.3597 -2967.2741 5.3153102 28.252523 0.23857925 -1.1465858
|
||||||
|
2200 307.41102 -837.97246 -2976.4966 -2969.0433 4.9515105 24.517456 0.25216298 -1.1426077
|
||||||
|
2300 303.01088 1618.29 -2977.5454 -2970.6862 4.593227 21.097734 0.26914071 -1.1356519
|
||||||
|
2400 297.59385 -3233.8282 -2978.4064 -2972.2049 4.235209 17.936995 0.28804295 -1.1332908
|
||||||
|
2500 288.72232 5209.2099 -2979.1999 -2973.5963 3.8804647 15.058006 0.31533205 -1.1258312
|
||||||
|
2600 298.92201 -2193.618 -2979.8873 -2974.8649 3.5301507 12.461964 0.34927897 -1.1048024
|
||||||
|
2700 282.61818 765.88178 -2980.4563 -2976.0148 3.1852407 10.145758 0.3879755 -1.0655899
|
||||||
|
2800 273.63104 -389.49749 -2980.8636 -2977.0468 2.8322558 8.021673 0.4259426 -1.0370247
|
||||||
|
2900 274.12166 -9.2552992 -2981.1421 -2977.9525 2.4816703 6.1586877 0.47721359 -1.0061337
|
||||||
|
3000 279.43592 212.25445 -2981.2716 -2978.7309 2.1328425 4.5490171 0.5532015 -0.94983292
|
||||||
|
3100 291.10071 -1139.205 -2981.2475 -2979.3812 1.7828537 3.1785674 0.66452451 -0.83906914
|
||||||
|
3200 281.53171 3124.6411 -2981.0818 -2979.9003 1.4287164 2.0412304 0.81952022 -0.6386061
|
||||||
|
3300 277.0223 -2795.9494 -2980.7825 -2980.287 1.0830229 1.1729385 1.0186688 -0.26502454
|
||||||
|
3400 284.8443 1587.8876 -2980.3701 -2980.5435 0.76893619 0.59126286 1.1646672 0.27529682
|
||||||
|
3500 281.19 -1143.0785 -2979.8374 -2980.6693 0.54860209 0.30096426 0.79069857 -0.36626891
|
||||||
|
3600 296.58287 1156.4706 -2979.2182 -2980.6646 0.55745952 0.31076112 0.81914175 -0.31895116
|
||||||
|
3700 297.24517 -1888.4993 -2978.5352 -2980.5318 0.77195451 0.59591377 1.0713124 -0.027796216
|
||||||
|
3800 290.81586 3843.3483 -2977.8509 -2980.2819 1.0444771 1.0909324 0.88270245 -0.57339499
|
||||||
|
3900 300.39456 -5584.8386 -2977.0837 -2979.9273 1.3073719 1.7092212 0.65444496 -0.94023014
|
||||||
|
4000 306.15811 3310.0105 -2976.5086 -2979.4859 1.5269967 2.3317191 0.45120199 -1.1665402
|
||||||
|
4100 295.907 -1475.0458 -2975.9096 -2978.9779 1.6878413 2.8488082 0.27738537 -1.2909517
|
||||||
|
4200 322.70162 933.76586 -2975.3867 -2978.425 1.7872637 3.1943116 0.12322364 -1.3421568
|
||||||
|
4300 306.69631 -512.7048 -2974.9324 -2977.8465 1.8221493 3.3202281 -0.016769435 -1.3380921
|
||||||
|
4400 309.23776 226.77219 -2974.5791 -2977.2621 1.788532 3.1988469 -0.14279249 -1.3044784
|
||||||
|
4500 313.15783 508.29785 -2974.3263 -2976.6947 1.6959722 2.8763217 -0.26351575 -1.2425552
|
||||||
|
4600 316.26151 -2043.7571 -2974.1697 -2976.1635 1.5525328 2.4103582 -0.38443906 -1.156175
|
||||||
|
4700 312.27329 1831.682 -2974.1732 -2975.6917 1.3614048 1.8534231 -0.52504872 -1.0383081
|
||||||
|
4800 307.61066 -1476.0019 -2974.2885 -2975.296 1.1354139 1.2891647 -0.69734331 -0.84719677
|
||||||
|
4900 305.73489 1303.4848 -2974.5506 -2974.9905 0.8913743 0.79454814 -0.90609876 -0.50216921
|
||||||
|
5000 309.3774 -1574.6812 -2974.8687 -2974.7812 0.65272109 0.42604482 -1.0613188 0.00291608
|
||||||
|
5100 304.8602 2679.7476 -2975.3082 -2974.6718 0.4727141 0.22345862 -0.75321909 -0.42028824
|
||||||
|
5200 297.54226 -5008.0905 -2975.7443 -2974.6646 0.45797515 0.20974124 -0.66557441 -0.64583954
|
||||||
|
5300 306.18872 4840.4175 -2976.324 -2974.7575 0.61348896 0.3763687 -1.0084709 -0.10258503
|
||||||
|
5400 299.57661 -2513.1706 -2976.8842 -2974.9472 0.83376011 0.69515592 -0.88189118 -0.55222188
|
||||||
|
5500 302.30844 1301.3525 -2977.4539 -2975.2244 1.0486412 1.0996484 -0.65075151 -0.94687541
|
||||||
|
5600 302.11038 -760.79712 -2977.9764 -2975.5765 1.2259535 1.502962 -0.44510538 -1.1709493
|
||||||
|
5700 294.49825 718.67318 -2978.4584 -2975.9844 1.357155 1.8418697 -0.27309672 -1.2848748
|
||||||
|
5800 305.97636 -478.64224 -2978.8638 -2976.429 1.4331646 2.0539608 -0.1197893 -1.3417863
|
||||||
|
5900 291.93868 -419.74179 -2979.2292 -2976.8905 1.4535887 2.1129201 0.024018983 -1.349863
|
||||||
|
6000 289.50667 859.85085 -2979.5018 -2977.3557 1.4249736 2.0305497 0.15271261 -1.3095465
|
||||||
|
6100 305.70118 -933.35917 -2979.6877 -2977.8064 1.3480601 1.8172659 0.27785119 -1.2402584
|
||||||
|
6200 284.37805 1526.0707 -2979.806 -2978.2265 1.2296781 1.5121082 0.40681415 -1.1355005
|
||||||
|
6300 291.08863 -2156.6708 -2979.8064 -2978.6017 1.0733214 1.1520189 0.54137333 -1.0156432
|
||||||
|
6400 295.99073 2819.8245 -2979.7378 -2978.9165 0.8941904 0.79957647 0.7073501 -0.82385123
|
||||||
|
6500 298.06769 -3396.3504 -2979.5428 -2979.1626 0.70228297 0.49320137 0.91043588 -0.48653641
|
||||||
|
6600 301.78514 5496.6525 -2979.2768 -2979.3329 0.51276653 0.26292952 1.0681056 -0.036293782
|
||||||
|
6700 290.80665 -5229.4989 -2978.9177 -2979.4217 0.36990055 0.13682642 0.81466085 -0.37332419
|
||||||
|
6800 296.75761 2401.7807 -2978.5996 -2979.4338 0.34589164 0.11964103 0.65253856 -0.7737558
|
||||||
|
6900 295.77553 -1521.6269 -2978.1619 -2979.3685 0.46007271 0.21166689 1.0427138 -0.013014477
|
||||||
|
7000 303.59015 1530.7255 -2977.7097 -2979.225 0.63320287 0.40094588 0.93012255 -0.45527217
|
||||||
|
7100 297.51038 -3016.4426 -2977.2025 -2979.0103 0.81101521 0.65774567 0.7114444 -0.84465178
|
||||||
|
7200 293.53789 2705.9808 -2976.7651 -2978.7294 0.97512025 0.95085951 0.52979295 -1.0479526
|
||||||
|
7300 301.78809 -1042.1076 -2976.3388 -2978.3998 1.1024575 1.2154126 0.35564664 -1.2137023
|
||||||
|
7400 307.50053 214.56923 -2975.9581 -2978.0341 1.188001 1.4113463 0.20025025 -1.3077784
|
||||||
|
7500 301.98985 281.86495 -2975.6146 -2977.6451 1.2301918 1.5133718 0.063886193 -1.3465506
|
||||||
|
7600 318.37347 -1145.7795 -2975.3473 -2977.2486 1.2295055 1.5116837 -0.066939137 -1.3475567
|
||||||
|
7700 314.94512 4536.9887 -2975.1351 -2976.8564 1.1948121 1.427576 -0.19450637 -1.2864658
|
||||||
|
7800 312.91485 -2980.6408 -2975.0156 -2976.4828 1.1134406 1.2397499 -0.32749726 -1.207718
|
||||||
|
7900 310.06854 2244.3877 -2975.0094 -2976.1462 0.99080702 0.98169854 -0.48336959 -1.0840695
|
||||||
|
8000 308.55007 -2427.1464 -2975.0491 -2975.8566 0.83800849 0.70225823 -0.65822117 -0.89212512
|
||||||
|
8100 323.02796 3187.4728 -2975.2081 -2975.6251 0.66510054 0.44235872 -0.84857729 -0.62984027
|
||||||
|
8200 327.05029 -6447.7875 -2975.3162 -2975.4608 0.49730291 0.24731018 -1.0534735 -0.14095413
|
||||||
|
8300 311.194 4273.1174 -2975.7217 -2975.3642 0.35491458 0.12596436 -0.95967595 -0.04445204
|
||||||
|
8400 290.61931 -2301.019 -2976.0963 -2975.3446 0.31530296 0.09941596 -0.69056625 -0.72257435
|
||||||
|
8500 314.00559 1966.1297 -2976.5206 -2975.3995 0.41659574 0.17355201 -1.1134124 0.18107632
|
||||||
|
8600 288.26541 -1608.4524 -2976.9304 -2975.526 0.57968749 0.33603759 -1.0014591 -0.34698354
|
||||||
|
8700 298.92083 1353.9988 -2977.355 -2975.7203 0.74176087 0.55020919 -0.74109062 -0.86227705
|
||||||
|
8800 299.97274 -638.68301 -2977.766 -2975.9682 0.87950613 0.77353104 -0.50839929 -1.1555064
|
||||||
|
8900 300.66443 -279.62514 -2978.1476 -2976.262 0.99526406 0.99055054 -0.33059914 -1.261881
|
||||||
|
9000 290.44715 489.06352 -2978.4892 -2976.5918 1.0763797 1.1585932 -0.17871557 -1.3082755
|
||||||
|
9100 289.06733 -1063.4482 -2978.784 -2976.943 1.1174524 1.2486999 -0.037767225 -1.3120851
|
||||||
|
9200 297.63931 2664.6535 -2979.0202 -2977.3033 1.1127042 1.2381106 0.090936095 -1.2913777
|
||||||
|
9300 297.9983 -4684.428 -2979.1316 -2977.6563 1.0596342 1.1228247 0.20756305 -1.2867214
|
||||||
|
9400 285.14009 2779.1548 -2979.2804 -2977.9868 0.98034602 0.96107833 0.33668495 -1.2294268
|
||||||
|
9500 284.11569 -2437.5003 -2979.2918 -2978.2852 0.87286876 0.76189987 0.48407552 -1.1274969
|
||||||
|
9600 291.97193 2772.1396 -2979.2473 -2978.5402 0.74294711 0.55197041 0.67450455 -0.91152584
|
||||||
|
9700 292.59563 -3615.4496 -2979.0801 -2978.7442 0.59448857 0.35341666 0.91630006 -0.47180257
|
||||||
|
9800 296.1785 4869.2744 -2978.8849 -2978.891 0.43463281 0.18890568 1.1020846 0.093881572
|
||||||
|
9900 298.44745 -3587.7391 -2978.5978 -2978.9712 0.30680426 0.094128854 0.8532075 -0.19634913
|
||||||
|
10000 297.99863 1312.5643 -2978.3205 -2978.9854 0.27829395 0.077447522 0.60818263 -0.79004935
|
||||||
|
Loop time of 15.3108 on 4 procs for 10000 steps with 864 atoms
|
||||||
|
|
||||||
|
Performance: 112.862 ns/day, 0.213 hours/ns, 653.136 timesteps/s, 564.309 katom-step/s
|
||||||
|
92.4% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 11.428 | 12.158 | 12.621 | 13.0 | 79.41
|
||||||
|
Neigh | 0.0019158 | 0.0020708 | 0.002163 | 0.2 | 0.01
|
||||||
|
Comm | 1.936 | 2.3948 | 3.0967 | 28.3 | 15.64
|
||||||
|
Output | 0.0026067 | 0.0037308 | 0.0066123 | 2.7 | 0.02
|
||||||
|
Modify | 0.44688 | 0.45929 | 0.47131 | 1.6 | 3.00
|
||||||
|
Other | | 0.2928 | | | 1.91
|
||||||
|
|
||||||
|
Nlocal: 216 ave 224 max 204 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 2 0 1
|
||||||
|
Nghost: 2147 ave 2159 max 2139 min
|
||||||
|
Histogram: 1 0 0 2 0 0 0 0 0 1
|
||||||
|
Neighs: 24185.8 ave 26045 max 21309 min
|
||||||
|
Histogram: 1 0 0 0 0 1 0 0 0 2
|
||||||
|
|
||||||
|
Total # of neighbors = 96743
|
||||||
|
Ave neighs/atom = 111.97106
|
||||||
|
Neighbor list builds = 1
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:15
|
||||||
178
examples/PACKAGES/moments/log.02May2025.valtest.g++.1
Normal file
178
examples/PACKAGES/moments/log.02May2025.valtest.g++.1
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
LAMMPS (2 Apr 2025 - Development - patch_4Feb2025-645-gba166d42e1-modified)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
Created 864 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 0.2000000000000000111
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 1 10 10 v_toteng mean variance skew kurtosis
|
||||||
|
|
||||||
|
thermo_style custom step etotal f_2[*]
|
||||||
|
thermo_modify format float %14.8f
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 100
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 8.6825
|
||||||
|
ghost atom cutoff = 8.6825
|
||||||
|
binsize = 4.34125, bins = 6 6 6
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair eam/alloy, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.484 | 3.484 | 3.484 Mbytes
|
||||||
|
Step TotEng f_2[1] f_2[2] f_2[3] f_2[4]
|
||||||
|
0 -2884.91592826 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
1 -2888.74461907 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
2 -2898.78491936 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
3 -2910.70619667 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
4 -2919.41734302 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
5 -2923.24980175 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
6 -2923.79800148 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
7 -2922.97580252 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
8 -2921.95601941 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
9 -2921.45319499 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
10 -2921.81460149 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
11 -2923.00059466 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
12 -2924.63075671 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
13 -2926.18037946 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
14 -2927.22356281 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
15 -2927.62053073 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
16 -2927.49949128 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
17 -2927.12292174 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
18 -2926.73637250 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
19 -2926.49482990 -2915.29004998 148.32538381 1.60272422 1.50844200
|
||||||
|
20 -2926.44714720 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
21 -2926.56102718 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
22 -2926.76734347 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
23 -2926.98403044 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
24 -2927.15193693 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
25 -2927.24498540 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
26 -2927.26914121 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
27 -2927.25021402 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
28 -2927.21637817 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
29 -2927.19085616 -2926.29565870 2.07215006 1.62317861 2.37019300
|
||||||
|
30 -2927.18360687 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
31 -2927.19243579 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
32 -2927.20805612 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
33 -2927.22285606 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
34 -2927.23274852 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
35 -2927.23953263 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
36 -2927.24805761 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
37 -2927.26215638 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
38 -2927.28298252 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
39 -2927.31025065 -2927.08195198 0.05722486 1.54894969 1.44984748
|
||||||
|
40 -2927.33874897 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
41 -2927.36224413 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
42 -2927.37729800 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
43 -2927.38671916 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
44 -2927.39115082 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
45 -2927.39614318 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
46 -2927.40444730 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
47 -2927.41888601 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
48 -2927.43954388 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
49 -2927.46210058 -2927.25378252 0.00209108 -0.65432756 -0.21113798
|
||||||
|
50 -2927.48270024 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
51 -2927.49822500 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
52 -2927.50765361 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
53 -2927.51223225 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
54 -2927.51510653 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
55 -2927.52035921 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
56 -2927.53170012 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
57 -2927.54910408 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
58 -2927.57357292 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
59 -2927.60356966 -2927.41212333 0.00148630 -0.72914987 -0.39161968
|
||||||
|
60 -2927.63344447 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
61 -2927.66186165 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
62 -2927.68810360 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
63 -2927.71163480 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
64 -2927.73036225 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
65 -2927.74726656 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
66 -2927.76525638 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
67 -2927.78432762 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
68 -2927.80305095 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
69 -2927.82406714 -2927.54449679 0.00204640 -1.06571776 0.04430271
|
||||||
|
70 -2927.84622122 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
71 -2927.86886493 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
72 -2927.89150302 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
73 -2927.91480122 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
74 -2927.93739399 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
75 -2927.96075707 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
76 -2927.98525702 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
77 -2928.00918972 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
78 -2928.03266453 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
79 -2928.05673430 -2927.75621522 0.00356092 0.06232090 -0.94076248
|
||||||
|
80 -2928.08120268 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
81 -2928.10618717 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
82 -2928.13191751 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
83 -2928.15675025 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
84 -2928.18178044 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
85 -2928.20538210 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
86 -2928.22991006 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
87 -2928.25238345 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
88 -2928.27490378 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
89 -2928.29697980 -2927.97383685 0.00511363 -0.03242365 -1.20956903
|
||||||
|
90 -2928.31902032 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
91 -2928.34079951 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
92 -2928.36448072 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
93 -2928.38918869 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
94 -2928.41578734 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
95 -2928.44466633 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
96 -2928.47414034 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
97 -2928.50507273 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
98 -2928.53751007 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
99 -2928.56947939 -2928.21552149 0.00511983 0.08421866 -1.19120544
|
||||||
|
100 -2928.60000318 -2928.46411283 0.00779929 -0.14908790 -1.24292534
|
||||||
|
Loop time of 0.579661 on 1 procs for 100 steps with 864 atoms
|
||||||
|
|
||||||
|
Performance: 29.811 ns/day, 0.805 hours/ns, 172.515 timesteps/s, 149.053 katom-step/s
|
||||||
|
96.3% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0.54316 | 0.54316 | 0.54316 | 0.0 | 93.70
|
||||||
|
Neigh | 0.0041212 | 0.0041212 | 0.0041212 | 0.0 | 0.71
|
||||||
|
Comm | 0.0034702 | 0.0034702 | 0.0034702 | 0.0 | 0.60
|
||||||
|
Output | 0.014085 | 0.014085 | 0.014085 | 0.0 | 2.43
|
||||||
|
Modify | 0.01321 | 0.01321 | 0.01321 | 0.0 | 2.28
|
||||||
|
Other | | 0.001612 | | | 0.28
|
||||||
|
|
||||||
|
Nlocal: 864 ave 864 max 864 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 3767 ave 3767 max 3767 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 96746 ave 96746 max 96746 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 96746
|
||||||
|
Ave neighs/atom = 111.97454
|
||||||
|
Neighbor list builds = 1
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:00
|
||||||
178
examples/PACKAGES/moments/log.02May2025.valtest.g++.4
Normal file
178
examples/PACKAGES/moments/log.02May2025.valtest.g++.4
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
LAMMPS (2 Apr 2025 - Development - patch_4Feb2025-645-gba166d42e1-modified)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:99)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# create pure copper system
|
||||||
|
units metal
|
||||||
|
lattice fcc 3.75
|
||||||
|
Lattice spacing in x,y,z = 3.75 3.75 3.75
|
||||||
|
region box block 0 6 0 6 0 6
|
||||||
|
create_box 2 box
|
||||||
|
Created orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
1 by 2 by 2 MPI processor grid
|
||||||
|
|
||||||
|
timestep 0.002
|
||||||
|
create_atoms 1 box
|
||||||
|
Created 864 atoms
|
||||||
|
using lattice units in orthogonal box = (0 0 0) to (22.5 22.5 22.5)
|
||||||
|
create_atoms CPU = 0.001 seconds
|
||||||
|
|
||||||
|
pair_style eam/alloy
|
||||||
|
pair_coeff * * AlCu.eam.alloy Cu Al
|
||||||
|
|
||||||
|
# Initialize to a high temperature, then cool in npt ensemble
|
||||||
|
velocity all create 1000.0 6567345
|
||||||
|
fix 1 all npt temp 300.0 300.0 $(500*dt) iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 $(100*dt)
|
||||||
|
fix 1 all npt temp 300.0 300.0 1 iso 0.0 0.0 0.2000000000000000111
|
||||||
|
|
||||||
|
variable toteng equal "etotal"
|
||||||
|
fix 2 all ave/moments 1 10 10 v_toteng mean variance skew kurtosis
|
||||||
|
|
||||||
|
thermo_style custom step etotal f_2[*]
|
||||||
|
thermo_modify format float %14.8f
|
||||||
|
|
||||||
|
thermo 1
|
||||||
|
run 100
|
||||||
|
Neighbor list info ...
|
||||||
|
update: every = 1 steps, delay = 0 steps, check = yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 8.6825
|
||||||
|
ghost atom cutoff = 8.6825
|
||||||
|
binsize = 4.34125, bins = 6 6 6
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair eam/alloy, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 3.42 | 3.42 | 3.42 Mbytes
|
||||||
|
Step TotEng f_2[1] f_2[2] f_2[3] f_2[4]
|
||||||
|
0 -2884.91592826 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
1 -2888.74473521 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
2 -2898.78463435 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
3 -2910.70366466 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
4 -2919.40999553 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
5 -2923.23570887 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
6 -2923.77707961 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
7 -2922.94386730 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
8 -2921.92251474 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
9 -2921.42476103 0.00000000 0.00000000 0.00000000 0.00000000
|
||||||
|
10 -2921.79501042 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
11 -2922.99498349 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
12 -2924.64023395 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
13 -2926.19980790 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
14 -2927.25022454 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
15 -2927.64953875 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
16 -2927.52804735 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
17 -2927.14916045 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
18 -2926.76078244 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
19 -2926.51878380 -2915.27419717 148.08574615 1.60354430 1.51194865
|
||||||
|
20 -2926.47129883 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
21 -2926.59030835 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
22 -2926.80121221 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
23 -2927.02526150 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
24 -2927.20079704 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
25 -2927.30192483 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
26 -2927.33194351 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
27 -2927.31647527 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
28 -2927.28391864 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
29 -2927.25821953 -2926.31628615 2.10313655 1.62594474 2.38000930
|
||||||
|
30 -2927.25085808 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
31 -2927.25723201 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
32 -2927.27197789 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
33 -2927.28667044 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
34 -2927.29879455 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
35 -2927.30701891 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
36 -2927.31785921 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
37 -2927.33272014 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
38 -2927.35282056 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
39 -2927.37849130 -2927.13609190 0.06387000 1.52055179 1.31247839
|
||||||
|
40 -2927.40448350 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
41 -2927.42423249 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
42 -2927.43769919 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
43 -2927.44493813 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
44 -2927.44923137 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
45 -2927.45439729 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
46 -2927.46365674 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
47 -2927.48173952 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
48 -2927.50371663 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
49 -2927.52750629 -2927.32080685 0.00219675 -0.52051260 -0.50322958
|
||||||
|
50 -2927.54872274 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
51 -2927.56277664 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
52 -2927.57050508 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
53 -2927.57241043 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
54 -2927.57517748 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
55 -2927.58161786 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
56 -2927.59393740 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
57 -2927.61367876 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
58 -2927.64096296 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
59 -2927.67356621 -2927.47358404 0.00168128 -0.79883601 -0.48497973
|
||||||
|
60 -2927.70625176 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
61 -2927.73673853 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
62 -2927.76292153 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
63 -2927.78541405 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
64 -2927.80292853 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
65 -2927.81988675 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
66 -2927.83680256 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
67 -2927.85379296 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
68 -2927.87418119 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
69 -2927.89451588 -2927.60908846 0.00241645 -1.10903745 0.07175615
|
||||||
|
70 -2927.91602570 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
71 -2927.93874793 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
72 -2927.96195498 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
73 -2927.98521535 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
74 -2928.01060565 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
75 -2928.03584561 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
76 -2928.06090892 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
77 -2928.08509438 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
78 -2928.11095399 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
79 -2928.13711339 -2927.82832077 0.00334657 0.04700770 -0.91589129
|
||||||
|
80 -2928.16413424 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
81 -2928.19005959 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
82 -2928.21654649 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
83 -2928.24249986 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
84 -2928.26861892 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
85 -2928.29480718 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
86 -2928.32144325 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
87 -2928.34727619 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
88 -2928.37131285 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
89 -2928.39531126 -2928.04905744 0.00575008 -0.05409710 -1.19501222
|
||||||
|
90 -2928.41739503 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
91 -2928.43978811 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
92 -2928.46316822 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
93 -2928.48654219 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
94 -2928.51132482 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
95 -2928.53938009 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
96 -2928.56852408 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
97 -2928.59814410 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
98 -2928.62787940 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
99 -2928.65853178 -2928.30652706 0.00595440 0.06693205 -1.24851322
|
||||||
|
100 -2928.68735978 -2928.55806426 0.00711607 -0.13829819 -1.25519738
|
||||||
|
Loop time of 0.327437 on 4 procs for 100 steps with 864 atoms
|
||||||
|
|
||||||
|
Performance: 52.774 ns/day, 0.455 hours/ns, 305.402 timesteps/s, 263.868 katom-step/s
|
||||||
|
91.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0.27213 | 0.27259 | 0.27312 | 0.1 | 83.25
|
||||||
|
Neigh | 0.00096945 | 0.0015991 | 0.0022533 | 1.5 | 0.49
|
||||||
|
Comm | 0.026726 | 0.027088 | 0.027516 | 0.2 | 8.27
|
||||||
|
Output | 0.0029839 | 0.0048706 | 0.0097487 | 4.0 | 1.49
|
||||||
|
Modify | 0.012374 | 0.016834 | 0.018623 | 2.0 | 5.14
|
||||||
|
Other | | 0.004455 | | | 1.36
|
||||||
|
|
||||||
|
Nlocal: 216 ave 224 max 204 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 2 0 1
|
||||||
|
Nghost: 2147 ave 2159 max 2139 min
|
||||||
|
Histogram: 1 0 0 2 0 0 0 0 0 1
|
||||||
|
Neighs: 24185.8 ave 26045 max 21309 min
|
||||||
|
Histogram: 1 0 0 0 0 1 0 0 0 2
|
||||||
|
|
||||||
|
Total # of neighbors = 96743
|
||||||
|
Ave neighs/atom = 111.97106
|
||||||
|
Neighbor list builds = 1
|
||||||
|
Dangerous builds = 0
|
||||||
|
|
||||||
|
Total wall time: 0:00:00
|
||||||
635
src/EXTRA-FIX/fix_ave_moments.cpp
Normal file
635
src/EXTRA-FIX/fix_ave_moments.cpp
Normal file
@ -0,0 +1,635 @@
|
|||||||
|
// clang-format off
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
certain rights in this software. This software is distributed under
|
||||||
|
the GNU General Public License.
|
||||||
|
|
||||||
|
See the README file in the top-level LAMMPS directory.
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Contributing author: Sebastian Huetter (OvGU)
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#include "fix_ave_moments.h"
|
||||||
|
|
||||||
|
#include "arg_info.h"
|
||||||
|
#include "compute.h"
|
||||||
|
#include "error.h"
|
||||||
|
#include "input.h"
|
||||||
|
#include "math_special.h"
|
||||||
|
#include "memory.h"
|
||||||
|
#include "modify.h"
|
||||||
|
#include "update.h"
|
||||||
|
#include "variable.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
using namespace LAMMPS_NS;
|
||||||
|
using namespace FixConst;
|
||||||
|
using MathSpecial::square;
|
||||||
|
using MathSpecial::cube;
|
||||||
|
|
||||||
|
enum { MEAN, STDDEV, VARIANCE, SKEW, KURTOSIS };
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
FixAveMoments::FixAveMoments(LAMMPS *lmp, int narg, char **arg) :
|
||||||
|
Fix(lmp, narg, arg), nvalues(0), result_list(nullptr), window_list(nullptr)
|
||||||
|
{
|
||||||
|
// this fix's data is always accessible (but might be meaningless)
|
||||||
|
global_freq = 1;
|
||||||
|
dynamic_group_allow = 1;
|
||||||
|
time_depend = 1;
|
||||||
|
|
||||||
|
// EXAMPLE:
|
||||||
|
// fix ID group-ID ave/moments Nevery Nrepeat Nfreq value1 ... valueN moment1 ... momentM keyword value ...
|
||||||
|
|
||||||
|
// the first six arguments are fixed & need at least one input and moment
|
||||||
|
const int nfixedargs = 6;
|
||||||
|
if (narg < nfixedargs + 2) utils::missing_cmd_args(FLERR, "fix ave/moments", error);
|
||||||
|
|
||||||
|
nevery = utils::inumeric(FLERR,arg[3],false,lmp);
|
||||||
|
nrepeat = utils::inumeric(FLERR,arg[4],false,lmp);
|
||||||
|
nfreq = utils::inumeric(FLERR,arg[5],false,lmp);
|
||||||
|
|
||||||
|
// scan values to count them
|
||||||
|
|
||||||
|
nvalues = 0;
|
||||||
|
// first input name is position after the fixed args
|
||||||
|
int iarg = nfixedargs;
|
||||||
|
while (iarg < narg) {
|
||||||
|
if (utils::strmatch(arg[iarg],"^[cfv]_")) {
|
||||||
|
nvalues++;
|
||||||
|
iarg++;
|
||||||
|
} else break;
|
||||||
|
}
|
||||||
|
if (nvalues == 0)
|
||||||
|
error->all(FLERR, nfixedargs,
|
||||||
|
"No values from computes, fixes, or variables used in fix ave/moments command");
|
||||||
|
|
||||||
|
// next, the moments
|
||||||
|
iarg = consume_moments(iarg, narg, arg);
|
||||||
|
if (moments.empty())
|
||||||
|
error->all(FLERR, nfixedargs,
|
||||||
|
"No values from computes, fixes, or variables used in fix ave/moments command");
|
||||||
|
|
||||||
|
// parse optional keywords which must follow the data
|
||||||
|
|
||||||
|
options(iarg,narg,arg);
|
||||||
|
|
||||||
|
// expand args if any have wildcard character "*"
|
||||||
|
// this can reset nvalues
|
||||||
|
|
||||||
|
int expand = 0;
|
||||||
|
char **earg;
|
||||||
|
int *amap = nullptr;
|
||||||
|
nvalues = utils::expand_args(FLERR, nvalues, &arg[nfixedargs], /* mode=scalar */ 0, earg, lmp, &amap);
|
||||||
|
|
||||||
|
if (earg != &arg[nfixedargs]) expand = 1;
|
||||||
|
arg = earg;
|
||||||
|
|
||||||
|
// parse values
|
||||||
|
|
||||||
|
values.clear();
|
||||||
|
for (int i = 0; i < nvalues; i++) {
|
||||||
|
ArgInfo argi(arg[i]);
|
||||||
|
|
||||||
|
value_t val;
|
||||||
|
val.keyword = arg[i];
|
||||||
|
val.which = argi.get_type();
|
||||||
|
|
||||||
|
val.argindex = argi.get_index1();
|
||||||
|
val.iarg = (expand ? amap[i] : i) + nfixedargs;
|
||||||
|
val.varlen = 0;
|
||||||
|
val.id = argi.get_name();
|
||||||
|
val.val.c = nullptr;
|
||||||
|
|
||||||
|
if ((val.which == ArgInfo::NONE) || (val.which == ArgInfo::UNKNOWN) || (argi.get_dim() > 1))
|
||||||
|
error->all(FLERR, val.iarg, "Invalid fix ave/moments argument: {}", arg[i]);
|
||||||
|
|
||||||
|
values.push_back(val);
|
||||||
|
}
|
||||||
|
if (nvalues != (int)values.size())
|
||||||
|
error->all(FLERR, Error::NOPOINTER,
|
||||||
|
"Could not parse value data consistently for fix ave/moments");
|
||||||
|
|
||||||
|
// setup and error check
|
||||||
|
// for fix inputs, check that fix frequency is acceptable
|
||||||
|
|
||||||
|
if (nevery <= 0) error->all(FLERR, 3, "Illegal fix ave/moments nevery value: {}", nevery);
|
||||||
|
if (nrepeat <= 0) error->all(FLERR, 4, "Illegal fix ave/moments nrepeat value: {}", nrepeat);
|
||||||
|
if (nfreq <= 0) error->all(FLERR, 5, "Illegal fix ave/moments nfreq value: {}", nfreq);
|
||||||
|
|
||||||
|
for (auto &val : values) {
|
||||||
|
switch (val.which) {
|
||||||
|
case ArgInfo::COMPUTE:
|
||||||
|
val.val.c = modify->get_compute_by_id(val.id);
|
||||||
|
if (!val.val.c)
|
||||||
|
error->all(FLERR, val.iarg, "Compute ID {} for fix ave/moments does not exist", val.id);
|
||||||
|
if (val.argindex == 0 && (val.val.c->scalar_flag == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments compute {} does not calculate a scalar", val.id);
|
||||||
|
if (val.argindex && (val.val.c->vector_flag == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments compute {} does not calculate a vector", val.id);
|
||||||
|
if (val.argindex && (val.argindex > val.val.c->size_vector) &&
|
||||||
|
(val.val.c->size_vector_variable == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments compute {} vector is accessed out-of-range{}",
|
||||||
|
val.id, utils::errorurl(20));
|
||||||
|
if (val.argindex && val.val.c->size_vector_variable) val.varlen = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::FIX:
|
||||||
|
val.val.f = modify->get_fix_by_id(val.id);
|
||||||
|
if (!val.val.f) error->all(FLERR,"Fix ID {} for fix ave/moments does not exist", val.id);
|
||||||
|
if ((val.argindex == 0) && (val.val.f->scalar_flag == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments fix {} does not calculate a scalar", val.id);
|
||||||
|
if (val.argindex && (val.val.f->vector_flag == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments fix {} does not calculate a vector", val.id);
|
||||||
|
if (val.argindex && (val.val.f->size_vector_variable))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments fix {} vector cannot be variable length", val.id);
|
||||||
|
if (val.argindex && (val.argindex > val.val.f->size_vector))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments fix {} vector is accessed out-of-range{}",
|
||||||
|
val.id, utils::errorurl(20));
|
||||||
|
if (nevery % val.val.f->global_freq)
|
||||||
|
error->all(FLERR, val.iarg, "Fix {} for fix ave/moments not computed at compatible time{}",
|
||||||
|
val.id, utils::errorurl(7));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::VARIABLE:
|
||||||
|
int ivariable = input->variable->find(val.id.c_str());
|
||||||
|
if (ivariable < 0)
|
||||||
|
error->all(FLERR, val.iarg, "Variable name {} for fix ave/moments does not exist", val.id);
|
||||||
|
if ((val.argindex == 0) && (input->variable->equalstyle(ivariable) == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments variable {} is not equal-style variable", val.id);
|
||||||
|
if ((val.argindex) && (input->variable->vectorstyle(ivariable) == 0))
|
||||||
|
error->all(FLERR, val.iarg, "Fix ave/moments variable {} is not vector-style variable",
|
||||||
|
val.id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if wildcard expansion occurred, free earg memory from expand_args()
|
||||||
|
// wait to do this until after file comment lines are printed
|
||||||
|
|
||||||
|
if (expand) {
|
||||||
|
for (int i = 0; i < nvalues; i++) delete[] earg[i];
|
||||||
|
memory->sfree(earg);
|
||||||
|
memory->sfree(amap);
|
||||||
|
}
|
||||||
|
|
||||||
|
// allocate memory for averaging
|
||||||
|
|
||||||
|
window_list = nullptr;
|
||||||
|
result_list = nullptr;
|
||||||
|
|
||||||
|
// one window of nvalues columns and nrepeat rows (=all scalars of one value are consecutive)
|
||||||
|
memory->create(window_list, nvalues, nrepeat, "ave/moments:window_list");
|
||||||
|
for (int i = 0; i < nvalues; i++)
|
||||||
|
for (int j = 0; j < nrepeat; j++)
|
||||||
|
window_list[i][j] = 0.0;
|
||||||
|
|
||||||
|
// this fix produces a global vector and array
|
||||||
|
|
||||||
|
vector_flag = 1;
|
||||||
|
size_vector = nvalues * moments.size();
|
||||||
|
array_flag = 1;
|
||||||
|
size_array_rows = size_vector;
|
||||||
|
size_array_cols = nhistory;
|
||||||
|
|
||||||
|
// produce nmoments outputs per value with nhistory depth
|
||||||
|
memory->create(result_list, nhistory, size_vector, "ave/moments:result_list");
|
||||||
|
for (int i = 0; i < nhistory; i++)
|
||||||
|
for (int j = 0; j < size_vector; j++)
|
||||||
|
result_list[i][j] = 0.0;
|
||||||
|
|
||||||
|
// intensive/extensive flags set by compute,fix,variable that produces value
|
||||||
|
|
||||||
|
extvector = -1;
|
||||||
|
extarray = -2;
|
||||||
|
extlist = new int[size_vector];
|
||||||
|
int extvalue = 0;
|
||||||
|
int i = 0;
|
||||||
|
for (auto &val : values) {
|
||||||
|
switch (val.which) {
|
||||||
|
case ArgInfo::COMPUTE:
|
||||||
|
if (val.argindex == 0) extvalue = val.val.c->extscalar;
|
||||||
|
else if (val.val.f->extvector >= 0) extvalue = val.val.c->extvector;
|
||||||
|
else extvalue = val.val.c->extlist[val.argindex-1];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::FIX:
|
||||||
|
if (val.argindex == 0) extvalue = val.val.f->extscalar;
|
||||||
|
else if (val.val.f->extvector >= 0) extvalue = val.val.f->extvector;
|
||||||
|
else extvalue = val.val.f->extlist[val.argindex-1];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::VARIABLE:
|
||||||
|
extvalue = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (extvalue == -1)
|
||||||
|
error->all(FLERR, Error::NOLASTLINE, "Fix ave/moments cannot set output array "
|
||||||
|
"intensive/extensive from these inputs");
|
||||||
|
if (extarray < -1) extarray = extvalue;
|
||||||
|
else if (extvalue != extarray)
|
||||||
|
error->all(FLERR, Error::NOLASTLINE, "Fix ave/moments cannot set output array "
|
||||||
|
"intensive/extensive from these inputs");
|
||||||
|
for (int j=0; j < (int)moments.size(); j++)
|
||||||
|
extlist[i + j] = extvalue;
|
||||||
|
i += moments.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
// initializations
|
||||||
|
|
||||||
|
iwindow = window_filled = 0;
|
||||||
|
iresult = 0;
|
||||||
|
|
||||||
|
// nvalid = next step on which end_of_step does something
|
||||||
|
// add nvalid to all computes that store invocation times
|
||||||
|
// since don't know a priori which are invoked by this fix
|
||||||
|
// once in end_of_step() can set timestep for ones actually invoked
|
||||||
|
|
||||||
|
nvalid_comp_next = -1;
|
||||||
|
nvalid = -1;
|
||||||
|
setnextvalid();
|
||||||
|
modify->addstep_compute_all(nvalid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
FixAveMoments::~FixAveMoments()
|
||||||
|
{
|
||||||
|
values.clear();
|
||||||
|
moments.clear();
|
||||||
|
delete[] extlist;
|
||||||
|
|
||||||
|
memory->destroy(window_list);
|
||||||
|
memory->destroy(result_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int FixAveMoments::setmask()
|
||||||
|
{
|
||||||
|
int mask = 0;
|
||||||
|
mask |= END_OF_STEP;
|
||||||
|
return mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::init()
|
||||||
|
{
|
||||||
|
// update indices/pointers for all computes,fixes,variables
|
||||||
|
|
||||||
|
for (auto &val : values) {
|
||||||
|
switch (val.which) {
|
||||||
|
case ArgInfo::COMPUTE:
|
||||||
|
val.val.c = modify->get_compute_by_id(val.id);
|
||||||
|
if (!val.val.c)
|
||||||
|
error->all(FLERR, Error::NOLASTLINE, "Compute ID {} for fix ave/moments does not exist",
|
||||||
|
val.id);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::FIX:
|
||||||
|
val.val.f = modify->get_fix_by_id(val.id);
|
||||||
|
if (!val.val.f)
|
||||||
|
error->all(FLERR, Error::NOLASTLINE, "Fix ID {} for fix ave/moments does not exist", val.id);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::VARIABLE:
|
||||||
|
val.val.v = input->variable->find(val.id.c_str());
|
||||||
|
if (val.val.v < 0)
|
||||||
|
error->all(FLERR, Error::NOLASTLINE, "Variable name {} for fix ave/moments does not exist",
|
||||||
|
val.id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// need to reset nvalid if nvalid < ntimestep b/c minimize was performed
|
||||||
|
|
||||||
|
if (nvalid < update->ntimestep) {
|
||||||
|
setnextvalid();
|
||||||
|
modify->addstep_compute_all(nvalid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
only does something if nvalid = current timestep
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::setup(int /*vflag*/)
|
||||||
|
{
|
||||||
|
end_of_step();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::end_of_step()
|
||||||
|
{
|
||||||
|
// skip if not step which requires doing something
|
||||||
|
|
||||||
|
bigint ntimestep = update->ntimestep;
|
||||||
|
if (ntimestep != nvalid) return;
|
||||||
|
|
||||||
|
// always take new values
|
||||||
|
append_values();
|
||||||
|
|
||||||
|
// if window boundary reached, do a compute, otherwise just schedule next take
|
||||||
|
if (ntimestep == nvalid_comp_next) {
|
||||||
|
update_results();
|
||||||
|
setnextvalid();
|
||||||
|
} else {
|
||||||
|
nvalid += nevery;
|
||||||
|
}
|
||||||
|
|
||||||
|
modify->addstep_compute(nvalid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
return scalar value
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
double FixAveMoments::compute_scalar()
|
||||||
|
{
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
return Ith vector value
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
double FixAveMoments::compute_vector(int i)
|
||||||
|
{
|
||||||
|
return compute_array(i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
return I,J array value
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
double FixAveMoments::compute_array(int i, int j)
|
||||||
|
{
|
||||||
|
if (i >= size_vector) return 0.0;
|
||||||
|
if (j >= nhistory) return 0.0;
|
||||||
|
// locate the j'th previous result in the ring buffer, relative to the
|
||||||
|
// row before iresult (the current insert cursor)
|
||||||
|
int row = (iresult - 1 - j + nhistory) % nhistory;
|
||||||
|
return result_list[row][i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
parse moment names
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int FixAveMoments::consume_moments(int iarg, int narg, char **arg)
|
||||||
|
{
|
||||||
|
moments.clear();
|
||||||
|
|
||||||
|
while (iarg < narg) {
|
||||||
|
if (strcmp(arg[iarg],"mean") == 0)
|
||||||
|
moments.push_back(MEAN);
|
||||||
|
else if (strcmp(arg[iarg],"stddev") == 0)
|
||||||
|
moments.push_back(STDDEV);
|
||||||
|
else if (strcmp(arg[iarg],"variance") == 0)
|
||||||
|
moments.push_back(VARIANCE);
|
||||||
|
else if (strcmp(arg[iarg],"skew") == 0)
|
||||||
|
moments.push_back(SKEW);
|
||||||
|
else if (strcmp(arg[iarg],"kurtosis") == 0)
|
||||||
|
moments.push_back(KURTOSIS);
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
iarg++;
|
||||||
|
}
|
||||||
|
return iarg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
parse optional args
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::options(int iarg, int narg, char **arg)
|
||||||
|
{
|
||||||
|
// option defaults
|
||||||
|
|
||||||
|
nhistory = 1;
|
||||||
|
startstep = 0;
|
||||||
|
|
||||||
|
// optional args
|
||||||
|
|
||||||
|
while (iarg < narg) {
|
||||||
|
if (strcmp(arg[iarg],"history") == 0) {
|
||||||
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/moments history", error);
|
||||||
|
nhistory = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||||
|
if (nhistory <= 0)
|
||||||
|
error->all(FLERR, iarg+2, "Illegal ave/moments history argument {}; must be > 0",
|
||||||
|
nhistory);
|
||||||
|
iarg += 2;
|
||||||
|
} else if (strcmp(arg[iarg],"start") == 0) {
|
||||||
|
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix ave/moments start", error);
|
||||||
|
startstep = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||||
|
iarg += 2;
|
||||||
|
} else error->all(FLERR,"Unknown fix ave/moments keyword {}", arg[iarg]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
return next timestep no earlier than `after`, rounded to next
|
||||||
|
multiple of freq
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
bigint next_after(const bigint ts, const bigint after, const int freq)
|
||||||
|
{
|
||||||
|
if (ts >= after) return ts;
|
||||||
|
return ts + ((after - ts) / freq + 1) * freq;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
calculate nvalid = next step on which end_of_step does something
|
||||||
|
this is either a step to take data
|
||||||
|
or a step to take and compute the values (nfreq multiple)
|
||||||
|
startstep is lower bound on nfreq multiple
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::setnextvalid()
|
||||||
|
{
|
||||||
|
bigint ntimestep = update->ntimestep;
|
||||||
|
|
||||||
|
if (nvalid_comp_next > ntimestep) {
|
||||||
|
// next window end boundary is still in the future, just increment
|
||||||
|
nvalid = ntimestep + nevery;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get next window end first
|
||||||
|
bigint next_comp = (ntimestep/nfreq)*nfreq + nfreq;
|
||||||
|
nvalid_comp_next = next_after(next_comp, startstep, nfreq);
|
||||||
|
|
||||||
|
// from there, calculate the first time we have to take a value
|
||||||
|
bigint ntake = nvalid_comp_next - static_cast<bigint>(nrepeat-1)*nevery;
|
||||||
|
nvalid = next_after(ntake, ntimestep, nevery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::get_values(std::vector<double>& scalars)
|
||||||
|
{
|
||||||
|
// accumulate results of computes,fixes,variables to local copy
|
||||||
|
int i = 0;
|
||||||
|
double scalar = 0.0;
|
||||||
|
for (auto &val : values) {
|
||||||
|
switch (val.which) {
|
||||||
|
case ArgInfo::COMPUTE:
|
||||||
|
// invoke compute if not previously invoked
|
||||||
|
// ensure no out-of-range access to variable-length compute vector
|
||||||
|
if (val.argindex == 0) {
|
||||||
|
if (!(val.val.c->invoked_flag & Compute::INVOKED_SCALAR)) {
|
||||||
|
val.val.c->compute_scalar();
|
||||||
|
val.val.c->invoked_flag |= Compute::INVOKED_SCALAR;
|
||||||
|
}
|
||||||
|
scalar = val.val.c->scalar;
|
||||||
|
} else {
|
||||||
|
if (!(val.val.c->invoked_flag & Compute::INVOKED_VECTOR)) {
|
||||||
|
val.val.c->compute_vector();
|
||||||
|
val.val.c->invoked_flag |= Compute::INVOKED_VECTOR;
|
||||||
|
}
|
||||||
|
if (val.varlen && (val.val.c->size_vector < val.argindex)) scalar = 0.0;
|
||||||
|
else scalar = val.val.c->vector[val.argindex-1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::FIX:
|
||||||
|
// access fix fields, guaranteed to be ready
|
||||||
|
if (val.argindex == 0)
|
||||||
|
scalar = val.val.f->compute_scalar();
|
||||||
|
else
|
||||||
|
scalar = val.val.f->compute_vector(val.argindex-1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArgInfo::VARIABLE:
|
||||||
|
// evaluate equal-style or vector-style variable
|
||||||
|
// if index exceeds vector length, use a zero value
|
||||||
|
// this can be useful if vector length is not known a priori
|
||||||
|
if (val.argindex == 0)
|
||||||
|
scalar = input->variable->compute_equal(val.val.v);
|
||||||
|
else {
|
||||||
|
double *varvec;
|
||||||
|
int nvec = input->variable->compute_vector(val.val.v,&varvec);
|
||||||
|
if (val.argindex > nvec) scalar = 0.0;
|
||||||
|
else scalar = varvec[val.argindex-1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
scalars[i] = scalar;
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void FixAveMoments::append_values()
|
||||||
|
{
|
||||||
|
// accumulate results of computes,fixes,variables to local copy
|
||||||
|
// compute/fix/variable may invoke computes so wrap with clear/add
|
||||||
|
|
||||||
|
modify->clearstep_compute();
|
||||||
|
|
||||||
|
std::vector<double> scalars(nvalues);
|
||||||
|
get_values(scalars);
|
||||||
|
|
||||||
|
// transpose for faster access later
|
||||||
|
for (int i=0; i<nvalues; i++) {
|
||||||
|
window_list[i][iwindow] = scalars[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (++iwindow >= nrepeat) {
|
||||||
|
window_filled = 1;
|
||||||
|
iwindow = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FixAveMoments::update_results()
|
||||||
|
{
|
||||||
|
const int count = window_filled ? nrepeat : iwindow;
|
||||||
|
// Delay until we can safely do all moments. Avoids branching in the hot loop.
|
||||||
|
if (count<3) return;
|
||||||
|
|
||||||
|
double *result = result_list[iresult];
|
||||||
|
|
||||||
|
// zero out previous values
|
||||||
|
|
||||||
|
for (int i = 0; i < size_vector; i++)
|
||||||
|
result[i] = 0.0;
|
||||||
|
|
||||||
|
const double inv_n = 1.0 / count;
|
||||||
|
const double fk2 = (double)count / (count - 1);
|
||||||
|
const double fk3 = square((double)count) / ((count - 1) * (count - 2));
|
||||||
|
const double np1_nm3 = (count+1.0)/(count-3.0);
|
||||||
|
const double _3_nm1_nm3 = 3.0 * (count-1.0)/(count-3.0);
|
||||||
|
|
||||||
|
// Each value is a series that can be processed individually
|
||||||
|
for (int i = 0; i < nvalues; i++) {
|
||||||
|
const double* series = window_list[i];
|
||||||
|
|
||||||
|
// first pass: mean
|
||||||
|
double mean = 0.0;
|
||||||
|
for (int j = 0; j<count; j++)
|
||||||
|
mean += series[j] * inv_n;
|
||||||
|
|
||||||
|
// second pass: calculate biased sample moments
|
||||||
|
double m2 = 0.0;
|
||||||
|
double m3 = 0.0;
|
||||||
|
double m4 = 0.0;
|
||||||
|
for (int j = 0; j<count; j++) {
|
||||||
|
const double dx = series[j] - mean;
|
||||||
|
double y = square(dx) * inv_n;
|
||||||
|
m2 += y;
|
||||||
|
y *= dx;
|
||||||
|
m3 += y;
|
||||||
|
y *= dx;
|
||||||
|
m4 += y;
|
||||||
|
}
|
||||||
|
// obtain unbiased cumulants as defined by Cramér and
|
||||||
|
// reported i.e. in https://doi.org/10.1111/1467-9884.00122
|
||||||
|
const double k2 = fk2 * m2;
|
||||||
|
const double k3 = fk3 * m3;
|
||||||
|
const double k4 = fk3 * (np1_nm3 * m4 - _3_nm1_nm3 * square(m2));
|
||||||
|
// corrected sample standard deviation
|
||||||
|
const double stddev = sqrt(k2);
|
||||||
|
// adjusted Fisher-Pearson standardized moment coefficient G1
|
||||||
|
const double G1 = k3 / cube(stddev);
|
||||||
|
// adjusted Fisher-Pearson standardized moment coefficient G2 (from unbiased cumulant)
|
||||||
|
const double G2 = k4 / square(k2);
|
||||||
|
|
||||||
|
// map to result array, starting at value interleave offset
|
||||||
|
double* rfirst = &result[i * moments.size()];
|
||||||
|
for (int j = 0; j < (int)moments.size(); j++) {
|
||||||
|
switch(moments[j]) {
|
||||||
|
case MEAN:
|
||||||
|
rfirst[j] = mean;
|
||||||
|
break;
|
||||||
|
case STDDEV:
|
||||||
|
rfirst[j] = stddev;
|
||||||
|
break;
|
||||||
|
case VARIANCE:
|
||||||
|
rfirst[j] = k2;
|
||||||
|
break;
|
||||||
|
case SKEW:
|
||||||
|
rfirst[j] = G1;
|
||||||
|
break;
|
||||||
|
case KURTOSIS:
|
||||||
|
rfirst[j] = G2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (++iresult >= nhistory)
|
||||||
|
iresult = 0;
|
||||||
|
}
|
||||||
78
src/EXTRA-FIX/fix_ave_moments.h
Normal file
78
src/EXTRA-FIX/fix_ave_moments.h
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/* -*- c++ -*- ----------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
https://www.lammps.org/, Sandia National Laboratories
|
||||||
|
LAMMPS development team: developers@lammps.org
|
||||||
|
|
||||||
|
Copyright (2003) Sandia Corporation. Under the terms of Contract
|
||||||
|
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
|
||||||
|
certain rights in this software. This software is distributed under
|
||||||
|
the GNU General Public License.
|
||||||
|
|
||||||
|
See the README file in the top-level LAMMPS directory.
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifdef FIX_CLASS
|
||||||
|
// clang-format off
|
||||||
|
FixStyle(ave/moments,FixAveMoments);
|
||||||
|
// clang-format on
|
||||||
|
#else
|
||||||
|
|
||||||
|
#ifndef LMP_FIX_AVE_MOMENTS_H
|
||||||
|
#define LMP_FIX_AVE_MOMENTS_H
|
||||||
|
|
||||||
|
#include "fix.h"
|
||||||
|
|
||||||
|
namespace LAMMPS_NS {
|
||||||
|
|
||||||
|
class FixAveMoments : public Fix {
|
||||||
|
public:
|
||||||
|
FixAveMoments(class LAMMPS *, int, char **);
|
||||||
|
~FixAveMoments() override;
|
||||||
|
int setmask() override;
|
||||||
|
void init() override;
|
||||||
|
void setup(int) override;
|
||||||
|
void end_of_step() override;
|
||||||
|
double compute_scalar() override;
|
||||||
|
double compute_vector(int) override;
|
||||||
|
double compute_array(int, int) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct value_t {
|
||||||
|
int which; // type of data: COMPUTE, FIX, VARIABLE
|
||||||
|
int argindex; // 1-based index if data is vector, else 0
|
||||||
|
int iarg; // argument index in original argument list
|
||||||
|
int varlen; // 1 if value is from variable-length compute
|
||||||
|
std::string id; // compute/fix/variable ID
|
||||||
|
std::string keyword; // column keyword in output
|
||||||
|
union {
|
||||||
|
class Compute *c;
|
||||||
|
class Fix *f;
|
||||||
|
int v;
|
||||||
|
} val;
|
||||||
|
};
|
||||||
|
std::vector<value_t> values;
|
||||||
|
std::vector<int> moments;
|
||||||
|
|
||||||
|
int nrepeat, nfreq;
|
||||||
|
int nvalues;
|
||||||
|
bigint nvalid, nvalid_comp_next;
|
||||||
|
|
||||||
|
int startstep;
|
||||||
|
|
||||||
|
int nhistory, iresult;
|
||||||
|
double **result_list;
|
||||||
|
|
||||||
|
int iwindow, window_filled;
|
||||||
|
double **window_list;
|
||||||
|
|
||||||
|
int consume_moments(int iarg, int narg, char **arg);
|
||||||
|
void options(int, int, char **);
|
||||||
|
void setnextvalid();
|
||||||
|
|
||||||
|
void get_values(std::vector<double>& scalars);
|
||||||
|
void append_values();
|
||||||
|
void update_results();
|
||||||
|
};
|
||||||
|
} // namespace LAMMPS_NS
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user