<p>Define a computation that calculates the mean-squared displacement
(MSD) of the group of atoms, including all effects due to atoms
passing thru periodic boundaries. For computation of the non-Gaussian
parameter of mean-squared displacement, see the <aclass="reference internal"href="compute_msd_nongauss.html"><spanclass="doc">compute msd/nongauss</span></a> command.</p>
<p>A vector of four quantites is calculated by this compute. The first 3
elements of the vector are the squared dx,dy,dz displacements, summed
and averaged over atoms in the group. The 4th element is the total
squared displacement, i.e. (dx*dx + dy*dy + dz*dz), summed and
averaged over atoms in the group.</p>
<p>The slope of the mean-squared displacement (MSD) versus time is
proportional to the diffusion coefficient of the diffusing atoms.</p>
<p>The displacement of an atom is from its reference position. This is
normally the original position at the time
the compute command was issued, unless the <em>average</em> keyword is set to <em>yes</em>.
The value of the displacement will be
0.0 for atoms not in the specified compute group.</p>
<p>If the <em>com</em> option is set to <em>yes</em> then the effect of any drift in
the center-of-mass of the group of atoms is subtracted out before the
displacment of each atom is calculated.</p>
<p>If the <em>average</em> option is set to <em>yes</em> then the reference position of
an atom is based on the average position of that atom, corrected for
center-of-mass motion if requested. The average position is a running
average over all previous calls to the compute, including the current
call. So on the first call it is current position, on the second call
it is the arithmetic average of the current position and the position
on the first call, and so on. Note that when using this option, the
precise value of the mean square displacement will depend on the
number of times the compute is called. So, for example, changing the
frequency of thermo output may change the computed displacement. Also,
the precise values will be changed if a single simulation is broken up
into two parts, using either multiple run commands or a restart
file. It only makes sense to use this option if the atoms are not
diffusing, so that their average positions relative to the center of
mass of the system are stationary. The most common case is crystalline
solids undergoing thermal motion.</p>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">Initial coordinates are stored in “unwrapped” form, by using the
image flags associated with each atom. See the <aclass="reference internal"href="dump.html"><spanclass="doc">dump custom</span></a> command for a discussion of “unwrapped” coordinates.
See the Atoms section of the <aclass="reference internal"href="read_data.html"><spanclass="doc">read_data</span></a> command for a
discussion of image flags and how they are set for each atom. You can
reset the image flags (e.g. to 0) before invoking this compute by
using the <aclass="reference internal"href="set.html"><spanclass="doc">set image</span></a> command.</p>
</div>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">If you want the quantities calculated by this compute to be
continuous when running from a <aclass="reference internal"href="read_restart.html"><spanclass="doc">restart file</span></a>, then
you should use the same ID for this compute, as in the original run.
This is so that the fix this compute creates to store per-atom
quantities will also have the same ID, and thus be initialized
correctly with atom reference positions from the restart file. When
<em>average</em> is set to yes, then the atom reference positions are
restored correctly, but not the number of samples used obtain them. As
a result, the reference positions from the restart file are combined
with subsequent positions as if they were from a single sample,
instead of many, which will change the values of msd somewhat.</p>
</div>
<p><strong>Output info:</strong></p>
<p>This compute calculates a global vector of length 4, which can be
accessed by indices 1-4 by any command that uses global vector values
from a compute as input. See <aclass="reference internal"href="Section_howto.html#howto-15"><spanclass="std std-ref">this section</span></a> for an overview of LAMMPS output
options.</p>
<p>The vector values are “intensive”. The vector values will be in
Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>.