Merge branch 'develop' into type-labels

This commit is contained in:
Axel Kohlmeyer
2022-09-09 16:31:38 -04:00
121 changed files with 51653 additions and 1544 deletions

View File

@ -6,10 +6,13 @@ else()
endif()
option(DOWNLOAD_MDI "Download and compile the MDI library instead of using an already installed one" ${DOWNLOAD_MDI_DEFAULT})
if(DOWNLOAD_MDI)
message(STATUS "MDI download requested - we will build our own")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.1.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "f9505fccd4c79301a619f6452dad4ad9" CACHE STRING "MD5 checksum for MDI tarball")
set(MDI_URL "https://github.com/MolSSI-MDI/MDI_Library/archive/v1.4.10.tar.gz" CACHE STRING "URL for MDI tarball")
set(MDI_MD5 "1c203b7fd462d9934834f643f09f3c06" CACHE STRING "MD5 checksum for MDI tarball")
mark_as_advanced(MDI_URL)
mark_as_advanced(MDI_MD5)
enable_language(C)

View File

@ -6,7 +6,7 @@ page. The accelerated styles take the same arguments and should
produce the same results, except for round-off and precision issues.
These accelerated styles are part of the GPU, INTEL, KOKKOS,
OPENMP and OPT packages, respectively. They are only enabled if
OPENMP, and OPT packages, respectively. They are only enabled if
LAMMPS was built with those packages. See the :doc:`Build package <Build_package>` page for more info.
You can specify the accelerated styles explicitly in your input script

View File

@ -55,24 +55,24 @@ dump command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dump ID group-ID style N file args
* ID = user-assigned name for the dump
* group-ID = ID of the group of atoms to be dumped
* style = *atom* or *atom/gz* or *atom/zstd* or *atom/mpiio* or *cfg* or *cfg/gz* or *cfg/zstd* or *cfg/mpiio* or *cfg/uef* or *custom* or *custom/gz* or *custom/zstd* or *custom/mpiio* or *dcd* or *h5md* or *image* or *local* or *local/gz* or *local/zstd* or *molfile* or *movie* or *netcdf* or *netcdf/mpiio* or *vtk* or *xtc* or *xyz* or *xyz/gz* or *xyz/zstd* or *xyz/mpiio* or *yaml*
* N = dump on timesteps which are a multiple of N
* style = *atom* or *atom/adios* or *atom/gz* or *atom/zstd* or *atom/mpiio* or *cfg* or *cfg/gz* or *cfg/zstd* or *cfg/mpiio* or *cfg/uef* or *custom* or *custom/gz* or *custom/zstd* or *custom/mpiio* or *custom/adios* or *dcd* or *h5md* or *image* or *local* or *local/gz* or *local/zstd* or *molfile* or *movie* or *netcdf* or *netcdf/mpiio* or *vtk* or *xtc* or *xyz* or *xyz/gz* or *xyz/zstd* or *xyz/mpiio* or *yaml*
* N = dump on timesteps which are multiples of N
* file = name of file to write dump info to
* args = list of arguments for a particular style
.. parsed-literal::
*atom* args = none
*atom/adios* args = none, discussed on :doc:`dump atom/adios <dump_adios>` page
*atom/gz* args = none
*atom/zstd* args = none
*atom/mpiio* args = none
*atom/adios* args = none, discussed on :doc:`dump atom/adios <dump_adios>` page
*cfg* args = same as *custom* args, see below
*cfg/gz* args = same as *custom* args, see below
*cfg/zstd* args = same as *custom* args, see below
@ -224,7 +224,7 @@ page for details.
The *atom/gz*, *cfg/gz*, *custom/gz*, *local/gz*, and *xyz/gz* styles
are identical in command syntax to the corresponding styles without
"gz", however, they generate compressed files using the zlib
"gz," however, they generate compressed files using the zlib
library. Thus the filename suffix ".gz" is mandatory. This is an
alternative approach to writing compressed files via a pipe, as done
by the regular dump styles, which may be required on clusters where
@ -288,13 +288,13 @@ where xlo,xhi are the maximum extents of the simulation box in the
:math:`x`-dimension, and similarly for :math:`y` and :math:`z`. The
"xx yy zz" terms are six characters that encode the style of boundary for each
of the six simulation box boundaries (xlo,xhi; ylo,yhi; and zlo,zhi). Each of
the six characters is either p (periodic), f (fixed), s (shrink wrap),
or m (shrink wrapped with a minimum value). See the
the six characters is one of *p* (periodic), *f* (fixed), *s* (shrink wrap),
or *m* (shrink wrapped with a minimum value). See the
:doc:`boundary <boundary>` command for details.
For triclinic simulation boxes (non-orthogonal), an orthogonal
bounding box which encloses the triclinic simulation box is output,
along with the 3 tilt factors (*xy*, *xz*, *yz*) of the triclinic box,
along with the three tilt factors (*xy*, *xz*, *yz*) of the triclinic box,
formatted as follows:
.. parsed-literal::
@ -333,8 +333,8 @@ added for each atom via dump_modify.
Style *custom* allows you to specify a list of atom attributes to be
written to the dump file for each atom. Possible attributes are
listed above and will appear in the order specified. You cannot
specify a quantity that is not defined for a particular simulation -
such as *q* for atom style *bond*, since that atom style does not
specify a quantity that is not defined for a particular simulation---such as
*q* for atom style *bond*, since that atom style does not
assign charges. Dumps occur at the very end of a timestep, so atom
attributes will include effects due to fixes that are applied during
the timestep. An explanation of the possible dump custom attributes
@ -575,7 +575,7 @@ files. You can use the ".bin" or ".lammpsbin" suffix described below in an
MPI-IO dump file; again this file will be written in parallel and have the
same binary format as if it were written without MPI-IO.
If the filename ends with ".bin" or ".lammpsbin", the dump file (or files, if
If the filename ends with ".bin" or ".lammpsbin," the dump file (or files, if
"\*" or "%" is also used) is written in binary format. A binary dump file
will be about the same size as a text version, but will typically
write out much faster. Of course, when post-processing, you will need
@ -584,7 +584,7 @@ write your own code to read the binary file. The format of the binary file can
be understood by looking at the :file:`tools/binary2txt.cpp` file. This option
is only available for the *atom* and *custom* styles.
If the filename ends with ".gz", the dump file (or files, if "\*" or "%"
If the filename ends with ".gz," the dump file (or files, if "\*" or "%"
is also used) is written in gzipped format. A gzipped dump file will be about
:math:`3\times` smaller than the text version, but will also take longer
to write. This option is not available for the *dcd* and *xtc* styles.
@ -692,8 +692,8 @@ of atom velocity and force and atomic charge.
There are several options for outputting atom coordinates. The *x*,
*y*, and *z* attributes write atom coordinates "unscaled," in the
appropriate distance :doc:`units <units>` (:math:`\mathrm{\mathring A}`,
:math:`\sigma`, etc.). Use *xs*, *ys*, *zs* if you want the coordinates
"scaled" to the box size, so that each value is 0.0 to 1.0. If the simulation
:math:`\sigma`, etc.). Use *xs*, *ys*, and *zs* if you want the coordinates
"scaled" to the box size so that each value is 0.0 to 1.0. If the simulation
box is triclinic (tilted), then all atom coords will still be between 0.0 and
1.0. The actual unscaled :math:`(x,y,z)` coordinate is
:math:`x_s a + y_s b + z_s c`, where :math:`(a,b,c)` are the non-orthogonal
@ -736,7 +736,7 @@ The *angmomx*, *angmomy*, and *angmomz* attributes are specific to
finite-size aspherical particles that have an angular momentum. Only
the *ellipsoid* atom style defines this quantity.
The *tqx*, *tqy*, *tqz* attributes are for finite-size particles that
The *tqx*, *tqy*, and *tqz* attributes are for finite-size particles that
can sustain a rotational torque due to interactions with other
particles.
@ -775,8 +775,8 @@ If *f_ID* is used as a attribute, then the per-atom vector calculated
by the fix is printed. If *f_ID[i]* is used, then :math:`i` must be in the
range from 1 to :math:`M`, which will print the :math:`i`\ th column of the
per-atom array with :math:`M` columns calculated by the fix. See the
discussion above for how :math:`i` can be specified with a wildcard asterisk to
effectively specify multiple values.
discussion above for how :math:`i` can be specified with a wildcard asterisk
to effectively specify multiple values.
The *v_name* attribute allows per-atom vectors calculated by a
:doc:`variable <variable>` to be output. The name in the attribute

View File

@ -10,10 +10,9 @@ dump custom/adios command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dump ID group-ID atom/adios N file.bp
dump ID group-ID custom/adios N file.bp args
* ID = user-assigned name for the dump
@ -21,7 +20,7 @@ Syntax
* adios = style of dump command (other styles *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page)
* N = dump every this many timesteps
* file.bp = name of file/stream to write to
* args = same options as in :doc:`\ *dump custom*\ <dump>` command
* args = same options as in :doc:`dump custom <dump>` command
Examples
""""""""
@ -35,10 +34,10 @@ Examples
Description
"""""""""""
Dump a snapshot of atom coordinates every N timesteps in the `ADIOS
<adios_>`_ based "BP" file format, or using different I/O solutions in
Dump a snapshot of atom coordinates every :math:`N` timesteps in the `ADIOS
<adios_>`_-based "BP" file format, or using different I/O solutions in
ADIOS, to a stream that can be read on-line by another program.
ADIOS-BP files are binary, portable and self-describing.
ADIOS-BP files are binary, portable, and self-describing.
.. _adios: https://github.com/ornladios/ADIOS2
@ -67,7 +66,7 @@ create a new file at each individual dump.
Restrictions
""""""""""""
The number of atoms per snapshot CAN change with the adios style.
The number of atoms per snapshot **can** change with the adios style.
When using the ADIOS tool 'bpls' to list the content of a .bp file,
bpls will print *__* for the size of the output table indicating that
its size is changing every step.

View File

@ -6,7 +6,7 @@ dump cfg/uef command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dump ID group-ID cfg/uef N file mass type xs ys zs args
@ -32,9 +32,8 @@ Description
This command is used to dump atomic coordinates in the
reference frame of the applied flow field when
:doc:`fix nvt/uef <fix_nh_uef>` or
:doc:`fix npt/uef <fix_nh_uef>` or is used. Only the atomic
coordinates and frame-invariant scalar quantities
:doc:`fix nvt/uef <fix_nh_uef>` or :doc:`fix npt/uef <fix_nh_uef>` is used.
Only the atomic coordinates and frame-invariant scalar quantities
will be in the flow frame. If velocities are selected
as output, for example, they will not be in the same
reference frame as the atomic positions.
@ -43,7 +42,8 @@ Restrictions
""""""""""""
This fix is part of the UEF package. It is only enabled if LAMMPS
was built with that package. See the :doc:`Build package <Build_package>` page for more info.
was built with that package. See the :doc:`Build package <Build_package>`
page for more info.
This command can only be used when :doc:`fix nvt/uef <fix_nh_uef>`
or :doc:`fix npt/uef <fix_nh_uef>` is active.

View File

@ -12,7 +12,7 @@ dump movie command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dump ID group-ID style N file color diameter keyword value ...
@ -28,7 +28,7 @@ Syntax
.. parsed-literal::
*atom* = yes/no = do or do not draw atoms
*atom* = *yes* or *no* = do or do not draw atoms
*adiam* size = numeric value for atom diameter (distance units)
*bond* values = color width = color and width of bonds
color = *atom* or *type* or *none*
@ -68,21 +68,20 @@ Syntax
*box* values = yes/no diam = draw outline of simulation box
yes/no = do or do not draw simulation box lines
diam = diameter of box lines as fraction of shortest box length
*axes* values = yes/no length diam = draw xyz axes
yes/no = do or do not draw xyz axes lines next to simulation box
*axes* values = axes length diam = draw xyz axes
axes = *yes* or *no = do or do not draw xyz axes lines next to simulation box
length = length of axes lines as fraction of respective box lengths
diam = diameter of axes lines as fraction of shortest box length
*subbox* values = yes/no diam = draw outline of processor sub-domains
yes/no = do or do not draw sub-domain lines
*subbox* values = lines diam = draw outline of processor sub-domains
lines = *yes* or *no* = do or do not draw sub-domain lines
diam = diameter of sub-domain lines as fraction of shortest box length
*shiny* value = sfactor = shinyness of spheres and cylinders
sfactor = shinyness of spheres and cylinders from 0.0 to 1.0
*ssao* value = yes/no seed dfactor = SSAO depth shading
yes/no = turn depth shading on/off
*ssao* value = shading seed dfactor = SSAO depth shading
shading = *yes* or *no* = turn depth shading on/off
seed = random # seed (positive integer)
dfactor = strength of shading from 0.0 to 1.0
.. _dump_modify_image:
dump_modify options for dump image/movie
@ -162,7 +161,7 @@ Examples
Description
"""""""""""
Dump a high-quality rendered image of the atom configuration every N
Dump a high-quality rendered image of the atom configuration every :math:`N`
timesteps and save the images either as a sequence of JPEG or PNG or
PPM files, or as a single movie file. The options for this command as
well as the :doc:`dump_modify <dump_modify>` command control what is
@ -179,7 +178,7 @@ has been run, using the :doc:`rerun <rerun>` command to read snapshots
from an existing dump file, and using these dump commands in the rerun
script to generate the images/movie.
Here are two sample images, rendered as 1024x1024 JPEG files.
Here are two sample images, rendered as :math:`1024\times 1024` JPEG files.
.. |dump1| image:: img/dump1.jpg
:width: 48%
@ -197,8 +196,8 @@ Only atoms in the specified group are rendered in the image. The
alter what atoms are included in the image.
The filename suffix determines whether a JPEG, PNG, or PPM file is
created with the *image* dump style. If the suffix is ".jpg" or
".jpeg", then a `JPEG format <jpeg_format_>`_ file is created, if the
suffix is ".png", then a `PNG format <png_format_>`_ is created, else
".jpeg," then a `JPEG format <jpeg_format_>`_ file is created, if the
suffix is ".png," then a `PNG format <png_format_>`_ is created, else
a `PPM (aka NETPBM) format <ppm_format_>`_ file is created.
The JPEG and PNG files are binary; PPM has a text mode header followed
by binary data. JPEG images have lossy compression, PNG has lossless
@ -232,22 +231,22 @@ details.
----------
Dumps are performed on timesteps that are a multiple of N (including
Dumps are performed on timesteps that are a multiple of :math:`N` (including
timestep 0) and on the last timestep of a minimization if the
minimization converges. Note that this means a dump will not be
performed on the initial timestep after the dump command is invoked,
if the current timestep is not a multiple of N. This behavior can be
if the current timestep is not a multiple of :math:`N`. This behavior can be
changed via the :doc:`dump_modify first <dump_modify>` command, which
can be useful if the dump command is invoked after a minimization
ended on an arbitrary timestep. N can be changed between runs by
ended on an arbitrary timestep. :math:`N` can be changed between runs by
using the :doc:`dump_modify every <dump_modify>` command.
Dump *image* filenames must contain a wildcard character "\*", so that
Dump *image* filenames must contain a wildcard character "\*" so that
one image file per snapshot is written. The "\*" character is replaced
with the timestep value. For example, tmp.dump.\*.jpg becomes
tmp.dump.0.jpg, tmp.dump.10000.jpg, tmp.dump.20000.jpg, etc. Note
that the :doc:`dump_modify pad <dump_modify>` command can be used to
insure all timestep numbers are the same length (e.g. 00010), which
insure all timestep numbers are the same length (e.g., 00010), which
can make it easier to convert a series of images into a movie in the
correct ordering.
@ -262,7 +261,7 @@ atoms rendered in the image. They can be any atom attribute defined
for the :doc:`dump custom <dump>` command, including *type* and
*element*\ . This includes per-atom quantities calculated by a
:doc:`compute <compute>`, :doc:`fix <fix>`, or :doc:`variable <variable>`,
which are prefixed by "c\_", "f\_", or "v\_" respectively. Note that the
which are prefixed by "c\_," "f\_," or "v\_," respectively. Note that the
*diameter* setting can be overridden with a numeric value applied to
all atoms by the optional *adiam* keyword.
@ -277,7 +276,7 @@ to colors is as follows:
* type 5 = aqua
* type 6 = cyan
and repeats itself for types > 6. This mapping can be changed by the
and repeats itself for types :math:`> 6`. This mapping can be changed by the
"dump_modify acolor" command, as described below.
If *type* is specified for the *diameter* setting then the diameter of
@ -298,18 +297,18 @@ and sizes used by the `AtomEye <atomeye_>`_ visualization package.
If other atom attributes are used for the *color* or *diameter*
settings, they are interpreted in the following way.
If "vx", for example, is used as the *color* setting, then the color
If "vx," for example, is used as the *color* setting, then the color
of the atom will depend on the x-component of its velocity. The
association of a per-atom value with a specific color is determined by
a "color map", which can be specified via the dump_modify command, as
a "color map," which can be specified via the dump_modify command, as
described below. The basic idea is that the atom-attribute will be
within a range of values, and every value within the range is mapped
to a specific color. Depending on how the color map is defined, that
mapping can take place via interpolation so that a value of -3.2 is
halfway between "red" and "blue", or discretely so that the value of
halfway between "red" and "blue," or discretely so that the value of
-3.2 is "orange".
If "vx", for example, is used as the *diameter* setting, then the atom
If "vx," for example, is used as the *diameter* setting, then the atom
will be rendered using the x-component of its velocity as the
diameter. If the per-atom value <= 0.0, them the atom will not be
drawn. Note that finite-size spherical particles, as defined by
@ -773,10 +772,11 @@ the number 5.0 would be used. But for a fractional map, the number
The *delta* setting must be specified for all styles, but is only used
for the sequential style; otherwise the value is ignored. It
specifies the bin size to use within the range for assigning
consecutive colors to. For example, if the range is from -10.0 to
10.0 and a *delta* of 1.0 is used, then 20 colors will be assigned to
the range. The first will be from -10.0 <= color1 < -9.0, then second
from -9.0 <= color2 < -8.0, etc.
consecutive colors to. For example, if the range is from :math:`-10.0` to
:math:`10.0` and a *delta* of :math:`1.0` is used, then 20 colors will be
assigned to the range. The first will be from
:math:`-10.0 \le \text{color1} < -9.0`, then second from
:math:`-9.0 \le color2 < -8.0`, etc.
The *N* setting is how many entries follow. The format of the entries
depends on whether the color map style is continuous, discrete or
@ -793,13 +793,13 @@ as absolute numbers or as fractions (0.0 to 1.0) of the range,
depending on the "a" or "f" in the style setting for the color map.
Here is how the entries are used to determine the color of an
individual atom, given the value X of its atom attribute. X will fall
between 2 of the entry values. The color of the atom is linearly
interpolated (in each of the RGB values) between the 2 colors
associated with those entries. For example, if X = -5.0 and the 2
surrounding entries are "red" at -10.0 and "blue" at 0.0, then the
atom's color will be halfway between "red" and "blue", which happens
to be "purple".
individual atom, given the value :math:`X` of its atom attribute.
:math:`X` will fall between 2 of the entry values. The color of the atom is
linearly interpolated (in each of the RGB values) between the 2 colors
associated with those entries. For example, if :math:`X = -5.0` and the two
surrounding entries are "red" at :math:`-10.0` and "blue" at :math:`0.0`,
then the atom's color will be halfway between "red" and "blue," which happens
to be "purple."
For discrete color maps, each entry has a *lo* and *hi* value and a
*color*\ . The *lo* and *hi* settings are either numbers within the
@ -864,20 +864,20 @@ The *bcolor* keyword can be used with the dump image command, with its
*bond* keyword, when its color setting is *type*, to set the color
that bonds of each type will be drawn in the image.
The specified *type* should be an integer from 1 to Nbondtypes = the
number of bond types. A wildcard asterisk can be used in place of or
The specified *type* should be an integer from 1 to :math:`N`, where :math:`N`
is the number of bond types. A wildcard asterisk can be used in place of or
in conjunction with the *type* argument to specify a range of bond
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N =
the number of bond types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N
types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
is the number of bond types, then an asterisk with no numerical values
means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n
(inclusive).
The specified *color* can be a single color which is any of the 140
pre-defined colors (see below) or a color name defined by the
dump_modify color option. Or it can be two or more colors separated
by a "/" character, e.g. red/green/blue. In the former case, that
by a "/" character (e.g., red/green/blue). In the former case, that
color is assigned to all the specified bond types. In the latter
case, the list of colors are assigned in a round-robin fashion to each
of the specified bond types.
@ -885,13 +885,13 @@ of the specified bond types.
----------
The *bdiam* keyword can be used with the dump image command, with its
*bond* keyword, when its diam setting is *type*, to set the diameter
*bond* keyword, when its *diam* setting is *type*, to set the diameter
that bonds of each type will be drawn in the image. The specified
*type* should be an integer from 1 to Nbondtypes. As with the
*bcolor* keyword, a wildcard asterisk can be used as part of the
*type* argument to specify a range of bond types. The specified
*diam* is the size in whatever distance :doc:`units <units>` you are
using, e.g. Angstroms.
using (e.g., Angstroms).
----------
@ -922,7 +922,7 @@ dump_modify color option.
----------
The *color* keyword allows definition of a new color name, in addition
to the 140-predefined colors (see below), and associates 3
to the 140-predefined colors (see below), and associates three
red/green/blue RGB values with that color name. The color name can
then be used with any other dump_modify keyword that takes a color
name as a value. The RGB values should each be floating point values
@ -959,15 +959,15 @@ PNG library.
To write *movie* dumps, you must use the -DLAMMPS_FFMPEG switch when
building LAMMPS and have the FFmpeg executable available on the
machine where LAMMPS is being run. Typically it's name is lowercase,
i.e. ffmpeg.
machine where LAMMPS is being run. Typically its name is lowercase
(i.e., "ffmpeg").
See the :doc:`Build settings <Build_settings>` page for details.
Note that since FFmpeg is run as an external program via a pipe,
LAMMPS has limited control over its execution and no knowledge about
errors and warnings printed by it. Those warnings and error messages
will be printed to the screen only. Due to the way image data is
will be printed to the screen only. Due to the way image data are
communicated to FFmpeg, it will often print the message
.. parsed-literal::
@ -976,7 +976,7 @@ communicated to FFmpeg, it will often print the message
which can be safely ignored. Other warnings
and errors have to be addressed according to the FFmpeg documentation.
One known issue is that certain movie file formats (e.g. MPEG level 1
One known issue is that certain movie file formats (e.g., MPEG level 1
and 2 format streams) have video bandwidth limits that can be crossed
when rendering too large of image sizes. Typical warnings look like
this:
@ -987,10 +987,9 @@ this:
[mpeg @ 0x98b5e0] buffer underflow st=0 bufi=281407 size=285018
[mpeg @ 0x98b5e0] buffer underflow st=0 bufi=283448 size=285018
In this case it is recommended to either reduce the size of the image
or encode in a different format that is also supported by your copy of
FFmpeg, and which does not have this limitation (e.g. .avi, .mkv,
mp4).
In this case it is recommended either to reduce the size of the image
or to encode in a different format that is also supported by your copy of
FFmpeg and which does not have this limitation (e.g., .avi, .mkv, mp4).
Related commands
""""""""""""""""

View File

@ -6,13 +6,13 @@ dump vtk command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dump ID group-ID vtk N file args
* ID = user-assigned name for the dump
* group-ID = ID of the group of atoms to be dumped
* vtk = style of dump command (other styles *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page)
* vtk = style of dump command (other styles such as *atom* or *cfg* or *dcd* or *xtc* or *xyz* or *local* or *custom* are discussed on the :doc:`dump <dump>` doc page)
* N = dump every this many timesteps
* file = name of file to write dump info to
* args = same as arguments for :doc:`dump_style custom <dump>`
@ -28,17 +28,18 @@ Examples
Description
"""""""""""
Dump a snapshot of atom quantities to one or more files every N
Dump a snapshot of atom quantities to one or more files every :math:`N`
timesteps in a format readable by the `VTK visualization toolkit <http://www.vtk.org>`_ or other visualization tools that use it,
e.g. `ParaView <http://www.paraview.org>`_. The timesteps on which dump
such as `ParaView <http://www.paraview.org>`_. The time steps on which dump
output is written can also be controlled by a variable; see the
:doc:`dump_modify every <dump_modify>` command for details.
This dump style is similar to :doc:`dump_style custom <dump>` but uses
the VTK library to write data to VTK simple legacy or XML format
the VTK library to write data to VTK simple legacy or XML format,
depending on the filename extension specified for the dump file. This
can be either *\*.vtk* for the legacy format or *\*.vtp* and *\*.vtu*,
respectively, for XML format; see the `VTK homepage <http://www.vtk.org/VTK/img/file-formats.pdf>`_ for a detailed
respectively, for XML format; see the
`VTK homepage <http://www.vtk.org/VTK/img/file-formats.pdf>`_ for a detailed
description of these formats. Since this naming convention conflicts
with the way binary output is usually specified (see below), the
:doc:`dump_modify binary <dump_modify>` command allows setting of a

View File

@ -6,8 +6,7 @@ fix accelerate/cos command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID accelerate value
@ -19,7 +18,6 @@ Syntax
Examples
""""""""
.. code-block:: LAMMPS
fix 1 all accelerate/cos 0.02e-5
@ -34,8 +32,8 @@ The acceleration is a periodic function along the z-direction:
a_{x}(z) = A \cos \left(\frac{2 \pi z}{l_{z}}\right)
where :math:`A` is the acceleration amplitude, :math:`l_z` is the z-length
of the simulation box.
where :math:`A` is the acceleration amplitude, :math:`l_z` is the
:math:`z`-length of the simulation box.
At steady state, the acceleration generates a velocity profile:
.. math::
@ -49,17 +47,18 @@ shear viscosity :math:`\eta` by:
V = \frac{A \rho}{\eta}\left(\frac{l_{z}}{2 \pi}\right)^{2}
and it can be obtained from ensemble average of the velocity profile:
.. math::
V = \frac{\sum_i 2 m_{i} v_{i, x} \cos \left(\frac{2 \pi z_i}{l_{z}}\right)}{\sum_i m_{i}}
V = \frac{\sum\limits_i 2 m_{i} v_{i, x} \cos \left(\frac{2 \pi z_i}{l_{z}}\right)}{\sum\limits_i m_{i}},
where :math:`m_i`, :math:`v_{i,x}` and :math:`z_i` are the mass,
x-component velocity and z coordinate of a particle.
where :math:`m_i`, :math:`v_{i,x}`, and :math:`z_i` are the mass,
:math:`x`-component velocity, and :math:`z`-coordinate of a particle,
respectively.
The velocity amplitude :math:`V` can be calculated with :doc:`compute viscosity/cos <compute_viscosity_cos>`,
The velocity amplitude :math:`V` can be calculated with
:doc:`compute viscosity/cos <compute_viscosity_cos>`,
which enables viscosity calculation with periodic perturbation method,
as described by :ref:`Hess<Hess2>`.
Because the applied acceleration drives the system away from equilibration,
@ -79,15 +78,17 @@ Restart, fix_modify, output, run start/stop, minimize info
No information about this fix is written to binary restart files.
None of the fix_modify options are relevant to this fix.
No global or per-atom quantities are stored by this fix for access by various output commands.
No parameter of this fix can be used with the start/stop keywords of the run command.
No global or per-atom quantities are stored by this fix for access by various
output commands. No parameter of this fix can be used with the start/stop
keywords of the run command.
This fix is not invoked during energy minimization.
Restrictions
""""""""""""
This command is only available when LAMMPS was built with the MISC package.
Since this fix depends on the z-coordinate of atoms, it cannot be used in 2d simulations.
Since this fix depends on the :math:`z`-coordinate of atoms, it cannot be used
in 2d simulations.
Related commands
""""""""""""""""
@ -102,4 +103,4 @@ Default
.. _Hess2:
**(Hess)** Hess, B. The Journal of Chemical Physics 2002, 116 (1), 209-217.
**(Hess)** Hess, B. Journal of Chemical Physics 2002, 116 (1), 209--217.

View File

@ -9,7 +9,7 @@ Accelerator Variants: *acks2/reaxff/kk*
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID acks2/reaxff Nevery cutlo cuthi tolerance params args
@ -37,10 +37,10 @@ Examples
Description
"""""""""""
Perform the atom-condensed Kohn-Sham DFT to second order (ACKS2) charge
Perform the atom-condensed Kohn--Sham DFT to second order (ACKS2) charge
equilibration method as described in :ref:`(Verstraelen) <Verstraelen>`.
ACKS2 impedes unphysical long-range charge transfer sometimes seen with
QEq (e.g. for dissociation of molecules), at increased computational
QEq (e.g., for dissociation of molecules), at increased computational
cost. It is typically used in conjunction with the ReaxFF force field
model as implemented in the :doc:`pair_style reaxff <pair_reaxff>`
command, but it can be used with any potential in LAMMPS, so long as it
@ -71,7 +71,8 @@ potential in eV, *gamma*, the valence orbital exponent, and *bcut*, the
bond cutoff distance. Note that these 4 quantities are also in the
ReaxFF potential file, except that eta is defined here as twice the eta
value in the ReaxFF file. Note that unlike the rest of LAMMPS, the units
of this fix are hard-coded to be A, eV, and electronic charge.
of this fix are hard-coded to be :math:`\mathrm{\mathring{A}}`, eV, and
electronic charge.
The optional *maxiter* keyword allows changing the max number
of iterations in the linear solver. The default value is 200.
@ -110,7 +111,7 @@ LAMMPS was built with that package. See the :doc:`Build package
This fix does not correctly handle interactions involving multiple
periodic images of the same atom. Hence, it should not be used for
periodic cell dimensions less than 10 angstroms.
periodic cell dimensions less than :math:`10~\mathrm{\mathring{A}}`.
This fix may be used in combination with :doc:`fix efield <fix_efield>`
and will apply the external electric field during charge equilibration,
@ -132,7 +133,7 @@ maxiter 200
.. _O'Hearn:
**(O'Hearn)** O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1-C22 (2020).
**(O'Hearn)** O'Hearn, Alperen, Aktulga, SIAM J. Sci. Comput., 42(1), C1--C22 (2020).
.. _Verstraelen:

View File

@ -6,7 +6,7 @@ fix adapt command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID adapt N attribute args ... keyword value ...
@ -19,24 +19,24 @@ Syntax
.. parsed-literal::
*pair* args = pstyle pparam I J v_name
pstyle = pair style name, e.g. lj/cut
pstyle = pair style name (e.g., lj/cut)
pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam
*bond* args = bstyle bparam I v_name
bstyle = bond style name, e.g. harmonic
bstyle = bond style name (e.g., harmonic)
bparam = parameter to adapt over time
I = type bond to set parameter for
v_name = variable with name that calculates value of bparam
*angle* args = astyle aparam I v_name
astyle = angle style name, e.g. harmonic
astyle = angle style name (e.g., harmonic)
aparam = parameter to adapt over time
I = type angle to set parameter for
v_name = variable with name that calculates value of aparam
*kspace* arg = v_name
v_name = variable with name that calculates scale factor on K-space terms
v_name = variable with name that calculates scale factor on :math:`k`-space terms
*atom* args = atomparam v_name
atomparam = parameter to adapt over time
atomparam = *charge* or *diameter* or *diameter/disc* = parameter to adapt over time
v_name = variable with name that calculates value of atomparam
* zero or more keyword/value pairs may be appended
@ -70,22 +70,22 @@ Examples
Description
"""""""""""
Change or adapt one or more specific simulation attributes or settings
over time as a simulation runs. Pair potential and K-space and atom
attributes which can be varied by this fix are discussed below. Many
other fixes can also be used to time-vary simulation parameters,
e.g. the "fix deform" command will change the simulation box
size/shape and the "fix move" command will change atom positions and
velocities in a prescribed manner. Also note that many commands allow
variables as arguments for specific parameters, if described in that
Change or adapt one or more specific simulation attributes or settings over
time as a simulation runs. Pair potential and :math:`k`-space and atom
attributes which can be varied by this fix are discussed below. Many other
fixes can also be used to time-vary simulation parameters (e.g., the
:doc:`fix deform <fix_deform>` command will change the simulation box
size/shape and the :doc:`fix move <fix_move>` command will change atom
positions and velocities in a prescribed manner). Also note that many commands
allow variables as arguments for specific parameters, if described in that
manner on their doc pages. An equal-style variable can calculate a
time-dependent quantity, so this is another way to vary a simulation
parameter over time.
time-dependent quantity, so this is another way to vary a simulation parameter
over time.
If *N* is specified as 0, the specified attributes are only changed
If :math:`N` is specified as 0, the specified attributes are only changed
once, before the simulation begins. This is all that is needed if the
associated variables are not time-dependent. If *N* > 0, then changes
are made every *N* steps during the simulation, presumably with a
associated variables are not time-dependent. If :math:`N > 0`, then changes
are made every :math:`N` steps during the simulation, presumably with a
variable that is time-dependent.
Depending on the value of the *reset* keyword, attributes changed by
@ -98,9 +98,9 @@ If the *scale* keyword is set to *no*, which is the default, then
the value of the altered parameter will be whatever the variable
generates. If the *scale* keyword is set to *yes*, then the value
of the altered parameter will be the initial value of that parameter
multiplied by whatever the variable generates. I.e. the variable is
multiplied by whatever the variable generates (i.e., the variable is
now a "scale factor" applied in (presumably) a time-varying fashion to
the parameter.
the parameter).
Note that whether scale is *no* or *yes*, internally, the parameters
themselves are actually altered by this fix. Make sure you use the
@ -120,9 +120,9 @@ The *pstyle* argument is the name of the pair style. If
:doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used,
*pstyle* should be a sub-style name. If there are multiple
sub-styles using the same pair style, then *pstyle* should be specified
as "style:N" where N is which instance of the pair style you wish to
adapt, e.g. the first, second, etc. For example, *pstyle* could be
specified as "soft" or "lubricate" or "lj/cut:1" or "lj/cut:2". The
as "style:N", where :math:`N` is which instance of the pair style you wish to
adapt (e.g., the first or second). For example, *pstyle* could be
specified as "soft" or "lubricate" or "lj/cut:1" or "lj/cut:2." The
*pparam* argument is the name of the parameter to change. This is the
current list of pair styles and parameters that can be varied by this
fix. See the doc pages for individual pair styles and their energy
@ -216,45 +216,46 @@ formulas for the meaning of these parameters:
to this list. All it typically takes is adding an extract() method to
the pair\_\*.cpp file associated with the potential.
Some parameters are global settings for the pair style, e.g. the
viscosity setting "mu" for :doc:`pair_style lubricate <pair_lubricate>`.
Other parameters apply to atom type pairs within the pair style,
e.g. the prefactor "a" for :doc:`pair_style soft <pair_soft>`.
Some parameters are global settings for the pair style (e.g., the
viscosity setting "mu" for :doc:`pair_style lubricate <pair_lubricate>`).
Other parameters apply to atom type pairs within the pair style (e.g., the
prefactor :math:`a` for :doc:`pair_style soft <pair_soft>`).
Note that for many of the potentials, the parameter that can be varied
is effectively a prefactor on the entire energy expression for the
potential, e.g. the lj/cut epsilon. The parameters listed as "scale"
potential (e.g., the lj/cut epsilon). The parameters listed as "scale"
are exactly that, since the energy expression for the
:doc:`coul/cut <pair_coul>` potential (for example) has no labeled
prefactor in its formula. To apply an effective prefactor to some
potentials, multiple parameters need to be altered. For example, the
:doc:`Buckingham potential <pair_buck>` needs both the A and C terms
altered together. To scale the Buckingham potential, you should thus
list the pair style twice, once for A and once for C.
:doc:`Buckingham potential <pair_buck>` needs both the :math:`A` and
:math:`C` terms altered together. To scale the Buckingham potential, you
should thus list the pair style twice, once for :math:`A` and once for
:math:`C`.
If a type pair parameter is specified, the *I* and *J* settings should
be specified to indicate which type pairs to apply it to. If a global
parameter is specified, the *I* and *J* settings still need to be
If a type pair parameter is specified, the :math:`I` and :math:`J` settings
should be specified to indicate which type pairs to apply it to. If a global
parameter is specified, the :math:`I` and :math:`J` settings still need to be
specified, but are ignored.
Similar to the :doc:`pair_coeff command <pair_coeff>`, I and J can be
specified in one of two ways. Explicit numeric values can be used for
each, as in the first example above. I <= J is required. LAMMPS sets
the coefficients for the symmetric J,I interaction to the same values.
Similar to the :doc:`pair_coeff command <pair_coeff>`, :math:`I` and :math:`J`
can be specified in one of two ways. Explicit numeric values can be used for
each, as in the first example above. :math:`I \le J` is required. LAMMPS sets
the coefficients for the symmetric :math:`J,I` interaction to the same values.
A wild-card asterisk can be used in place of or in conjunction with
the I,J arguments to set the coefficients for multiple pairs of atom
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N =
the number of atom types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N
the :math:`I,J` arguments to set the coefficients for multiple pairs of atom
types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
is the number of atom types, then an asterisk with no numeric values
means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n
(inclusive). Note that only type pairs with I <= J are considered; if
asterisks imply type pairs where J < I, they are ignored.
(inclusive). Note that only type pairs with :math:`I \le J` are considered; if
asterisks imply type pairs where :math:`J < I`, they are ignored.
IMPROTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay
IMPORTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay
<pair_hybrid>` is being used, then the *pstyle* will be a sub-style
name. You must specify I,J arguments that correspond to type pair
name. You must specify :math:`I,J` arguments that correspond to type pair
values defined (via the :doc:`pair_coeff <pair_coeff>` command) for
that sub-style.
@ -289,12 +290,11 @@ given bond type is adapted.
A wild-card asterisk can be used in place of or in conjunction with
the bond type argument to set the coefficients for multiple bond
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N =
the number of bond types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N
(inclusive). A middle asterisk means all types from m to n
(inclusive).
types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
is the number of bond types, then an asterisk with no numeric values
means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive).
Currently *bond* does not support bond_style hybrid nor bond_style
hybrid/overlay as bond styles. The bond styles that currently work
@ -325,12 +325,11 @@ given angle type is adapted.
A wild-card asterisk can be used in place of or in conjunction with
the angle type argument to set the coefficients for multiple angle
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N =
the number of angle types, then an asterisk with no numeric values
means all types from 1 to N. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from n to N
(inclusive). A middle asterisk means all types from m to n
(inclusive).
types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N`
is the number of angle types, then an asterisk with no numeric values
means all types from 1 to :math:`N`. A leading asterisk means all types from
1 to n (inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n (inclusive).
Currently *angle* does not support angle_style hybrid nor angle_style
hybrid/overlay as angle styles. The angle styles that currently work
@ -348,7 +347,7 @@ this fix uses to reset theta0 needs to generate values in radians.
----------
The *kspace* keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is
the energy, forces, virial calculated by whatever :math:`k`-space solver is
defined by the :doc:`kspace_style <kspace_style>` command. If the
variable has a value of 1.0, then the solver is unaltered.
@ -373,17 +372,17 @@ with equal-style variables. The new value is assigned to the
corresponding attribute for all atoms in the fix group.
If the atom parameter is *diameter* and per-atom density and per-atom
mass are defined for particles (e.g. :doc:`atom_style granular
mass are defined for particles (e.g., :doc:`atom_style granular
<atom_style>`), then the mass of each particle is, by default, also
changed when the diameter changes. The mass is set from the particle
volume for 3d systems (density is assumed to stay constant). For 2d,
the default is for LAMMPS to model particles with a radius attribute
as spheres. However, if the atom parameter is *diameter/disc*, then the
mass is set from the particle area (the density is assumed to be in
mass/distance^2 units). The mass of the particle may also be kept constant
if the *mass* keyword is set to *no*. This can be useful to account for
diameter changes that do not involve mass changes, e.g., thermal expansion.
mass/distance\ :math:`^2` units). The mass of the particle may also be kept
constant if the *mass* keyword is set to *no*. This can be useful to account
for diameter changes that do not involve mass changes (e.g., thermal
expansion).
For example, these commands would shrink the diameter of all granular
particles in the "center" group from 1.0 to 0.1 in a linear fashion
@ -405,11 +404,11 @@ their original values at the end of the last restarted run.
Note that all the parameters changed by this fix are written into a
restart file in their current changed state. A new restarted
simulation does not know their original time=0 values, unless the
simulation does not know the original time=0 values, unless the
input script explicitly resets the parameters (after the restart file
is read), to their original values.
is read) to the original values.
Also note, that the time-dependent variable(s) used in the restart
Also note that the time-dependent variable(s) used in the restart
script should typically be written as a function of time elapsed since
the original simulation began.
@ -430,8 +429,8 @@ the one used in the original script.
In a restarted run, if the *reset* keyword is set to *yes*, and the
run ends in this script (as opposed to just writing more restart
files, parameters will be restored to the values they were at the
beginning of the run command in the restart script. Which as
files), parameters will be restored to the values they were at the
beginning of the run command in the restart script, which as
explained above, may or may not be the original values of the
parameters. Again, an exception is if the *atom* keyword is being
used with *reset yes* (in all the runs). In that case, the original

View File

@ -6,7 +6,7 @@ fix adapt/fep command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID adapt/fep N attribute args ... keyword value ...
@ -19,7 +19,7 @@ Syntax
.. parsed-literal::
*pair* args = pstyle pparam I J v_name
pstyle = pair style name, e.g. lj/cut
pstyle = pair style name (e.g., lj/cut)
pparam = parameter to adapt over time
I,J = type pair(s) to set parameter for
v_name = variable with name that calculates value of pparam
@ -66,12 +66,12 @@ Change or adapt one or more specific simulation attributes or settings
over time as a simulation runs.
This is an enhanced version of the :doc:`fix adapt <fix_adapt>` command
with two differences,
with two differences:
* It is possible to modify the charges of chosen atom types only,
instead of scaling all the charges in the system.
* There is a new option *after* for better compatibility with "fix
ave/time".
* There is a new option *after* for better compatibility with
:doc:`fix ave/time <fix_ave_time>`.
This version is suited for free energy calculations using
:doc:`compute ti <compute_ti>` or :doc:`compute fep <compute_fep>`.
@ -92,8 +92,8 @@ If the *scale* keyword is set to *no*, then the value the parameter is
set to will be whatever the variable generates. If the *scale*
keyword is set to *yes*, then the value of the altered parameter will
be the initial value of that parameter multiplied by whatever the
variable generates. I.e. the variable is now a "scale factor" applied
in (presumably) a time-varying fashion to the parameter. Internally,
variable generates (i.e., the variable is now a "scale factor" applied
in (presumably) a time-varying fashion to the parameter). Internally,
the parameters themselves are actually altered; make sure you use the
*reset yes* option if you want the parameters to be restored to their
initial values after the run.
@ -115,7 +115,7 @@ overrides the parameters.
The *pstyle* argument is the name of the pair style. If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is used, *pstyle* should be
a sub-style name. For example, *pstyle* could be specified as "soft"
or "lubricate". The *pparam* argument is the name of the parameter to
or "lubricate." The *pparam* argument is the name of the parameter to
change. This is the current list of pair styles and parameters that
can be varied by this fix. See the doc pages for individual pair
styles and their energy formulas for the meaning of these parameters:
@ -188,7 +188,7 @@ styles and their energy formulas for the meaning of these parameters:
Note that for many of the potentials, the parameter that can be varied
is effectively a prefactor on the entire energy expression for the
potential, e.g. the lj/cut epsilon. The parameters listed as "scale"
potential (e.g., the lj/cut epsilon). The parameters listed as "scale"
are exactly that, since the energy expression for the
:doc:`coul/cut <pair_coul>` potential (for example) has no labeled
prefactor in its formula. To apply an effective prefactor to some
@ -204,23 +204,23 @@ specified, but are ignored.
Similar to the :doc:`pair_coeff command <pair_coeff>`, I and J can be
specified in one of two ways. Explicit numeric values can be used for
each, as in the first example above. I <= J is required. LAMMPS sets
each, as in the first example above. :math:`I \le J` is required. LAMMPS sets
the coefficients for the symmetric J,I interaction to the same values.
A wild-card asterisk can be used in place of or in conjunction with
the I,J arguments to set the coefficients for multiple pairs of atom
types. This takes the form "\*" or "\*n" or "n\*" or "m\*n". If N = the
number of atom types, then an asterisk with no numeric values means
all types from 1 to N. A leading asterisk means all types from 1 to n
(inclusive). A trailing asterisk means all types from n to N
the :math:`I,J` arguments to set the coefficients for multiple pairs of atom
types. This takes the form "\*" or "\*n" or "m\*" or "m\*n." If :math:`N` is
the number of atom types, then an asterisk with no numeric values means
all types from 1 to :math:`N`. A leading asterisk means all types from 1 to n
(inclusive). A trailing asterisk means all types from m to :math:`N`
(inclusive). A middle asterisk means all types from m to n
(inclusive). Note that only type pairs with I <= J are considered; if
asterisks imply type pairs where J < I, they are ignored.
(inclusive). Note that only type pairs with :math:`I \le J` are considered; if
asterisks imply type pairs where :math:`J < I`, they are ignored.
IMPROTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is being used, then the *pstyle* will
be a sub-style name. You must specify I,J arguments that correspond
to type pair values defined (via the :doc:`pair_coeff <pair_coeff>`
command) for that sub-style.
IMPROTANT NOTE: If :doc:`pair_style hybrid or hybrid/overlay <pair_hybrid>` is
being used, then the *pstyle* will be a sub-style name. You must specify
:math:`I,J` arguments that correspond to type pair values defined (via the
:doc:`pair_coeff <pair_coeff>` command) for that sub-style.
The *v_name* argument for keyword *pair* is the name of an
:doc:`equal-style variable <variable>` which will be evaluated each time
@ -232,8 +232,7 @@ simulation box parameters and timestep and elapsed time. Thus it is
easy to specify parameters that change as a function of time or span
consecutive runs in a continuous fashion. For the latter, see the
*start* and *stop* keywords of the :doc:`run <run>` command and the
*elaplong* keyword of :doc:`thermo_style custom <thermo_style>` for
details.
*elaplong* keyword of :doc:`thermo_style custom <thermo_style>` for details.
For example, these commands would change the prefactor coefficient of
the :doc:`pair_style soft <pair_soft>` potential from 10.0 to 30.0 in a
@ -247,7 +246,7 @@ linear fashion over the course of a simulation:
----------
The *kspace* keyword used the specified variable as a scale factor on
the energy, forces, virial calculated by whatever K-Space solver is
the energy, forces, virial calculated by whatever :math:`k`-space solver is
defined by the :doc:`kspace_style <kspace_style>` command. If the
variable has a value of 1.0, then the solver is unaltered.
@ -263,8 +262,8 @@ current list of atom parameters that can be varied by this fix:
* charge = charge on particle
* diameter = diameter of particle
The *I* argument indicates which atom types are affected. A wild-card
asterisk can be used in place of or in conjunction with the I argument
The :math:`I` argument indicates which atom types are affected. A wild-card
asterisk can be used in place of or in conjunction with the :math:`I` argument
to set the coefficients for multiple atom types.
The *v_name* argument of the *atom* keyword is the name of an
@ -276,9 +275,9 @@ variables. The new value is assigned to the corresponding attribute
for all atoms in the fix group.
If the atom parameter is *diameter* and per-atom density and per-atom
mass are defined for particles (e.g. :doc:`atom_style granular <atom_style>`), then the mass of each particle is also
changed when the diameter changes (density is assumed to stay
constant).
mass are defined for particles (e.g., :doc:`atom_style granular <atom_style>`),
then the mass of each particle is also changed when the diameter changes
(density is assumed to stay constant).
For example, these commands would shrink the diameter of all granular
particles in the "center" group from 1.0 to 0.1 in a linear fashion
@ -297,11 +296,14 @@ parameters on the outermost rRESPA level.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
No information about this fix is written to
:doc:`binary restart files <restart>`.
None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various :doc:`output commands <Howto_output>`.
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>`.
the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
@ -310,7 +312,8 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute fep <compute_fep>`, :doc:`fix adapt <fix_adapt>`, :doc:`compute ti <compute_ti>`, :doc:`pair_style \*/soft <pair_fep_soft>`
:doc:`compute fep <compute_fep>`, :doc:`fix adapt <fix_adapt>`,
:doc:`compute ti <compute_ti>`, :doc:`pair_style \*/soft <pair_fep_soft>`
Default
"""""""

View File

@ -6,7 +6,7 @@ fix addforce command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID addforce fx fy fz keyword value ...
@ -42,26 +42,26 @@ Examples
Description
"""""""""""
Add fx,fy,fz to the corresponding component of force for each atom in
the group. This command can be used to give an additional push to
Add :math:`(f_x,f_y,f_z)` to the corresponding component of the force for each
atom in the group. This command can be used to give an additional push to
atoms in a simulation, such as for a simulation of Poiseuille flow in
a channel.
Any of the 3 quantities defining the force components can be specified
as an equal-style or atom-style :doc:`variable <variable>`, namely *fx*,
*fy*, *fz*\ . If the value is a variable, it should be specified as
v_name, where name is the variable name. In this case, the variable
will be evaluated each timestep, and its value(s) used to determine
the force component.
Any of the three quantities defining the force components, namely :math:`f_x`,
:math:`f_y`, and :math:`f_z`, can be specified as an equal-style or atom-style
:doc:`variable <variable>`. If the value is a variable, it should be specified
as v_name, where name is the variable name. In this case, the variable
will be evaluated each time step, and its value(s) will be used to determine
the force component(s).
Equal-style variables can specify formulas with various mathematical
functions, and include :doc:`thermo_style <thermo_style>` command
keywords for the simulation box parameters and timestep and elapsed
time. Thus it is easy to specify a time-dependent force field.
functions and include :doc:`thermo_style <thermo_style>` command
keywords for the simulation box parameters, time step, and elapsed time.
Thus, it is easy to specify a time-dependent force field.
Atom-style variables can specify the same formulas as equal-style
variables but can also include per-atom values, such as atom
coordinates. Thus it is easy to specify a spatially-dependent force
coordinates. Thus, it is easy to specify a spatially-dependent force
field with optional time-dependence as well.
If the *every* keyword is used, the *Nevery* setting determines how
@ -83,10 +83,14 @@ potential energy to formulate a self-consistent minimization problem
(see below).
The *energy* keyword is not allowed if the added force is a constant
vector F = (fx,fy,fz), with all components defined as numeric
vector :math:`\vec F = (f_x,f_y,f_z)`, with all components defined as numeric
constants and not as variables. This is because LAMMPS can compute
the energy for each atom directly as E = -x dot F = -(x\*fx + y\*fy +
z\*fz), so that -Grad(E) = F.
the energy for each atom directly as
.. math::
E = -\vec x \cdot \vec F = -(x f_x + y f_y + z f_z),
so that :math:`-\vec\nabla E = \vec F`.
The *energy* keyword is optional if the added force is defined with
one or more variables, and if you are performing dynamics via the
@ -98,16 +102,16 @@ one or more variables, and you are performing energy minimization via
the "minimize" command. The keyword specifies the name of an
atom-style :doc:`variable <variable>` which is used to compute the
energy of each atom as function of its position. Like variables used
for *fx*, *fy*, *fz*, the energy variable is specified as v_name,
where name is the variable name.
for :math:`f_x`, :math:`f_y`, :math:`f_z`, the energy variable is specified as
v_name, where name is the variable name.
Note that when the *energy* keyword is used during an energy
minimization, you must insure that the formula defined for the
atom-style :doc:`variable <variable>` is consistent with the force
variable formulas, i.e. that -Grad(E) = F. For example, if the force
were a spring-like F = kx, then the energy formula should be E =
-0.5kx\^2. If you don't do this correctly, the minimization will not
converge properly.
variable formulas (i.e., that :math:`-\vec\nabla E = \vec F`).
For example, if the force were a spring-like, :math:`\vec F = -k\vec x`, then
the energy formula should be :math:`E = \frac12 kx^2`. If you do not do this
correctly, the minimization will not converge properly.
----------
@ -128,8 +132,8 @@ the global potential energy of the system as part of
this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this
energy is a fictitious quantity but is needed so that the
:doc:`minimize <minimize>` command can include the forces added by
this fix in a consistent manner. I.e. there is a decrease in
potential energy when atoms move in the direction of the added force.
this fix in a consistent manner (i.e., there is a decrease in
potential energy when atoms move in the direction of the added force).
The :doc:`fix_modify <fix_modify>` *virial* option is supported by
this fix to add the contribution due to the added forces on atoms to
@ -144,12 +148,12 @@ fix. This allows to set at which level of the :doc:`r-RESPA
<run_style>` integrator the fix is adding its forces. Default is the
outermost level.
This fix computes a global scalar and a global 3-vector of forces,
This fix computes a global scalar and a global three-vector of forces,
which can be accessed by various :doc:`output commands
<Howto_output>`. The scalar is the potential energy discussed above.
The vector is the total force on the group of atoms before the forces
on individual atoms are changed by the fix. The scalar and vector
values calculated by this fix are "extensive".
values calculated by this fix are "extensive."
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.

View File

@ -6,7 +6,7 @@ fix addtorque command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID addtorque Tx Ty Tz
@ -30,13 +30,13 @@ Add a set of forces to each atom in
the group such that:
* the components of the total torque applied on the group (around its
center of mass) are Tx,Ty,Tz
center of mass) are :math:`T_x`, :math:`T_y`, and :math:`T_z`
* the group would move as a rigid body in the absence of other
forces.
This command can be used to drive a group of atoms into rotation.
Any of the 3 quantities defining the torque components can be specified
Any of the three quantities defining the torque components can be specified
as an equal-style :doc:`variable <variable>`, namely *Tx*,
*Ty*, *Tz*\ . If the value is a variable, it should be specified as
v_name, where name is the variable name. In this case, the variable
@ -53,7 +53,8 @@ time. Thus it is easy to specify a time-dependent torque.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`.
No information about this fix is written to
:doc:`binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` *energy* option is supported by
this fix to add the potential "energy" inferred by the added torques
@ -62,8 +63,8 @@ to the global potential energy of the system as part of
this fix is :doc:`fix_modify energy no <fix_modify>`. Note that this
is a fictitious quantity but is needed so that the :doc:`minimize
<minimize>` command can include the forces added by this fix in a
consistent manner. I.e. there is a decrease in potential energy when
atoms move in the direction of the added forces.
consistent manner (i.e., there is a decrease in potential energy when
atoms move in the direction of the added forces).
The :doc:`fix_modify <fix_modify>` *respa* option is supported by
this fix. This allows to set at which level of the :doc:`r-RESPA <run_style>`
@ -74,7 +75,7 @@ accessed by various :doc:`output commands <Howto_output>`. The scalar
is the potential energy discussed above. The vector is the total
torque on the group of atoms before the forces on individual atoms are
changed by the fix. The scalar and vector values calculated by this
fix are "extensive".
fix are "extensive."
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.
@ -99,9 +100,9 @@ invoked by the :doc:`minimize <minimize>` command.
Restrictions
""""""""""""
This fix 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.
This fix 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
""""""""""""""""

View File

@ -6,7 +6,7 @@ fix amoeba/bitorsion command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ameoba/bitorsion filename
@ -55,8 +55,8 @@ should have a line like this in its header section:
N bitorsions
where N is the number of bitorsion 5-body interactions. It should
also have a section in the body of the data file like this with N
where :math:`N` is the number of bitorsion 5-body interactions. It should
also have a section in the body of the data file like this with :math:`N`
lines:
.. parsed-literal::
@ -68,7 +68,7 @@ lines:
[...]
N 3 314 315 317 318 330
The first column is an index from 1 to N to enumerate the bitorsion
The first column is an index from 1 to :math:`N` to enumerate the bitorsion
5-atom tuples; it is ignored by LAMMPS. The second column is the
*type* of the interaction; it is an index into the bitorsion force
field file. The remaining 5 columns are the atom IDs of the atoms in
@ -124,7 +124,7 @@ setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential
energy discussed above. The scalar value calculated by this fix is
"extensive".
"extensive."
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.

View File

@ -6,7 +6,7 @@ fix amoeba/pitorsion command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ameoba/pitorsion
@ -29,14 +29,16 @@ Description
This command enables 6-body pitorsion interactions to be added to
simulations which use the AMOEBA and HIPPO force fields. It matches
how the Tinker MD code computes its pitorsion interactions for the
AMOEBA and HIPPO force fields. See the :doc:`Howto amoeba
<Howto_amoeba>` doc page for more information about the implementation
of AMOEBA and HIPPO in LAMMPS.
AMOEBA and HIPPO force fields. See the :doc:`Howto amoeba <Howto_amoeba>`
doc page for more information about the implementation of AMOEBA and HIPPO in
LAMMPS.
Pitorsion interactions add additional potential energy contributions
to 6-tuples of atoms IJKLMN which have a bond between atoms K and L,
where both K and L are additionally bonded to exactly two other atoms.
Namely K is also bonded to I and J. And L is also bonded to M and N.
to 6-tuples of atoms :math:`IJKLMN` that have a bond between atoms
:math:`K` and :math:`L`, where both :math:`K` and :math:`L` are additionally
bonded to exactly two other atoms. Namely, :math:`K` is also bonded to
:math:`I` and :math:`J`, and :math:`L` is also bonded to :math:`M` and
:math:`N`.
The examples/amoeba directory has a sample input script and data file
for ubiquitin, which illustrates use of the fix amoeba/pitorsion
@ -47,7 +49,7 @@ file that contains a listing of pitorsion interactions.
The data file read by the :doc:`read_data <read_data>` command must
contain the topology of all the pitorsion interactions, similar to the
topology data for bonds, angles, dihedrals, etc. Specifically it
topology data for bonds, angles, dihedrals, etc. Specifically, it
should have two lines like these in its header section:
.. parsed-literal::
@ -55,9 +57,9 @@ should have two lines like these in its header section:
M pitorsion types
N pitorsions
where N is the number of pitorsion 5-body interactions and M is the
number of pitorsion types. It should also have two sections in the body
of the data file like these with M and N lines each:
where :math:`N` is the number of pitorsion 5-body interactions and :math:`M` is
the number of pitorsion types. It should also have two sections in the body
of the data file like these with :math:`M` and :math:`N` lines each:
.. parsed-literal::
@ -77,11 +79,11 @@ of the data file like these with M and N lines each:
[...]
N 3 314 315 317 318 330
For PiTorsion Coeffs, the first column is an index from 1 to M to
For PiTorsion Coeffs, the first column is an index from 1 to :math:`M` to
enumerate the pitorsion types. The second column is the single
prefactor coefficient needed for each type.
For PiTorsions, the first column is an index from 1 to N to enumerate
For PiTorsions, the first column is an index from 1 to :math:`N` to enumerate
the pitorsion 5-atom tuples; it is ignored by LAMMPS. The second
column is the "type" of the interaction; it is an index into the
PiTorsion Coeffs. The remaining 5 columns are the atom IDs of the
@ -90,8 +92,8 @@ atoms in the two 4-atom dihedrals that overlap to create the pitorsion
Note that the *pitorsion types* and *pitorsions* and *PiTorsion
Coeffs* and *PiTorsions* keywords for the header and body sections of
the data file match those specified in the :doc:`read_data
<read_data>` command following the data file name.
the data file match those specified in the :doc:`read_data <read_data>`
command following the data file name.
The data file should be generated by using the
tools/tinker/tinker2lmp.py conversion script which creates a LAMMPS
@ -136,7 +138,7 @@ setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the potential
energy discussed above. The scalar value calculated by this fix is
"extensive".
"extensive."
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.
@ -161,8 +163,8 @@ Restrictions
""""""""""""
To function as expected this fix command must be issued *before* a
:doc:`read_data <read_data>` command but *after* a :doc:`read_restart
<read_restart>` command.
:doc:`read_data <read_data>` command but *after* a
:doc:`read_restart <read_restart>` command.
This fix can only be used if LAMMPS was built with the AMOEBA package.
See the :doc:`Build package <Build_package>` page for more info.

View File

@ -6,7 +6,7 @@ fix append/atoms command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID append/atoms face ... keyword value ...
@ -66,7 +66,7 @@ specific basis atoms as they are created. See the
defined for the unit cell of the lattice. By default, all created
atoms are assigned type = 1 unless this keyword specifies differently.
The *size* keyword defines the size in z of the chunk of material to
The *size* keyword defines the size in :math:`z` of the chunk of material to
be added.
The *random* keyword will give the atoms random displacements around
@ -79,7 +79,8 @@ measured from zhi and is set with the *extent* argument.
The *units* keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
A *box* value selects standard distance units as defined by the
:doc:`units <units>` command, e.g. Angstroms for units = real or metal.
:doc:`units <units>` command (e.g., :math:`\mathrm{\mathring A}`
for units = real or metal.
A *lattice* value means the distance units are in lattice spacings.
The :doc:`lattice <lattice>` command must have been previously used to
define the lattice spacings.
@ -89,17 +90,21 @@ define the lattice spacings.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
No information about this fix is written to
:doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options
are relevant to this fix. No global or per-atom quantities are stored
by this fix for access by various :doc:`output commands <Howto_output>`.
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>`.
the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
This fix style is part of the SHOCK package. It is only enabled if
LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
The boundary on which atoms are added with append/atoms must be
shrink/minimum. The opposite boundary may be any boundary type other

View File

@ -6,7 +6,7 @@ fix atc command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix <fixID> <group> atc <type> <parameter_file>
@ -40,8 +40,8 @@ This fix is the beginning to creating a coupled FE/MD simulation and/or
an on-the-fly estimation of continuum fields. The coupled versions of
this fix do Verlet integration and the post-processing does not. After
instantiating this fix, several other fix_modify commands will be
needed to set up the problem, e.g. define the finite element mesh and
prescribe initial and boundary conditions.
needed to set up the problem (i.e., define the finite element mesh and
prescribe initial and boundary conditions).
.. image:: JPG/atc_nanotube.jpg
:align: center
@ -135,7 +135,7 @@ fix are listed below.
This fix computes a global scalar which can be accessed by various
:doc:`output commands <Howto_output>`. The scalar is the energy
discussed in the previous paragraph. The scalar value is "extensive".
discussed in the previous paragraph. The scalar value is "extensive."
No parameter of this fix can be used with the
*start/stop* keywords of the :doc:`run <run>` command. This fix is not
@ -147,7 +147,7 @@ Restrictions
Thermal and two_temperature (coupling) types use a Verlet
time-integration algorithm. The hardy type does not contain its own
time-integrator and must be used with a separate fix that does contain
one, e.g. nve, nvt, etc. In addition, currently:
one (e.g., nve, nvt). In addition, currently:
* the coupling is restricted to thermal physics
* the FE computations are done in serial on each processor.
@ -159,8 +159,8 @@ Related commands
After specifying this fix in your input script, several
:doc:`fix_modify AtC <fix_modify>` commands are used to setup the
problem, e.g. define the finite element mesh and prescribe initial and
boundary conditions. Each of these options has its own doc page.
problem (e.g., define the finite element mesh and prescribe initial and
boundary conditions). Each of these options has its own doc page.
*fix_modify* commands for setup:
@ -311,6 +311,6 @@ and Computation (2011), 7:1736.
as a field variable from molecular dynamics simulations." Journal of
Chemical Physics (2013), 139:054115.
Please refer to the standard finite element (FE) texts, e.g. T.J.R
Hughes " The finite element method ", Dover 2003, for the basics of FE
simulation.
Please refer to the standard finite element (FE) texts (e.g., T.J.R.
Hughes, *The Finite Element Method,* Dover 2003) for the basics of FE
simulations.

View File

@ -6,7 +6,7 @@ fix atom/swap command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID atom/swap N X seed T keyword values ...
@ -45,10 +45,10 @@ Description
"""""""""""
This fix performs Monte Carlo swaps of atoms of one given atom type
with atoms of the other given atom types. The specified T is used in
with atoms of the other given atom types. The specified :math:`T` is used in
the Metropolis criterion dictating swap probabilities.
Perform X swaps of atoms of one type with atoms of another type
Perform :math:`X` swaps of atoms of one type with atoms of another type
according to a Monte Carlo probability. Swap candidates must be in the
fix group, must be in the region (if specified), and must be of one of
the listed types. Swaps are attempted between candidates that are
@ -57,7 +57,7 @@ atoms. Swaps are not attempted between atoms of the same type since
nothing would happen.
All atoms in the simulation domain can be moved using regular time
integration displacements, e.g. via :doc:`fix nvt <fix_nh>`, resulting
integration displacements (e.g., via :doc:`fix nvt <fix_nh>`), resulting
in a hybrid MC+MD simulation. A smaller-than-usual timestep size may
be needed when running such a hybrid simulation, especially if the
swapped atoms are not well equilibrated.
@ -83,9 +83,8 @@ canonical ensemble, the composition of the system can change. Note
that when using *semi-grand*, atoms in the fix group whose type is not
listed in the *types* keyword are ineligible for attempted
conversion. An attempt is made to switch the selected atom (if
eligible) to one of the other listed types with equal
probability. Acceptance of each attempt depends upon the Metropolis
criterion.
eligible) to one of the other listed types with equal probability.
Acceptance of each attempt depends upon the Metropolis criterion.
The *mu* keyword allows users to specify chemical potentials. This is
required and allowed only when using *semi-grand*\ . All chemical
@ -97,8 +96,8 @@ amount will have no effect on the simulation.
This command may optionally use the *region* keyword to define swap
volume. The specified region must have been previously defined with a
:doc:`region <region>` command. It must be defined with side = *in*\
. Swap attempts occur only between atoms that are both within the
:doc:`region <region>` command. It must be defined with side = *in*\ .
Swap attempts occur only between atoms that are both within the
specified region. Swaps are not otherwise attempted.
You should ensure you do not swap atoms belonging to a molecule, or
@ -123,7 +122,7 @@ Since this fix computes total potential energies before and after
proposed swaps, so even complicated potential energy calculations are
OK, including the following:
* long-range electrostatics (kspace)
* long-range electrostatics (:math:`k`-space)
* many body pair styles
* hybrid pair styles
* eam pair styles
@ -137,7 +136,7 @@ include: :doc:`efield <fix_efield>`, :doc:`gravity <fix_gravity>`,
<fix_temp_berendsen>`, :doc:`temp/rescale <fix_temp_rescale>`, and
:doc:`wall fixes <fix_wall>`. For that energy to be included in the
total potential energy of the system (the quantity used when
performing GCMC moves), you MUST enable the :doc:`fix_modify
performing GCMC moves), you **must** enable the :doc:`fix_modify
<fix_modify>` *energy* option for that fix. The doc pages for
individual :doc:`fix <fix>` commands specify if this should be done.
@ -147,7 +146,7 @@ Restart, fix_modify, output, run start/stop, minimize info
This fix writes the state of the fix to :doc:`binary restart files
<restart>`. This includes information about the random number
generator seed, the next timestep for MC exchanges, the number of
exchange attempts and successes etc. See the :doc:`read_restart
exchange attempts and successes, etc. See the :doc:`read_restart
<read_restart>` command for info on how to re-specify a fix in an
input script that reads a restart file, so that the operation of the
fix continues in an uninterrupted fashion.
@ -168,7 +167,7 @@ the following global cumulative quantities:
* 1 = swap attempts
* 2 = swap accepts
The vector values calculated by this fix are "extensive".
The vector values calculated by this fix are "extensive."
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

View File

@ -6,7 +6,7 @@ fix ave/atom command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ave/atom Nevery Nrepeat Nfreq value1 value2 ...
@ -15,8 +15,8 @@ Syntax
* Nevery = use input values every this many timesteps
* Nrepeat = # of times to use input values for calculating averages
* Nfreq = calculate averages every this many timesteps
one or more input values can be listed
* value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[i], f_ID, f_ID[i], v_name
* one or more input values can be listed
* value = *x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, c_ID, c_ID[i], f_ID, f_ID[i], v_name
.. parsed-literal::
@ -41,7 +41,9 @@ Description
Use one or more per-atom vectors as inputs every few timesteps, and
average them atom by atom over longer timescales. The resulting
per-atom averages can be used by other :doc:`output commands <Howto_output>` such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>` commands.
per-atom averages can be used by other :doc:`output commands <Howto_output>`
such as the :doc:`fix ave/chunk <fix_ave_chunk>` or :doc:`dump custom <dump>`
commands.
The group specified with the command means only atoms within the group
have their averages computed. Results are set to 0.0 for atoms not in
@ -53,7 +55,8 @@ component) or can be the result of a :doc:`compute <compute>` or
:doc:`variable <variable>`. In the latter cases, the compute, fix, or
variable must produce a per-atom vector, not a global quantity or
local quantity. If you wish to time-average global quantities from a
compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>` command.
compute, fix, or variable, then see the :doc:`fix ave/time <fix_ave_time>`
command.
Each per-atom value of each input vector is averaged independently.
@ -66,18 +69,18 @@ per-atom vectors.
Note that for values from a compute or fix, 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 "n\*" or
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
specify multiple values. This takes the form "\*" or "\*n" or "m\*" or
"m\*n." If :math:`N` is the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading
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 N (inclusive). A middle asterisk
asterisk means all indices from m 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 columns of the array
had been listed one by one. E.g. these 2 fix ave/atom commands are
had been listed one by one. For example, these two fix ave/atom commands are
equivalent, since the :doc:`compute stress/atom <compute_stress_atom>`
command creates a per-atom array with 6 columns:
command creates a per-atom array with six columns:
.. code-block:: LAMMPS
@ -89,61 +92,66 @@ command creates a per-atom array with 6 columns:
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of *Nfreq*\ . The average is over *Nrepeat*
quantities, computed in the preceding portion of the simulation every
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps
contributing to the average value cannot overlap,
i.e. Nrepeat\*Nevery can not exceed Nfreq.
The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
arguments specify on what timesteps the input values will be used in order to
contribute to the average. The final averaged quantities are generated on
timesteps that are a multiple of :math:`N_\text{freq}`\ . The average is over
:math:`N_\text{repeat}` quantities, computed in the preceding portion of the
simulation every :math:`N_\text{every}` timesteps. :math:`N_\text{freq}` must
be a multiple of :math:`N_\text{every}` and :math:`N_\text{every}` must be
non-zero even if :math:`N_\text{repeat}` is 1. Also, the timesteps
contributing to the average value cannot overlap; that is,
:math:`N_\text{repeat} N_\text{every}` cannot exceed :math:`N_\text{freq}`.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc.
For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
:math:`N_\text{freq}=100`, then values on timesteps 90, 92, 94, 96, 98, and 100
will be used to compute the final average on time step 100. Similarly for
timesteps 190, 192, 194, 196, 198, and 200 on time step 200, etc.
----------
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying
an input value from that compute.
The atom attribute values (*x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, and
*fz*) are self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the
:doc:`compute property/atom <compute_property_atom>` command and then
specifying an input value from that compute.
.. note::
The x,y,z attributes are values that are re-wrapped inside the
periodic box whenever an atom crosses a periodic boundary. Thus if
you time average an atom that spends half its time on either side of
The *x*\ , *y*\ , and *z* attributes are values that are re-wrapped inside
the periodic box whenever an atom crosses a periodic boundary. Thus, if
you time-average an atom that spends half of its time on either side of
the periodic box, you will get a value in the middle of the box. If
this is not what you want, consider averaging unwrapped coordinates,
which can be provided by the :doc:`compute property/atom <compute_property_atom>` command via its xu,yu,zu
attributes.
which can be provided by the
:doc:`compute property/atom <compute_property_atom>`
command via its *xu*, *yu*, and *zu* attributes.
If a value begins with "c\_", a compute ID must follow which has been
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 per-atom vector calculated by the compute is used. If a
bracketed term containing an index I is appended, the Ith column of
the per-atom array calculated by the compute is used. Users can also
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how I can
be specified with a wildcard asterisk to effectively specify multiple
values.
bracketed term containing an index :math:`I` is appended, the
:math:`I^\text{th}` column of the per-atom array calculated by the compute is
used. Users can also write code for their own compute styles and
:doc:`add them to LAMMPS <Modify>`. See the discussion above for how
:math:`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 per-atom vector calculated by the fix is used. If a
bracketed term containing an index I is appended, the Ith column of
the per-atom array calculated by the fix is used. Note that some
fixes only produce their values on certain timesteps, which must be
compatible with *Nevery*, else an error will result. Users can also
write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`. 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 per-atom
vector calculated by the fix is used. If a bracketed term containing an index
:math:`I` is appended, the :math:`I^\text{th}` column of the per-atom array
calculated by the fix is used. Note that some fixes only produce their values
on certain timesteps, which must be compatible with :math:`N_\text{every}`,
else an error will result. Users can also write code for their own fix styles
and :doc:`add them to LAMMPS <Modify>`. See the discussion above for how
:math:`I` can be specified with a wildcard asterisk to effectively specify
multiple values.
If a value begins with "v\_", a variable name must follow which has
been previously defined in the input script as an :doc:`atom-style variable <variable>` Variables of style *atom* can reference
thermodynamic keywords, or invoke other computes, fixes, or variables
If a value begins with "v\_," a variable name must follow which has
been previously defined in the input script as an
:doc:`atom-style variable <variable>`. Variables of style *atom* can reference
thermodynamic keywords or invoke other computes, fixes, or variables
when they are evaluated, so this is a very general means of generating
per-atom quantities to time average.
@ -152,19 +160,22 @@ per-atom quantities to time average.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix. No global scalar or vector quantities are
stored by this fix for access by various :doc:`output commands <Howto_output>`.
No information about this fix is written to
:doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
No global scalar or vector quantities are stored by this fix for access by
various :doc:`output commands <Howto_output>`.
This fix produces a per-atom vector or array which can be accessed by
various :doc:`output commands <Howto_output>`. A vector is produced if
only a single quantity is averaged by this fix. If two or more
quantities are averaged, then an array of values is produced. The
per-atom values can only be accessed on timesteps that are multiples
of *Nfreq* since that is when averaging is performed.
of :math:`N_\text{freq}` since that is when averaging is performed.
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>`.
the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
@ -173,7 +184,8 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`compute <compute>`, :doc:`fix ave/histo <fix_ave_histo>`,
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`variable <variable>`,
Default

View File

@ -6,7 +6,7 @@ fix ave/chunk command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ave/chunk Nevery Nrepeat Nfreq chunkID value1 value2 ... keyword args ...
@ -17,7 +17,7 @@ Syntax
* Nfreq = calculate averages every this many timesteps
* chunkID = ID of :doc:`compute chunk/atom <compute_chunk_atom>` command
* one or more input values can be listed
* value = vx, vy, vz, fx, fy, fz, density/mass, density/number, mass, temp, c_ID, c_ID[I], f_ID, f_ID[I], v_name
* value = *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, *density/mass*, *density/number*, *mass*, *temp*, c_ID, c_ID[I], f_ID, f_ID[I], v_name
.. parsed-literal::
@ -143,19 +143,19 @@ produce global quantities.
Note that for values from a compute or fix, 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 "n\*" or
"m\*n". If N = the size of the vector (for *mode* = scalar) or the
specify multiple values. This takes the form "\*" or "\*n" or "m\*" or
"m\*n". If :math:`N` is the size of the vector (for *mode* = scalar) or the
number of columns in the array (for *mode* = vector), then an asterisk
with no numeric values means all indices from 1 to N. A leading
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 N (inclusive). A middle asterisk
asterisk means all indices from m 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 columns of the array
had been listed one by one. E.g. these 2 fix ave/chunk commands are
had been listed one by one. For example, these two fix ave/chunk commands are
equivalent, since the :doc:`compute property/atom
<compute_property_atom>` command creates, in this case, a per-atom
array with 3 columns:
array with three columns:
.. code-block:: LAMMPS
@ -165,105 +165,109 @@ array with 3 columns:
.. note::
This fix works by creating an array of size *Nchunk* by Nvalues
on each processor. *Nchunk* is the number of chunks which is defined
by the :doc:`compute chunk/atom <compute_chunk_atom>` command.
Nvalues is the number of input values specified. Each processor loops
over its atoms, tallying its values to the appropriate chunk. Then
the entire array is summed across all processors. This means that
using a large number of chunks will incur an overhead in memory and
This fix works by creating an array of size
:math:`N_\text{chunk} \times N_\text{values}` on each processor.
:math:`N_\text{chunk}` is the number of chunks, which is defined by the
:doc:`compute chunk/atom <compute_chunk_atom>` command.
:math:`N_\text{values}` is the number of input values specified.
Each processor loops over its atoms, tallying its values to the appropriate
chunk. Then the entire array is summed across all processors. This means
that using a large number of chunks will incur an overhead in memory and
computational cost (summing across processors), so be careful to
define a reasonable number of chunks.
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
timesteps the input values will be accessed and contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiples of *Nfreq*\ . The average is over *Nrepeat*
quantities, computed in the preceding portion of the simulation every
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nrepeat\*Nevery
can not exceed Nfreq.
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 accessed and
contribute to the average. The final averaged quantities are generated on time
steps that are a multiples of :math:`N_\text{freq}`\ . The average is over
:math:`N_\text{repeat}` quantities, computed in the preceding portion of the
simulation every :math:`N_\text{every}` time steps. :math:`N_\text{freq}`
must be a multiple of :math:`N_\text{every}` and :math:`N_\text{every}` must be
non-zero even if :math:`N_\text{repeat} = 1`\ . Also, the time steps
contributing to the average value cannot overlap (i.e.,
:math:`N_\text{repeat}N_\text{every}` cannot exceed :math:`N_\text{freq}`).
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
:math:`N_\text{freq}=100`, then values on
time steps 90, 92, 94, 96, 98, 100 will be used to compute the final average
on time step 100. Similarly for time steps 190, 192, 194, 196, 198, 200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
time step 200, etc. If :math:`N_\text{repeat}=1` and
:math:`N_\text{freq} = 100`, then no time averaging is done; values are simply
generated on time steps 100, 200, etc.
Each input value can also be averaged over the atoms in each chunk.
The way the averaging is done across the *Nrepeat* timesteps to
produce output on the *Nfreq* timesteps, and across multiple *Nfreq*
outputs, is determined by the *norm* and *ave* keyword settings, as
discussed below.
The way the averaging is done across the :math:`N_\text{repeat}` time steps to
produce output on the :math:`N_\text{freq}` time steps, and across multiple
:math:`N_\text{freq}` outputs, is determined by the *norm* and *ave* keyword
settings, as discussed below.
.. note::
To perform per-chunk averaging within a *Nfreq* time window, the
number of chunks *Nchunk* defined by the :doc:`compute chunk/atom
<compute_chunk_atom>` command must remain constant. If the *ave*
keyword is set to *running* or *window* then *Nchunk* must remain
constant for the duration of the simulation. This fix forces the
chunk/atom compute specified by chunkID to hold *Nchunk* constant
for the appropriate time windows, by not allowing it to
re-calculate *Nchunk*, which can also affect how it assigns chunk
IDs to atoms. This is particularly important to understand if the
chunks defined by the :doc:`compute chunk/atom
To perform per-chunk averaging within a :math:`N_\text{freq}` time window,
the number of chunks :math:`N_\text{chunk}` defined by the
:doc:`compute chunk/atom <compute_chunk_atom>` command must remain
constant. If the *ave* keyword is set to *running* or *window* then
:math:`N_\text{chunk}` must remain constant for the duration of the
simulation. This fix forces the chunk/atom compute specified by chunkID to
hold :math:`N_\text{chunk}` constant for the appropriate time windows,
by not allowing it to re-calculate :math:`N_\text{chunk}`, which can also
affect how it assigns chunk IDs to atoms. This is particularly important to
understand if the chunks defined by the :doc:`compute chunk/atom
<compute_chunk_atom>` command are spatial bins. If its *units*
keyword is set to *box* or *lattice*, then the number of bins
*Nchunk* and size of each bin will be fixed over the *Nfreq* time
window, which can affect which atoms are discarded if the
simulation box size changes. If its *units* keyword is set to
*reduced*, then the number of bins *Nchunk* will still be fixed,
but the size of each bin can vary at each timestep if the
simulation box size changes, e.g. for an NPT simulation.
:math:`N_\text{chunk}` and size of each bin will be fixed over the
:math:`N_\text{freq}` time window, which can affect which atoms are
discarded if the simulation box size changes. If its *units* keyword is set
to *reduced*, then the number of bins :math:`N_\text{chunk}` will still be
fixed, but the size of each bin can vary at each time step if the
simulation box size changes (e.g., for an NPT simulation).
----------
The atom attribute values (vx,vy,vz,fx,fy,fz,mass) are
The atom attribute values (*vx*, *vy*, *vz*, *fx*, *fy*, *fz*, *mass*) are
self-explanatory. As noted above, any other atom attributes can be
used as input values to this fix by using the :doc:`compute
property/atom <compute_property_atom>` command and then specifying an
input value from that compute.
The *density/number* value means the number density is computed for
each chunk, i.e. number/volume. The *density/mass* value means the
mass density is computed for each chunk, i.e. total-mass/volume. The
output values are in units of 1/volume or density (mass/volume). See
each chunk (i.e., number/volume). The *density/mass* value means the
mass density is computed for each chunk (i.e., total-mass/volume). The
output values are in units of 1/volume or mass density (mass/volume). See
the :doc:`units <units>` command page for the definition of density
for each choice of units, e.g. gram/cm\^3. If the chunks defined by
for each choice of units (e.g., g/cm\ :math:`^3`). If the chunks defined by
the :doc:`compute chunk/atom <compute_chunk_atom>` command are spatial
bins, the volume is the bin volume. Otherwise it is the volume of the
bins, the volume is the bin volume. Otherwise, it is the volume of the
entire simulation box.
The *temp* value means the temperature is computed for each chunk, by
the formula
The *temp* value means the temperature is computed for each chunk,
by the formula
.. math::
\text{KE} = \frac{\text{DOF}}{2} k_B T,
where KE = total kinetic energy of the chunk of atoms (sum of
:math:`\frac{1}{2} m v^2`), DOF = the total number of degrees of freedom
for all atoms in the chunk, :math:`k_B` = Boltzmann constant, and
:math:`T` = temperature.
where KE is the total kinetic energy of the chunk of atoms (sum of
:math:`\frac{1}{2} m v^2`), DOF is the the total number of degrees of freedom
for all atoms in the chunk, :math:`k_B` is the Boltzmann constant, and
:math:`T` is the absolute temperature.
The DOF is calculated as N\*adof + cdof, where N = number of atoms in
the chunk, adof = degrees of freedom per atom, and cdof = degrees of
freedom per chunk. By default adof = 2 or 3 = dimensionality of
system, as set via the :doc:`dimension <dimension>` command, and cdof =
0.0. This gives the usual formula for temperature.
The DOF is calculated as :math:`N`\ \*adof + cdof, where :math:`N` is the
number of atoms in the chunk, adof is the number of degrees of freedom per
atom, and cdof is the number of degrees of freedom per chunk. By default,
adof = 2 or 3 = dimensionality of system,
as set via the :doc:`dimension <dimension>` command, and cdof = 0.0.
This gives the usual formula for temperature.
Note that currently this temperature only includes translational
degrees of freedom for each atom. No rotational degrees of freedom
are included for finite-size particles. Also no degrees of freedom
are included for finite-size particles. Also, no degrees of freedom
are subtracted for any velocity bias or constraints that are applied,
such as :doc:`compute temp/partial <compute_temp_partial>`, or
:doc:`fix shake <fix_shake>` or :doc:`fix rigid <fix_rigid>`. This is
because those degrees of freedom (e.g. a constrained bond) could apply
such as :doc:`compute temp/partial <compute_temp_partial>`,
:doc:`fix shake <fix_shake>`, or :doc:`fix rigid <fix_rigid>`. This is
because those degrees of freedom (e.g., a constrained bond) could apply
to sets of atoms that are both included and excluded from a specific
chunk, and hence the concept is somewhat ill-defined. In some cases,
you can use the *adof* and *cdof* keywords to adjust the calculated
@ -284,27 +288,27 @@ together as one set of atoms to calculate their temperature. The
compute allows the center-of-mass velocity of each chunk to be
subtracted before calculating the temperature; this fix does not.
If a value begins with "c\_", a compute ID must follow which has been
If a value begins with "c\_," a compute ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the compute is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the compute is used. Users can also write code for
their own compute styles and :doc:`add them to LAMMPS <Modify>`. See
the discussion above for how I can be specified with a wildcard
their own compute styles and :doc:`add them to LAMMPS <Modify>`.
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
If a value begins with "f\_," a fix ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the fix is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the fix is used. Note that some fixes only produce
their values on certain time steps, which must be compatible with
*Nevery*, else an error results. Users can also write code for their
own fix styles and :doc:`add them to LAMMPS <Modify>`. See the
:math:`N_\text{every}`, else an error results. Users can also write code for
their own fix styles and :doc:`add them to LAMMPS <Modify>`. See the
discussion above for how I can be specified with a wildcard asterisk
to effectively specify multiple values.
If a value begins with "v\_", a variable name must follow which has
If a value begins with "v\_," a variable name must follow which has
been previously defined in the input script. Variables of style
*atom* can reference thermodynamic keywords and various per-atom
attributes, or invoke other computes, fixes, or variables when they
@ -317,107 +321,107 @@ Additional optional keywords also affect the operation of this fix
and its outputs.
The *norm* keyword affects how averaging is done for the per-chunk
values that are output every *Nfreq* timesteps.
values that are output every :math:`N_\text{freq}` time steps.
It the *norm* setting is *all*, which is the default, a chunk value is
summed over all atoms in all *Nrepeat* samples, as is the count of
It the *norm* setting is *all*, which is the default, a chunk value is summed
over all atoms in all :math:`N_\text{repeat}` samples, as is the count of
atoms in the chunk. The averaged output value for the chunk on the
*Nfreq* timesteps is Total-sum / Total-count. In other words it is an
average over atoms across the entire *Nfreq* timescale. For the
*density/number* and *density/mass* values, the volume (bin volume or
:math:`N_\text{freq}` time steps is Total-sum / Total-count. In other words it
is an average over atoms across the entire :math:`N_\text{freq}` timescale.
For the *density/number* and *density/mass* values, the volume (bin volume or
system volume) used in the final normalization will be the volume at
the final *Nfreq* timestep. For the *temp* values, degrees of freedom
and kinetic energy are summed separately across the entire *Nfreq*
timescale, and the output value is calculated by dividing those two
sums.
the final :math:`N_\text{freq}` time step. For the *temp* values, degrees of
freedom and kinetic energy are summed separately across the entire
:math:`N_\text{freq}` timescale, and the output value is calculated by dividing
those two sums.
If the *norm* setting is *sample*, the chunk value is summed over
atoms for each sample, as is the count, and an "average sample value"
is computed for each sample, i.e. Sample-sum / Sample-count. The
output value for the chunk on the *Nfreq* timesteps is the average of
the *Nrepeat* "average sample values", i.e. the sum of *Nrepeat*
"average sample values" divided by *Nrepeat*\ . In other words it is an
average of an average. For the *density/number* and *density/mass*
values, the volume (bin volume or system volume) used in the
per-sample normalization will be the current volume at each sampling
step.
is computed for each sample (i.e., Sample-sum / Sample-count). The
output value for the chunk on the :math:`N_\text{freq}` time steps is the
average of the :math:`N_\text{repeat}` "average sample values" (i.e., the sum
of :math:`N_\text{repeat}` "average sample values" divided by
:math:`N_\text{repeat}`\ ). In other words, it is an average of an average.
For the *density/number* and *density/mass* values, the volume (bin volume or
system volume) used in the per-sample normalization will be the current volume
at each sampling step.
If the *norm* setting is *none*, a similar computation as for the
*sample* setting is done, except the individual "average sample
values" are "summed sample values". A summed sample value is simply
values" are "summed sample values." A summed sample value is simply
the chunk value summed over atoms in the sample, without dividing by
the number of atoms in the sample. The output value for the chunk on
the *Nfreq* timesteps is the average of the *Nrepeat* "summed sample
values", i.e. the sum of *Nrepeat* "summed sample values" divided by
*Nrepeat*\ . For the *density/number* and *density/mass* values, the
the :math:`N_\text{freq}` timesteps is the average of the
:math:`N_\text{repeat}` "summed sample values" (i.e., the sum of
:math:`N_\text{repeat}` "summed sample values" divided by
:math:`N_\text{repeat}`\ ).
For the *density/number* and *density/mass* values, the
volume (bin volume or system volume) used in the per-sample sum
normalization will be the current volume at each sampling step.
The *ave* keyword determines how the per-chunk values produced every
*Nfreq* steps are averaged with values produced on previous steps that
were multiples of *Nfreq*, before they are accessed by another output
command or written to a file.
:math:`N_\text{freq}` steps are averaged with values produced on previous steps
that were multiples of :math:`N_\text{freq}`, before they are accessed by
another output command or written to a file.
If the *ave* setting is *one*, which is the default, then the chunk
values produced on timesteps that are multiples of *Nfreq* are
independent of each other; they are output as-is without further
averaging.
values produced on timesteps that are multiples of :math:`N_\text{freq}` are
independent of each other; they are output as-is without further averaging.
If the *ave* setting is *running*, then the chunk values produced on
timesteps that are multiples of *Nfreq* are summed and averaged in a
cumulative sense before being output. Each output chunk value is thus
timesteps that are multiples of :math:`N_\text{freq}` are summed and averaged
in a cumulative sense before being output. Each output chunk value is thus
the average of the chunk value produced on that timestep with all
preceding values for the same chunk. This running average begins when
the fix is defined; it can only be restarted by deleting the fix via
the :doc:`unfix <unfix>` command, or re-defining the fix by
re-specifying it.
the :doc:`unfix <unfix>` command, or re-defining the fix by re-specifying it.
If the *ave* setting is *window*, then the chunk values produced on
timesteps that are multiples of *Nfreq* are summed and averaged within
a moving "window" of time, so that the last M values for the same
chunk are used to produce the output. E.g. if M = 3 and Nfreq = 1000,
then the output on step 10000 will be the average of the individual
chunk values on steps 8000,9000,10000. Outputs on early steps will
average over less than M values if they are not available.
timesteps that are multiples of :math:`N_\text{freq}` are summed and averaged
within a moving "window" of time, so that the last :math:`M` values for the
same chunk are used to produce the output. For example, if :math:`M = 3` and
:math:`N_\text{freq} = 1000`, then the output on step 10000 will be the average
of the individual chunk values on time steps 8000, 9000, and 10000. Outputs on
early steps will average over less than :math:`M` values if they are not
available.
The *bias* keyword specifies the ID of a temperature compute that
removes a "bias" velocity from each atom, specified as *bias-ID*\ . It
is only used when the *temp* value is calculated, to compute the
removes a "bias" velocity from each atom, specified as *bias-ID*\ .
It is only used when the *temp* value is calculated, to compute the
thermal temperature of each chunk after the translational kinetic
energy components have been altered in a prescribed way, e.g. to
remove a flow velocity profile. See the doc pages for individual
computes that calculate a temperature to see which ones implement a
bias.
energy components have been altered in a prescribed way (e.g., to
remove a flow velocity profile). See the doc pages for individual
computes that calculate a temperature to see which ones implement a bias.
The *adof* and *cdof* keywords define the values used in the degree of
freedom (DOF) formula described above for temperature calculation
for each chunk. They are only used when the *temp* value is
calculated. They can be used to calculate a more appropriate
temperature for some kinds of chunks. Here are 3 examples:
temperature for some kinds of chunks. Here are three examples:
If spatially binned chunks contain some number of water molecules and
:doc:`fix shake <fix_shake>` is used to make each molecule rigid, then
you could calculate a temperature with 6 degrees of freedom (DOF) (3
translational, 3 rotational) per molecule by setting *adof* to 2.0.
you could calculate a temperature with six degrees of freedom (DOF) (three
translational, three rotational) per molecule by setting *adof* to 2.0.
If :doc:`compute temp/partial <compute_temp_partial>` is used with the
*bias* keyword to only allow the x component of velocity to contribute
*bias* keyword to only allow the :math:`x` component of velocity to contribute
to the temperature, then *adof* = 1.0 would be appropriate.
If each chunk consists of a large molecule, with some number of its
bonds constrained by :doc:`fix shake <fix_shake>` or the entire molecule
by :doc:`fix rigid/small <fix_rigid>`, *adof* = 0.0 and *cdof* could be
set to the remaining degrees of freedom for the entire molecule
(entire chunk in this case), e.g. 6 for 3d, or 3 for 2d, for a rigid
(entire chunk in this case), that is, 6 for 3d or 3 for 2d for a rigid
molecule.
The *file* keyword allows a filename to be specified. Every *Nfreq*
timesteps, a section of chunk info will be written to a text file in
the following format. A line with the timestep and number of chunks
is written. Then one line per chunk is written, containing the chunk
ID (1-Nchunk), an optional original ID value, optional coordinate
values for chunks that represent spatial bins, the number of atoms in
the chunk, and one or more calculated values. More explanation of the
The *file* keyword allows a filename to be specified. Every
:math:`N_\text{freq}` timesteps, a section of chunk info will be written to a
text file in the following format. A line with the timestep and number of
chunks is written. Then one line per chunk is written, containing the chunk
ID :math:`(1-N_\text{chunk}),` an optional original ID value, optional
coordinate values for chunks that represent spatial bins, the number of atoms
in the chunk, and one or more calculated values. More explanation of the
optional values is given below. The number of values in each line
corresponds to the number of values specified in the fix ave/chunk
command. The number of atoms and the value(s) are summed or average
@ -430,10 +434,10 @@ output. This option can only be used with the *ave running* setting.
The *format* keyword sets the numeric format of each value when it is
printed to a file via the *file* keyword. Note that all values are
floating point quantities. The default format is %g. You can specify
a higher precision if desired, e.g. %20.16g.
a higher precision if desired (e.g., %20.16g).
The *title1* and *title2* and *title3* keywords allow specification of
the strings that will be printed as the first 3 lines of the output
the strings that will be printed as the first three lines of the output
file, assuming the *file* keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
@ -448,34 +452,33 @@ By default, these header lines are as follows:
In the first line, ID and name are replaced with the fix-ID and group
name. The second line describes the two values that are printed at
the first of each section of output. In the third line the values are
replaced with the appropriate value names, e.g. fx or c_myCompute[2].
replaced with the appropriate value names (e.g., *fx* or c_myCompute[2]).
The words in parenthesis only appear with corresponding columns if the
chunk style specified for the :doc:`compute chunk/atom
<compute_chunk_atom>` command supports them. The OrigID column is
only used if the *compress* keyword was set to *yes* for the
:doc:`compute chunk/atom <compute_chunk_atom>` command. This means
that the original chunk IDs (e.g. molecule IDs) will have been
that the original chunk IDs (e.g., molecule IDs) will have been
compressed to remove chunk IDs with no atoms assigned to them. Thus a
compressed chunk ID of 3 may correspond to an original chunk ID or
molecule ID of
415. The OrigID column will list 415 for the third chunk.
molecule ID of 415. The OrigID column will list 415 for the third chunk.
The CoordN columns only appear if a *binning* style was used in the
:doc:`compute chunk/atom <compute_chunk_atom>` command. For *bin/1d*,
*bin/2d*, and *bin/3d* styles the column values are the center point
of the bin in the corresponding dimension. Just Coord1 is used for
*bin/1d*, Coord2 is added for *bin/2d*, Coord3 is added for *bin/3d*\
. For *bin/sphere*, just Coord1 is used, and it is the radial
*bin/1d*, Coord2 is added for *bin/2d*, Coord3 is added for *bin/3d*\ .
For *bin/sphere*, just Coord1 is used, and it is the radial
coordinate. For *bin/cylinder*, Coord1 and Coord2 are used. Coord1
is the radial coordinate (away from the cylinder axis), and coord2 is
the coordinate along the cylinder axis.
Note that if the value of the *units* keyword used in the
:doc:`compute chunk/atom command <compute_chunk_atom>` is *box* or
*lattice*, the coordinate values will be in distance :doc:`units
<units>`. If the value of the *units* keyword is *reduced*, the
coordinate values will be in unitless reduced units (0-1). This is
*lattice*, the coordinate values will be in distance :doc:`units <units>`.
If the value of the *units* keyword is *reduced*, the
coordinate values will be in unitless reduced units (0--1). This is
not true for the Coord1 value of style *bin/sphere* or *bin/cylinder*
which both represent radial dimensions. Those values are always in
distance :doc:`units <units>`.
@ -491,20 +494,21 @@ relevant to this fix.
This fix computes a global array of values which can be accessed by
various :doc:`output commands <Howto_output>`. The values can only be
accessed on timesteps that are multiples of *Nfreq* since that is when
averaging is performed. The global array has # of rows = the number
of chunks *Nchunk* as calculated by the specified :doc:`compute
chunk/atom <compute_chunk_atom>` command. The # of columns =
M+1+Nvalues, where M = 1 to 4, depending on whether the optional
accessed on timesteps that are multiples of :math:`N_\text{freq}`, since that
is when averaging is performed. The global array has # of rows = the number
of chunks :math:`N_\text{chunk}`, as calculated by the specified
:doc:`compute chunk/atom <compute_chunk_atom>` command. The # of columns is
:math:`M+1+N_\text{values}`, where :math:`M \in \{1,\dotsc,4\}`,
depending on whether the optional
columns for OrigID and CoordN are used, as explained above. Following
the optional columns, the next column contains the count of atoms in
the chunk, and the remaining columns are the Nvalue quantities. When
the array is accessed with a row I that exceeds the current number of
the array is accessed with a row :math:`I` that exceeds the current number of
chunks, than a 0.0 is returned by the fix instead of an error, since
the number of chunks can vary as a simulation runs depending on how
that value is computed by the compute chunk/atom command.
The array values calculated by this fix are treated as "intensive",
The array values calculated by this fix are treated as "intensive,"
since they are typically already normalized by the count of atoms in
each chunk.
@ -519,7 +523,8 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
:doc:`fix ave/histo <fix_ave_histo>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`
Default

View File

@ -6,7 +6,7 @@ fix ave/correlate command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ave/correlate Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
@ -73,10 +73,12 @@ Description
Use one or more global scalar values as inputs every few timesteps,
calculate time correlations between them at varying time intervals,
and average the correlation data over longer timescales. The
resulting correlation values can be time integrated by
:doc:`variables <variable>` or used by other :doc:`output commands <Howto_output>` such as :doc:`thermo_style custom <thermo_style>`, and can also be written to a file. See the
:doc:`fix ave/correlate/long <fix_ave_correlate_long>` command for an
and average the correlation data over longer timescales. The resulting
correlation values can be time integrated by
:doc:`variables <variable>` or used by other
:doc:`output commands <Howto_output>` such as
:doc:`thermo_style custom <thermo_style>`, and can also be written to a file.
See the :doc:`fix ave/correlate/long <fix_ave_correlate_long>` command for an
alternate method for computing correlation functions efficiently over
very long time windows.
@ -89,9 +91,11 @@ Each listed value can be the result of a :doc:`compute <compute>` or
: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
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 convert a
per-atom quantity into a single global value, see the :doc:`compute reduce <compute_reduce>` command.
per-atom quantity into a single global value, see the
:doc:`compute reduce <compute_reduce>` command.
The input values must be all scalars. What kinds of
correlations between input values are calculated is determined by the
@ -110,16 +114,16 @@ be used, since they produce per-atom values.
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 "n\*" or "m\*n". If N = the size of the vector, then an
asterisk with no numeric values means all indices from 1 to N. A
"\*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 N (inclusive). A middle
asterisk means all indices from m to n (inclusive).
trailing asterisk means all indices from m 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 had been listed one by one. E.g. these 2 fix ave/correlate
commands are equivalent, since the :doc:`compute pressure
<compute_pressure>` command creates a global vector with 6 values.
vector had been listed one by one. For example, the following two fix
ave/correlate commands are equivalent, since the :doc:`compute pressure
<compute_pressure>` command creates a global vector with six values:
.. code-block:: LAMMPS
@ -139,151 +143,161 @@ commands are equivalent, since the :doc:`compute pressure
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
timesteps the input values will be used to calculate correlation data.
The input values are sampled every *Nevery* timesteps. The
correlation data for the preceding samples is computed on timesteps
that are a multiple of *Nfreq*\ . Consider a set of samples from some
initial time up to an output timestep. The initial time could be the
beginning of the simulation or the last output time; see the *ave*
The :math:`N_\text{every}`, :math:`N_\text{repeat}`, and :math:`N_\text{freq}`
arguments specify on what timesteps the input values will be used to calculate
correlation data. The input values are sampled every :math:`N_\text{every}`
time steps. The correlation data for the preceding samples is computed on
time steps that are a multiple of :math:`N_\text{freq}`\ . Consider a set of
samples from some initial time up to an output timestep. The initial time
could be the beginning of the simulation or the last output time; see the *ave*
keyword for options. For the set of samples, the correlation value
Cij is calculated as:
:math:`C_{ij}` is calculated as:
.. parsed-literal::
.. math::
Cij(delta) = ave(Vi(t)\*Vj(t+delta))
C_{ij}(\Delta t) = \left\langle V_i(t) V_j(t+\Delta t)\right\rangle,
which is the correlation value between input values Vi and Vj,
separated by time delta. Note that the second value Vj in the pair is
always the one sampled at the later time. The ave() represents an
average over every pair of samples in the set that are separated by
time delta. The maximum delta used is of size (\ *Nrepeat*\ -1)\*\ *Nevery*\ .
Thus the correlation between a pair of input values yields *Nrepeat*
correlation datums:
which is the correlation value between input values :math:`V_i` and
:math:`V_j`, separated by time :math:`\Delta t`. Note that the second value
:math:`V_j` in the pair is always the one sampled at the later time. The
average is an average over every pair of samples in the set that are separated
by time :math:`\Delta t`. The maximum :math:`\Delta t` used is of size
:math:`(N_\text{repeat} - 1) N_\text{every}`\ .
Thus the correlation between a pair of input values yields
:math:`N_\text{repeat}` correlation data:
.. parsed-literal::
.. math::
Cij(0), Cij(Nevery), Cij(2\*Nevery), ..., Cij((Nrepeat-1)\*Nevery)
C_{ij}(0), C_{ij}(N_\text{every}), C_{ij}(2N_\text{every}), \dotsc,
C_{ij}\bigl((N_\text{repeat}-1) N_\text{every}\bigr)
For example, if Nevery=5, Nrepeat=6, and Nfreq=100, then values on
timesteps 0,5,10,15,...,100 will be used to compute the final averages
on timestep 100. Six averages will be computed: Cij(0), Cij(5),
Cij(10), Cij(15), Cij(20), and Cij(25). Cij(10) on timestep 100 will
be the average of 19 samples, namely Vi(0)\*Vj(10), Vi(5)\*Vj(15),
Vi(10)\*V j20), Vi(15)\*Vj(25), ..., Vi(85)\*Vj(95), Vi(90)\*Vj(100).
For example, if :math:`N_\text{every}=5`, :math:`N_\text{repeat}=6`, and
:math:`N_\text{freq}=100`, then values on time steps
:math:`0, 5, 10, 15,\dotsc,100` will be used to compute the final averages
on time step 100. Six averages will be computed: :math:`C_{ij}(0)`,
:math:`C_{ij}(5)`, :math:`C_{ij}(10)`, :math:`C_{ij}(15)`, :math:`C_{ij}(20)`,
and :math:`C_{ij}(25)`. :math:`C_{ij}(10)` on time step 100 will
be the average of 19 samples, namely :math:`V_i(0) V_j(10)`,
:math:`V_i(5) V_j(15)`, :math:`V_i(10) V_j(20)`,
:math:`V_i(15) V_j(25), \dotsc,`
:math:`V_i(85) V_j(95)`, and :math:`V_i(90) V_j(100)`.
*Nfreq* must be a multiple of *Nevery*\ ; *Nevery* and *Nrepeat* must be
non-zero. Also, if the *ave* keyword is set to *one* which is the
default, then *Nfreq* >= (\ *Nrepeat*\ -1)\*\ *Nevery* is required.
:math:`N_\text{freq}` must be a multiple of :math:`N_\text{every}`;
:math:`N_\text{every}` and :math:`N_\text{repeat}` must be non-zero.
Also, if the *ave* keyword is set to *one* which is the default, then
:math:`N_\text{freq} \ge (N_\text{repeat} -1) N_\text{every}` is required.
----------
If a value begins with "c\_", a compute ID must follow which has been
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
bracketed term is appended, the :math:`I^\text{th}` element of the global
vector calculated by the compute is used. See the discussion above for how
:math:`I` can be specified with a wildcard asterisk to effectively specify
multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/correlate. Or it can be a compute
defined not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>`
that can sum per-atom quantities into a global scalar or vector which
can then be accessed by fix ave/correlate. It can also be a compute defined
not in your input script, but by :doc:`thermodynamic output <thermo_style>`
or other fixes such as :doc:`fix nvt <fix_nh>`
or :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
these commands which give the IDs of these computes. Users can also
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`.
If a value begins with "f\_", a fix ID must follow which has been
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.
bracketed term is appended, the :math:`I^\text{th}` element of the global
vector calculated by the fix is used. See the discussion above for how
:math:`I` can be specified with a wildcard asterisk to effectively specify
multiple values.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with *Nevery*, else an error will result.
Users can also write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`.
which must be compatible with :math:`N_\text{every}`, 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 referenced; the latter requires a
bracketed term to specify the Ith element of the vector calculated by
the variable. See the :doc:`variable <variable>` command for details.
Note that variables of style *equal* or *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 correlate.
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 referenced; the latter requires a bracketed term to specify
the :math:`I^\text{th}` element of the vector calculated by the variable.
See the :doc:`variable <variable>` command for details. Note that variables of
style *equal* or *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 correlate.
----------
Additional optional keywords also affect the operation of this fix.
The *type* keyword determines which pairs of input values are
correlated with each other. For N input values Vi, for i = 1 to N,
let the number of pairs = Npair. Note that the second value in the
pair Vi(t)\*Vj(t+delta) is always the one sampled at the later time.
correlated with each other. For :math:`N` input values :math:`V_i`,
with :math:`i \in \{1,\dotsc,N\}`, let the number of pairs be
:math:`N_\text{pair}`. Note that the second value in the
pair, :math:`V_i(t) V_j(t+\Delta t)`, is always the one sampled at the later
time.
* If *type* is set to *auto* then each input value is correlated with
itself. I.e. Cii = Vi\*Vi, for i = 1 to N, so Npair = N.
* If *type* is set
to *upper* then each input value is correlated with every succeeding
value. I.e. Cij = Vi\*Vj, for i < j, so Npair = N\*(N-1)/2.
* If *type* is set
to *lower* then each input value is correlated with every preceding
value. I.e. Cij = Vi\*Vj, for i > j, so Npair = N\*(N-1)/2.
itself (i.e., :math:`C_{ii} = V_i^2` for :math:`i \in \{1,\dotsc,N\}`,
so :math:`N_\text{pair} = N`).
* If *type* is set to *upper* then each input value is correlated with every
succeeding value (i.e., :math:`C_{ij} = V_i V_j` for :math:`i < j`, so
:math:`N_\text{pair} = N (N-1)/2`).
* If *type* is set to *lower* then each input value is correlated with every
preceding value (i.e., :math:`C_{ij} = V_i V_j` for :math:`i > j`, so
:math:`N_\text{pair} = N(N-1)/2`).
* If *type* is set to *auto/upper* then each input value is correlated
with itself and every succeeding value. I.e. Cij = Vi\*Vj, for i >= j,
so Npair = N\*(N+1)/2.
with itself and every succeeding value (i.e., :math:`C_{ij} = V_i V_j`
for :math:`i \ge j`, so :math:`N_\text{pair} = N(N+1)/2`).
* If *type* is set to *auto/lower* then each input value is correlated
with itself and every preceding value. I.e. Cij = Vi\*Vj, for i <= j,
so Npair = N\*(N+1)/2.
with itself and every preceding value (i.e., :math:`C_{ij} = V_i V_j`
for :math:`i \le j`, so :math:`N_\text{pair} = N(N+1)/2`).
* If *type* is set to *full* then each input value is correlated with
itself and every other value. I.e. Cij = Vi\*Vj, for i,j = 1,N so
Npair = N\^2.
itself and every other value (i.e., :math:`C_{ij} = V_i V_j` for
:math:`\{i,j\} = \{1,N\}`, so :math:`N_\text{pair} = N^2`).
The *ave* keyword determines what happens to the accumulation of
correlation samples every *Nfreq* timesteps. If the *ave* setting is
*one*, then the accumulation is restarted or zeroed every *Nfreq*
timesteps. Thus the outputs on successive *Nfreq* timesteps are
The *ave* keyword determines what happens to the accumulation of correlation
samples every :math:`N_\text{freq}` timesteps. If the *ave* setting is *one*,
then the accumulation is restarted or zeroed every :math:`N_\text{freq}`
timesteps. Thus the outputs on successive :math:`N_\text{freq}` timesteps are
essentially independent of each other. The exception is that the
Cij(0) = Vi(T)\*Vj(T) value at a timestep T, where T is a multiple of
*Nfreq*, contributes to the correlation output both at time T and at
time T+Nfreq.
:math:`C_{ij}(0) = V_i(t) V_j(t)` value at a time step :math:`t,` where
:math:`t` is a multiple of :math:`N_\text{freq}`, contributes to the
correlation output both at time :math:`t` and at time :math:`t+N_\text{freq}`.
If the *ave* setting is *running*, then the accumulation is never
zeroed. Thus the output of correlation data at any timestep is the
average over samples accumulated every *Nevery* steps since the fix
was defined. it can only be restarted by deleting the fix via the
:doc:`unfix <unfix>` command, or by re-defining the fix by re-specifying
it.
If the *ave* setting is *running*, then the accumulation is never zeroed.
Thus the output of correlation data at any timestep is the average over samples
accumulated every :math:`N_\text{every}` steps since the fix was defined.
It can only be restarted by deleting the fix via the :doc:`unfix <unfix>`
command, or by re-defining the fix by re-specifying it.
The *start* keyword specifies what time step the accumulation of
correlation samples will begin on. The default is step 0. Setting it
to a larger value can avoid adding non-equilibrated data to the
correlation averages.
The *prefactor* keyword specifies a constant which will be used as a
multiplier on the correlation data after it is averaged. It is
effectively a scale factor on Vi\*Vj, which can be used to account for
the size of the time window or other unit conversions.
The *prefactor* keyword specifies a constant which will be used as a multiplier
on the correlation data after it is averaged. It is effectively a scale factor
on :math:`V_i V_j`, which can be used to account for the size of the time
window or other unit conversions.
The *file* keyword allows a filename to be specified. Every *Nfreq*
steps, an array of correlation data is written to the file. The
number of rows is *Nrepeat*, as described above. The number of
columns is the Npair+2, also as described above. Thus the file ends
up to be a series of these array sections.
The *file* keyword allows a filename to be specified. Every
:math:`N_\text{freq}` steps, an array of correlation data is written to the
file. The number of rows is :math:`N_\text{repeat}`, as described above.
The number of columns is :math:`N_\text{pair}+2`, also as described above.
Thus the file ends up to be a series of these array sections.
The *overwrite* keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the *ave running* setting.
The *title1* and *title2* and *title3* keywords allow specification of
the strings that will be printed as the first 3 lines of the output
file, assuming the *file* keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
The *title1*, *title2*, and *title3* keywords allow specification of
the strings that will be printed as the first three lines of the output file,
assuming the *file* keyword was used. LAMMPS uses default values for each of
these, so they do not need to be specified.
By default, these header lines are as follows:
@ -300,18 +314,19 @@ appropriate fields from the fix ave/correlate command.
----------
Let Sij = a set of time correlation data for input values I and J,
namely the *Nrepeat* values:
Let :math:`S_{ij}` be a set of time correlation data for input values
:math:`I` and :math:`J`, namely the :math:`N_\text{repeat}` values:
.. parsed-literal::
.. math::
Sij = Cij(0), Cij(Nevery), Cij(2\*Nevery), ..., Cij(\*Nrepeat-1)\*Nevery)
S_{ij} = C_{ij}(0), C_{ij}(N_\text{every}), C_{ij}(2N_\text{every}),
\dotsc, C_{ijI}\bigl((N_\text{repeat}-1) N_\text{every}\bigr)
As explained below, these datums are output as one column of a global
As explained below, these data are output as one column of a global
array, which is effectively the correlation matrix.
The *trap* function defined for :doc:`equal-style variables <variable>`
can be used to perform a time integration of this vector of datums,
can be used to perform a time integration of this vector of data,
using a trapezoidal rule. This is useful for calculating various
quantities which can be derived from time correlation data. If a
normalization factor is needed for the time integration, it can be
@ -322,40 +337,43 @@ included in the variable formula or via the *prefactor* keyword.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix.
No information about this fix is written to
:doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
This fix computes a global array of values which can be accessed by
various :doc:`output commands <Howto_output>`. The values can only be
accessed on timesteps that are multiples of *Nfreq* since that is when
averaging is performed. The global array has # of rows = *Nrepeat*
and # of columns = Npair+2. The first column has the time delta (in
timesteps) between the pairs of input values used to calculate the
correlation, as described above. The second column has the number of
samples contributing to the correlation average, as described above.
The remaining Npair columns are for I,J pairs of the N input values,
as determined by the *type* keyword, as described above.
accessed on timesteps that are multiples of :math:`N_\text{freq}` since that is
when averaging is performed. The global array has # of rows
:math:`N_\text{repeat}` and # of columns :math:`N_\text{pair}+2`. The first
column has the time :math:`\Delta t` (in time steps) between the pairs of input
values used to calculate the correlation, as described above. The second
column has the number of samples contributing to the correlation average, as
described above. The remaining Npair columns are for :math:`I,J` pairs of the
:math:`N` input values, as determined by the *type* keyword, as described
above.
* For *type* = *auto*, the Npair = N columns are ordered: C11, C22, ...,
CNN.
* For *type* = *upper*, the Npair = N\*(N-1)/2 columns are ordered: C12,
C13, ..., C1N, C23, ..., C2N, C34, ..., CN-1N.
* For *type* = *lower*, the Npair = N\*(N-1)/2 columns are ordered: C21,
C31, C32, C41, C42, C43, ..., CN1, CN2, ..., CNN-1.
* For *type* = *auto/upper*, the Npair = N\*(N+1)/2 columns are ordered:
C11, C12, C13, ..., C1N, C22, C23, ..., C2N, C33, C34, ..., CN-1N,
CNN.
* For *type* = *auto/lower*, the Npair = N\*(N+1)/2 columns are ordered:
C11, C21, C22, C31, C32, C33, C41, ..., C44, CN1, CN2, ..., CNN-1,
CNN.
* For *type* = *full*, the Npair = N\^2 columns are ordered: C11, C12,
..., C1N, C21, C22, ..., C2N, C31, ..., C3N, ..., CN1, ..., CNN-1,
CNN.
* For *type* = *auto*, the :math:`N_\text{pair} = N` columns are ordered:
:math:`C_{11}, C_{22}, \dotsc, C_{NN}`
* For *type* = *upper*, the :math:`N_\text{pair} = N(N-1)/2` columns are
ordered: :math:`C_{12}, C_{13}, \dotsc, C_{1N}, C_{23}, \dotsc, C_{2N},
C_{34}, \dotsc, C_{N-1,N}`
* For *type* = *lower*, the :math:`N_\text{pair} = N(N-1)/2` columns are
ordered: :math:`C_{21}, C_{31}, C_{32}, C_{41}, C_{42}, C_{43I}, \dotsc,
C_{N1}, C_{N2}, \dotsc, C_{N,N-1}`
* For *type* = *auto/upper*, the :math:`N_\text{pair} = N(N+1)/2` columns are
ordered: :math:`C_{11}, C_{12}, C_{13}, \dotsc, C_{1N}, C_{22}, C_{23},
\dotsc, C_{2N}, C_{33}, C_{34}, \dotsc, C_{N-1,N}, C_{NN}`
* For *type* = *auto/lower*, the :math:`N_\text{pair} = N(N+1)/2` columns are
ordered: :math:`C_{11}, C_{21}, C_{22}, C_{31}, C_{32}, C_{33}, C_{41},
\dotsc, C_{44}, C_{N1}, C_{N2}, \dotsc, C_{N,N-1}, C_{NN}`
* For *type* = *full*, the :math:`N_\text{pair} = N^2` columns are ordered:
:math:`C_{11}, C_{12}, \dotsc, C_{1N}, C_{21}, C_{22}, \dotsc, C_{2N},
C_{31}, \dotsc, C_{3N}, \dotsc, C_{N1}, \dotsc, C_{N,N-1}, C_{NN}`
The array values calculated by this fix are treated as intensive. If
The array values calculated by this fix are treated as extensive. If
you need to divide them by the number of atoms, you must do this in a
later processing step, e.g. when using them in a
:doc:`variable <variable>`.
later processing step (e.g., when using them in a :doc:`variable <variable>`).
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>`.
@ -368,7 +386,8 @@ Related commands
""""""""""""""""
:doc:`fix ave/correlate/long <fix_ave_correlate_long>`,
:doc:`compute <compute>`, :doc:`fix ave/time <fix_ave_time>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`,
:doc:`compute <compute>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`,
:doc:`fix ave/histo <fix_ave_histo>`, :doc:`variable <variable>`
Default

View File

@ -6,7 +6,7 @@ fix ave/correlate/long command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ...
@ -66,10 +66,11 @@ Examples
Description
"""""""""""
This fix is similar in spirit and syntax to the :doc:`fix ave/correlate <fix_ave_correlate>`.
This fix is similar in spirit and syntax to the
:doc:`fix ave/correlate <fix_ave_correlate>`.
However, this fix allows the efficient calculation of time correlation
functions on-the-fly over extremely long time windows with little
additional CPU overhead, using a multiple-tau method
additional CPU overhead, using a multiple-:math:`\tau` method
:ref:`(Ramirez) <Ramirez>` that decreases the resolution of the stored
correlation function with time. It is not a full drop-in replacement.
@ -78,37 +79,41 @@ specified values may represent calculations performed by computes and
fixes which store their own "group" definitions.
Each listed value can be the result of a compute or fix or the
evaluation of an equal-style variable. See the :doc:`fix ave/correlate <fix_ave_correlate>` page for details.
evaluation of an equal-style variable. See the
:doc:`fix ave/correlate <fix_ave_correlate>` page for details.
The *Nevery* and *Nfreq* arguments specify on what time steps the input
values will be used to calculate correlation data, and the frequency
with which the time correlation functions will be output to a file.
Note that there is no *Nrepeat* argument, unlike the :doc:`fix ave/correlate <fix_ave_correlate>` command.
values will be used to calculate correlation data and the frequency
with which the time correlation functions will be output to a file,
respectively.
Note that there is no *Nrepeat* argument, unlike the
:doc:`fix ave/correlate <fix_ave_correlate>` command.
The optional keywords *ncorr*, *nlen*, and *ncount* are unique to this
command and determine the number of correlation points calculated and
the memory and CPU overhead used by this calculation. *Nlen* and
*ncount* determine the amount of averaging done at longer correlation
times. The default values *nlen=16*, *ncount=2* ensure that the
systematic error of the multiple-tau correlator is always below the
times. The default values *nlen* = 16 and *ncount* = 2 ensure that the
systematic error of the multiple-:math:`\tau` correlator is always below the
level of the statistical error of a typical simulation (which depends
on the ensemble size and the simulation length).
The maximum correlation time (in time steps) that can be reached is
given by the formula (nlen-1) \* ncount\^(ncorr-1). Longer correlation
given by the formula :math:`(nlen-1) ncount^{(ncorr-1)}`. Longer correlation
times are discarded and not calculated. With the default values of
the parameters (ncorr=20, nlen=16 and ncount=2), this corresponds to
7864320 time steps. If longer correlation times are needed, the value
of ncorr should be increased. Using nlen=16 and ncount=2, with
ncorr=30, the maximum number of steps that can be correlated is
80530636808. If ncorr=40, correlation times in excess of 8e12 time
steps can be calculated.
the parameters (:math:`ncorr=20`, :math:`nlen=16` and :math:`ncount=2`),
this corresponds to 7864320 time steps. If longer correlation times are
needed, the value of ncorr should be increased. Using :math:`nlen=16` and
:math:`ncount=2`, with :math:`ncorr=30`, the maximum number of steps that can
be correlated is 80530636808. If :math:`ncorr=40`, correlation times in excess
of :math:`8\times 10^{12}` time steps can be calculated.
The total memory needed for each correlation pair is roughly
4\*ncorr\*nlen\*8 bytes. With the default values of the parameters, this
corresponds to about 10 KB.
:math:`4 \times ncorr\times nlen \times 8` bytes.
With the default values of the parameters, this corresponds to about 10 KB.
For the meaning of the additional optional keywords, see the :doc:`fix ave/correlate <fix_ave_correlate>` doc page.
For the meaning of the additional optional keywords, see the
:doc:`fix ave/correlate <fix_ave_correlate>` doc page.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
@ -128,7 +133,8 @@ 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.
LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
Related commands
""""""""""""""""
@ -140,8 +146,9 @@ Default
none
The option defaults for keywords that are also keywords for the :doc:`fix ave/correlate <fix_ave_correlate>` command are as follows: type =
auto, start = 0, no file output, title 1,2 = strings as described on
The option defaults for keywords that are also keywords for the
:doc:`fix ave/correlate <fix_ave_correlate>` command are as follows:
type = auto, start = 0, no file output, title 1,2 = strings as described on
the :doc:`fix ave/correlate <fix_ave_correlate>` doc page.
The option defaults for keywords unique to this command are as

View File

@ -10,7 +10,7 @@ fix ave/histo/weight command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID style Nevery Nrepeat Nfreq lo hi Nbin value1 value2 ... keyword args ...
@ -22,7 +22,7 @@ Syntax
* lo,hi = lo/hi bounds within which to histogram
* Nbin = # of histogram bins
* one or more input values can be listed
* value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID[N], f_ID, f_ID[N], v_name
* value = *x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, c_ID, c_ID[N], f_ID, f_ID[N], v_name
.. parsed-literal::
@ -126,26 +126,27 @@ length. The first value (a scalar or vector) is what is histogrammed
into bins, in the same manner the fix ave/histo command operates. The
second value (a scalar or vector) is used as a "weight". This means
that instead of each value tallying a "1" to its bin, the
corresponding weight is tallied. E.g. The Nth entry (weight) in the
second vector is tallied to the bin corresponding to the Nth entry in
the first vector.
corresponding weight is tallied. For example, the :math:`N^\text{th}` entry
(weight) in the second vector is tallied to the bin corresponding to the
:math:`N^\text{th}` entry in the first vector.
----------
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 "n\*" or "m\*n". If N = the size of the vector (for *mode* =
scalar) or the number of columns in the array (for *mode* = vector),
then an asterisk with no numeric values means all indices from 1 to N.
"\*n" or "m\*" or "m\*n". If :math:`N` is the size of the vector
(for *mode* = scalar) or the number of columns in the array
(for *mode* = 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 N (inclusive). A middle
trailing asterisk means all indices from m 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 columns of the array had been listed one by one. E.g. these
2 fix ave/histo commands are equivalent, since the :doc:`compute
com/chunk <compute_com_chunk>` command creates a global array with 3
vector or columns of the array had been listed one by one. For example, the
following two fix ave/histo commands are equivalent, since the :doc:`compute
com/chunk <compute_com_chunk>` command creates a global array with three
columns:
.. code-block:: LAMMPS
@ -164,31 +165,35 @@ columns:
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
timesteps the input values will be used in order to contribute to the
histogram. The final histogram is generated on timesteps that are
multiple of *Nfreq*\ . It is averaged over *Nrepeat* histograms,
computed in the preceding portion of the simulation every *Nevery*
timesteps. *Nfreq* must be a multiple of *Nevery* and *Nevery* must
be non-zero even if *Nrepeat* is 1. Also, the timesteps
contributing to the histogram value cannot overlap,
i.e. Nrepeat\*Nevery can not exceed Nfreq.
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 histogram. The final histogram is generated on time steps
that are multiple of :math:`N_\text{freq}`\ . It is averaged over
:math:`N_\text{repeat}` histograms, computed in the preceding portion of the
simulation every :math:`N_\text{every}` time steps.
:math:`N_\text{freq}` must be a multiple of :math:`N_\text{every}` and
:math:`N_\text{every}` must be non-zero even if :math:`N_\text{repeat}` is 1.
Also, the time steps contributing to the histogram value cannot overlap
(i.e., :math:`N_\text{repeat}\times N_\text{every}` cannot exceed
:math:`N_\text{freq}`).
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then input values
on timesteps 90,92,94,96,98,100 will be used to compute the final
histogram on timestep 100. Similarly for timesteps
190,192,194,196,198,200 on timestep 200, etc. If Nrepeat=1 and Nfreq
= 100, then no time averaging of the histogram is done; a histogram is
simply generated on timesteps 100,200,etc.
For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
:math:`N_\text{freq}=100`, then input values on time steps 90, 92, 94, 96, 98,
and 100 will be used to compute the final histogram on timestep 100.
Similarly for timesteps 190, 192, 194, 196, 198, and 200 on timestep 200, etc.
If :math:`N_\text{repeat}=1` and :math:`N_\text{freq} = 100`, then no time
averaging of the histogram is done; a histogram is simply generated on
timesteps 100, 200, etc.
----------
The atom attribute values (x,y,z,vx,vy,vz,fx,fy,fz) are
self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the :doc:`compute property/atom <compute_property_atom>` command and then specifying
an input value from that compute.
The atom attribute values (*x*, *y*, *z*, *vx*, *vy*, *vz*, *fx*, *fy*, and
*fz*) are self-explanatory. Note that other atom attributes can be used as
inputs to this fix by using the
:doc:`compute property/atom <compute_property_atom>` command and then
specifying an input value from that compute.
If a value begins with "c\_", a compute ID must follow which has been
If a value begins with "c\_," a compute ID must follow which has been
previously defined in the input script. If *mode* = scalar, then if
no bracketed term is appended, the global scalar calculated by the
compute is used. If a bracketed term is appended, the Ith element of
@ -201,35 +206,38 @@ how I can be specified with a wildcard asterisk to effectively specify
multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/histo. Or it can be a compute defined
not in your input script, but by :doc:`thermodynamic output <thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>`
that can sum per-atom quantities into a global scalar or vector, which
can then be accessed by fix ave/histo. It can also be a compute defined
not in your input script, but by :doc:`thermodynamic output <thermo_style>`
or other fixes such as :doc:`fix nvt <fix_nh>`
or :doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
these commands which give the IDs of these computes. Users can also
write code for their own compute styles and :doc:`add them to LAMMPS <Modify>`.
write code for their own compute styles and
:doc:`add them to LAMMPS <Modify>`.
If a value begins with "f\_", a fix ID must follow which has been
If a value begins with "f\_," a fix ID must follow which has been
previously defined in the input script. If *mode* = scalar, then if
no bracketed term is appended, the global scalar calculated by the fix
is used. If a bracketed term is appended, the Ith element of the
global vector calculated by the fix is used. If *mode* = vector, then
if no bracketed term is appended, the global or per-atom or local
vector calculated by the fix is used. If a bracketed term is
appended, the Ith column of the global or per-atom or local array
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.
appended, the :math:`I^\text{th}` column of the global or per-atom or local
array calculated by the fix is used. See the discussion above for how
:math:`I` can be specified with a wildcard asterisk to effectively specify
multiple values.
Note that some fixes only produce their values on certain timesteps,
which must be compatible with *Nevery*, else an error will result.
Users can also write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`.
which must be compatible with :math:`N_\text{every}`, 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
If a value begins with "v\_," a variable name must follow which has
been previously defined in the input script. If *mode* = scalar, then
only equal-style or vector-style variables can be used, which both
produce global values. In this mode, a vector-style variable requires
a bracketed term to specify the Ith element of the vector calculated
by the variable. If *mode* = vector, then only vector-style or
a bracketed term to specify the :math:`I^\text{th}` element of the vector
calculated by the variable. If *mode* = vector, then only vector-style or
atom-style variables can be used, which produce a global or per-atom
vector respectively. The vector-style variable must be used without a
bracketed term. See the :doc:`variable <variable>` command for details.
@ -259,44 +267,44 @@ keyword should be used to specify which output will be used. The
remaining input arguments must still be consistent.
The *beyond* keyword determines how input values that fall outside the
*lo* to *hi* bounds are treated. Values such that *lo* <= value <=
*hi* are assigned to one bin. Values on a bin boundary are assigned
to the lower of the 2 bins. If *beyond* is set to *ignore* then
values < *lo* and values > *hi* are ignored, i.e. they are not binned.
If *beyond* is set to *end* then values < *lo* are counted in the
first bin and values > *hi* are counted in the last bin. If *beyond*
is set to *extend* then two extra bins are created, so that there are
Nbins+2 total bins. Values < *lo* are counted in the first bin and
values > *hi* are counted in the last bin (Nbins+2). Values between
*lo* and *hi* (inclusive) are counted in bins 2 through Nbins+1. The
"coordinate" stored and printed for these two extra bins is *lo* and
*hi*\ .
*lo* to *hi* bounds are treated. Values such that *lo* :math:`\le` value
:math:`\le` *hi* are assigned to one bin. Values on a bin boundary are
assigned to the lower of the two bins. If *beyond* is set to *ignore* then
values :math:`<` *lo* and values :math:`>` *hi* are ignored (i.e., they are not
binned). If *beyond* is set to *end*, then values :math:`<` *lo* are counted in
the first bin and values :math:`>` *hi* are counted in the last bin.
If *beyond* is set to *extend*, then two extra bins are created so that there
are :math:`N_\text{bins}+2` total bins. Values :math:`<` *lo* are counted in
the first bin and values :math:`>` *hi* are counted in the last bin
:math:`(N_\text{bins}+2)`\ . Values between
*lo* and *hi* (inclusive) are counted in bins 2 through
:math:`N_\text{bins}+1`\ . The "coordinate" stored and printed for these two
extra bins is *lo* and *hi*\ .
The *ave* keyword determines how the histogram produced every *Nfreq*
steps are averaged with histograms produced on previous steps that
were multiples of *Nfreq*, before they are accessed by another output
command or written to a file.
The *ave* keyword determines how the histogram produced every
:math:`N_\text{freq}` steps are averaged with histograms produced on previous
steps that were multiples of :math:`N_\text{freq}`, before they are accessed by
another output command or written to a file.
If the *ave* setting is *one*, then the histograms produced on
timesteps that are multiples of *Nfreq* are independent of each other;
they are output as-is without further averaging.
timesteps that are multiples of :math:`N_\text{freq}` are independent of each
other; they are output as-is without further averaging.
If the *ave* setting is *running*, then the histograms produced on
timesteps that are multiples of *Nfreq* are summed and averaged in a
cumulative sense before being output. Each bin value in the histogram
is thus the average of the bin value produced on that timestep with
all preceding values for the same bin. This running average begins
when the fix is defined; it can only be restarted by deleting the fix
via the :doc:`unfix <unfix>` command, or by re-defining the fix by
re-specifying it.
timesteps that are multiples of :math:`N_\text{freq}` are summed and averaged
in a cumulative sense before being output. Each bin value in the histogram
is thus the average of the bin value produced on that timestep with all
preceding values for the same bin. This running average begins when the fix is
defined; it can only be restarted by deleting the fix via the
:doc:`unfix <unfix>` command, or by re-defining the fix by re-specifying it.
If the *ave* setting is *window*, then the histograms produced on
timesteps that are multiples of *Nfreq* are summed within a moving
"window" of time, so that the last M histograms are used to produce
the output. E.g. if M = 3 and Nfreq = 1000, then the output on step
10000 will be the combined histogram of the individual histograms on
steps 8000,9000,10000. Outputs on early steps will be sums over less
than M histograms if they are not available.
timesteps that are multiples of :math:`N_\text{freq}` are summed within a
moving "window" of time, so that the last :math:`M` histograms are used to
produce the output (e.g., if :math:`M = 3` and :math:`N_\text{freq} = 1000`,
then the output on step 10000 will be the combined histogram of the individual
histograms on steps 8000, 9000, and 10000. Outputs on early steps will be sums
over less than :math:`M` histograms if they are not available.
The *start* keyword specifies what timestep histogramming will begin
on. The default is step 0. Often input values can be 0.0 at time 0,
@ -321,8 +329,8 @@ The *overwrite* keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the *ave running* setting.
The *title1* and *title2* and *title3* keywords allow specification of
the strings that will be printed as the first 3 lines of the output
The *title1*, *title2*, and *title3* keywords allow specification of
the strings that will be printed as the first three lines of the output
file, assuming the *file* keyword was used. LAMMPS uses default
values for each of these, so they do not need to be specified.
@ -336,7 +344,7 @@ By default, these header lines are as follows:
In the first line, ID is replaced with the fix-ID. The second line
describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in
of output. The third describes the four values printed for each bin in
the histogram.
----------
@ -344,13 +352,14 @@ the histogram.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix.
No information about this fix is written to
:doc:`binary restart files <restart>`.
None of the :doc:`fix_modify <fix_modify>` options are relevant to this fix.
This fix produces a global vector and global array which can be
accessed by various :doc:`output commands <Howto_output>`. The values
can only be accessed on timesteps that are multiples of *Nfreq* since
that is when a histogram is generated. The global vector has 4
can only be accessed on timesteps that are multiples of :math:`N_\text{freq}`
since that is when a histogram is generated. The global vector has four
values:
* 1 = total counts in the histogram
@ -358,19 +367,20 @@ values:
* 3 = min value of all input values, including ones not histogrammed
* 4 = max value of all input values, including ones not histogrammed
The global array has # of rows = Nbins and # of columns = 3. The
The global array has :math:`N_\text{bins}` rows and three columns. The
first column has the bin coordinate, the second column has the count of
values in that histogram bin, and the third column has the bin count
divided by the total count (not including missing counts), so that the
values in the third column sum to 1.0.
The vector and array values calculated by this fix are all treated as
intensive. If this is not the case, e.g. due to histogramming
per-atom input values, then you will need to account for that when
intensive. If this is not the case (e.g., due to histogramming
per-atom input values), then you will need to account for that when
interpreting the values produced by this fix.
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>`.
the :doc:`run <run>` command.
This fix is not invoked during :doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
@ -379,7 +389,8 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/time <fix_ave_time>`,
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`,
Default

View File

@ -6,7 +6,7 @@ fix ave/time command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
@ -86,9 +86,11 @@ Each listed value can be the result of a :doc:`compute <compute>` or
: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>`,
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.
per-atom quantity into a single global quantity, see the
:doc:`compute reduce <compute_reduce>` command.
:doc:`Computes <compute>` that produce global quantities are those which
do not have the word *atom* in their style name. Only a few
@ -100,13 +102,13 @@ be used, since they produce per-atom values.
The input values must either be all scalars or all vectors depending
on the setting of the *mode* keyword. In both cases, the averaging is
performed independently on each input value. I.e. each input scalar
performed independently on each input value (i.e., each input scalar
is averaged independently or each element of each input vector is
averaged independently.
averaged independently).
If *mode* = scalar, then the input values must be scalars, or vectors
with a bracketed term appended, indicating the Ith value of the vector
is used.
with a bracketed term appended, indicating the :math:`I^\text{th}` value of the
vector is used.
If *mode* = vector, then the input values must be vectors, or arrays
with a bracketed term appended, indicating the Ith column of the array
@ -118,17 +120,17 @@ the vector or number of rows in the array.
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 "n\*" or "m\*n". If N = the size of the vector (for *mode* =
"\*n" or "m\*" or "m\*n". If :math:`N` is the size of the vector (for *mode* =
scalar) or the number of columns in the array (for *mode* = vector),
then an asterisk with no numeric values means all indices from 1 to N.
A leading asterisk means all indices from 1 to n (inclusive). A
trailing asterisk means all indices from n to N (inclusive). A middle
asterisk means all indices from m to n (inclusive).
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 columns of the array had been listed one by one. E.g. these
2 fix ave/time commands are equivalent, since the :doc:`compute rdf
<compute_rdf>` command creates, in this case, a global array with 3
vector or columns of the array had been listed one by one. For example, the
following two fix ave/time commands are equivalent, since the :doc:`compute rdf
<compute_rdf>` command creates, in this case, a global array with three
columns, each of length 50:
.. code-block:: LAMMPS
@ -147,20 +149,22 @@ columns, each of length 50:
----------
The *Nevery*, *Nrepeat*, and *Nfreq* arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of *Nfreq*\ . The average is over *Nrepeat*
quantities, computed in the preceding portion of the simulation every
*Nevery* timesteps. *Nfreq* must be a multiple of *Nevery* and
*Nevery* must be non-zero even if *Nrepeat* is 1. Also, the timesteps
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 averaged quantities are generated on
time steps that are a multiple of :math:`N_\text{freq}`\ . The average is over
:math:`N_\text{repeat}` quantities, computed in the preceding portion of the
simulation every :math:`N_\text{every}` time steps. :math:`N_\text{freq}` must
be a multiple of :math:`N_\text{every}` and :math:`N_\text{every}` must be
non-zero even if :math:`N_\text{repeat} = 1`. Also, the time steps
contributing to the average value cannot overlap,
i.e. Nrepeat\*Nevery can not exceed Nfreq.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
For example, if :math:`N_\text{every}=2`, :math:`N_\text{repeat}=6`, and
:math:`N_\text{freq}=100`, then values on time steps 90, 92, 94, 96, 98, and
100 will be used to compute the final average on time step 100. Similarly for
time steps 190, 192, 194, 196, 198, and 200 on time step 200, etc.
If :math:`N_\text{repeat}=1` and :math:`N_\text{freq} = 100`, then no time
averaging is done; values are simply generated on time steps
100, 200, etc.
@ -178,8 +182,8 @@ See the discussion above for how I can be specified with a wildcard
asterisk to effectively specify multiple values.
Note that there is a :doc:`compute reduce <compute_reduce>` command
which can sum per-atom quantities into a global scalar or vector which
can thus be accessed by fix ave/time. Or it can be a compute defined
that can sum per-atom quantities into a global scalar or vector, which
can then be accessed by fix ave/time. It can also be a compute defined
not in your input script, but by :doc:`thermodynamic output
<thermo_style>` or other fixes such as :doc:`fix nvt <fix_nh>` or
:doc:`fix temp/rescale <fix_temp_rescale>`. See the doc pages for
@ -228,18 +232,18 @@ vectors, or columns of global arrays. They can also be global arrays,
which are converted into a series of global vectors (one per column),
as explained above.
The *ave* keyword determines how the values produced every *Nfreq*
steps are averaged with values produced on previous steps that were
multiples of *Nfreq*, before they are accessed by another output
command or written to a file.
The *ave* keyword determines how the values produced every
:math:`N_\text{freq}` steps are averaged with values produced on previous steps
that were multiples of :math:`N_\text{freq}`, before they are accessed by
another output command or written to a file.
If the *ave* setting is *one*, then the values produced on time steps
that are multiples of *Nfreq* are independent of each other; they are
output as-is without further averaging.
that are multiples of :math:`N_\text{freq}` are independent of each other; they
are output as-is without further averaging.
If the *ave* setting is *running*, then the values produced on
timesteps that are multiples of *Nfreq* are summed and averaged in a
cumulative sense before being output. Each output value is thus the
time steps that are multiples of :math:`N_\text{freq}` are summed and averaged
in a cumulative sense before being output. Each output value is thus the
average of the value produced on that time step with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the :doc:`unfix <unfix>`
@ -248,10 +252,10 @@ command, or by re-defining the fix by re-specifying it.
If the *ave* setting is *window*, then the values produced on
time steps that are multiples of *Nfreq* are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
produce the output. For example, if :math:`M = 3` and
:math:`N_\text{freq} = 1000`, then the output on step 10000 will be the average
of the individual values on steps 8000, 9000, and 10000. Outputs on early
steps will average over less than :math:`M` values if they are not available.
The *start* keyword specifies what time step averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
@ -262,9 +266,9 @@ The *off* keyword can be used to flag any of the input values. If a
value is flagged, it will not be time averaged. Instead the most
recent input value will always be stored and output. This is useful
if one of more of the inputs produced by a compute or fix or variable
are effectively constant or are simply current values. E.g. they are
are effectively constant or are simply current values (e.g., they are
being written to a file with other time-averaged values for purposes
of creating well-formatted output.
of creating well-formatted output).
The *file* keyword allows a filename to be specified. Every *Nfreq*
steps, one quantity or vector of quantities is written to the file for
@ -294,7 +298,7 @@ output. This option can only be used with the *ave running* setting.
The *format* keyword sets the numeric format of each value when it is
printed to a file via the *file* keyword. Note that all values are
floating point quantities. The default format is %g. You can specify
a higher precision if desired, e.g. %20.16g.
a higher precision if desired (e.g., %20.16g).
The *title1* and *title2* and *title3* keywords allow specification of
the strings that will be printed as the first 2 or 3 lines of the
@ -341,7 +345,7 @@ a YAML format file this name will be in the list of keywords.
This fix produces a global scalar or global vector or global array
which can be accessed by various :doc:`output commands <Howto_output>`.
The values can only be accessed on time steps that are multiples of
*Nfreq* since that is when averaging is performed.
:math:`N_\text{freq}` since that is when averaging is performed.
A scalar is produced if only a single input value is averaged and
*mode* = scalar. A vector is produced if multiple input values are
@ -354,17 +358,18 @@ of rows = length of the input vectors and # of columns = number of
inputs.
If the fix produces a scalar or vector, then the scalar and each
element of the vector can be either "intensive" or "extensive",
element of the vector can be either "intensive" or "extensive,"
depending on whether the values contributing to the scalar or vector
element are "intensive" or "extensive". If the fix produces an array,
element are "intensive" or "extensive." If the fix produces an array,
then all elements in the array must be the same, either "intensive" or
"extensive". If a compute or fix provides the value being time
"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>`.
the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
Restrictions
""""""""""""
@ -373,7 +378,8 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`, :doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/histo <fix_ave_histo>`,
:doc:`compute <compute>`, :doc:`fix ave/atom <fix_ave_atom>`,
:doc:`fix ave/chunk <fix_ave_chunk>`, :doc:`fix ave/histo <fix_ave_histo>`,
:doc:`variable <variable>`, :doc:`fix ave/correlate <fix_ave_correlate>`,
Default

View File

@ -6,7 +6,7 @@ fix aveforce command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID aveforce fx fy fz keyword value ...
@ -48,13 +48,13 @@ component. The actual force on each atom is then set to the average
value plus the component specified in this command. This means each
atom in the group receives the same force.
Any of the fx,fy,fz values can be specified as NULL which means the
force in that dimension is not changed. Note that this is not the
Any of the *fx*, *fy*, or *fz* values can be specified as :code:`NULL`, which
means the force in that dimension is not changed. Note that this is not the
same as specifying a 0.0 value, since that sets all forces to the same
average value without adding in any additional force.
Any of the 3 quantities defining the force components can be specified
as an equal-style :doc:`variable <variable>`, namely *fx*, *fy*, *fz*\ .
Any of the three quantities defining the force components, namely *fx*, *fy*,
and *fz*, can be specified as an equal-style :doc:`variable <variable>`\ .
If the value is a variable, it should be specified as v_name, where
name is the variable name. In this case, the variable will be
evaluated each timestep, and its value used to determine the average
@ -78,17 +78,17 @@ to it.
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`.
No information about this fix is written to
:doc:`binary restart files <restart>`.
The :doc:`fix_modify <fix_modify>` *respa* option is supported by this
fix. This allows to set at which level of the :doc:`r-RESPA <run_style>`
integrator the fix is adding its forces. Default is the outermost level.
This fix computes a global 3-vector of forces, which can be accessed
This fix computes a global three-vector of forces, which can be accessed
by various :doc:`output commands <Howto_output>`. This is the total
force on the group of atoms before the forces on individual atoms are
changed by the fix. The vector values calculated by this fix are
"extensive".
changed by the fix. The vector values calculated by this fix are "extensive".
No parameter of this fix can be used with the *start/stop* keywords of
the :doc:`run <run>` command.

View File

@ -6,7 +6,7 @@ fix balance command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID balance Nfreq thresh style args keyword args ...
@ -19,7 +19,7 @@ Syntax
.. parsed-literal::
shift args = dimstr Niter stopthresh
dimstr = sequence of letters containing "x" or "y" or "z", each not more than once
dimstr = sequence of letters containing *x* or *y* or *z*, each not more than once
Niter = # of times to iterate within each dimension of dimstr sequence
stopthresh = stop balancing when this imbalance threshold is reached
*rcb* args = none
@ -72,10 +72,10 @@ perform "static" balancing, before or between runs, see the
Load-balancing is typically most useful if the particles in the
simulation box have a spatially-varying density distribution or
where the computational cost varies significantly between different
atoms. E.g. a model of a vapor/liquid interface, or a solid with
atoms (e.g., a model of a vapor/liquid interface, or a solid with
an irregular-shaped geometry containing void regions, or
:doc:`hybrid pair style simulations <pair_hybrid>` which combine
pair styles with different computational cost. In these cases, the
:doc:`hybrid pair style simulations <pair_hybrid>` that combine
pair styles with different computational cost). In these cases, the
LAMMPS default of dividing the simulation box volume into a
regular-spaced grid of 3d bricks, with one equal-volume sub-domain
per processor, may assign numbers of particles per processor in a
@ -92,28 +92,30 @@ processor.
.. note::
The weighting options listed above are documented with the
:doc:`balance <balance>` command in :ref:`this section of the balance command <weighted_balance>` doc page. That section
:doc:`balance <balance>` command in :ref:`this section of the balance
command <weighted_balance>` doc page. That section
describes the various weighting options and gives a few examples of
how they can be used. The weighting options are the same for both the
fix balance and :doc:`balance <balance>` commands.
Note that the :doc:`processors <processors>` command allows some control
over how the box volume is split across processors. Specifically, for
a Px by Py by Pz grid of processors, it allows choice of Px, Py, and
Pz, subject to the constraint that Px \* Py \* Pz = P, the total number
of processors. This is sufficient to achieve good load-balance for
a :math:`P_x \times P_y \times P_z` grid of processors, it allows choices of
:math:`P_x`, :math:`P_y`, and :math:`P_z` subject to the constraint that
:math:`P_x P_y P_z = P`, the total number of processors.
This is sufficient to achieve good load-balance for
some problems on some processor counts. However, all the processor
sub-domains will still have the same shape and same volume.
sub-domains will still have the same shape and the same volume.
On a particular time step, a load-balancing operation is only performed
if the current "imbalance factor" in particles owned by each processor
exceeds the specified *thresh* parameter. The imbalance factor is
defined as the maximum number of particles (or weight) owned by any
processor, divided by the average number of particles (or weight) per
processor. Thus an imbalance factor of 1.0 is perfect balance.
processor. Thus, an imbalance factor of 1.0 is perfect balance.
As an example, for 10000 particles running on 10 processors, if the
most heavily loaded processor has 1200 particles, then the factor is
most heavily loaded processor has 1200 particles, then the imbalance factor is
1.2, meaning there is a 20% imbalance. Note that re-balances can be
forced even if the current balance is perfect (1.0) be specifying a
*thresh* < 1.0.
@ -125,28 +127,29 @@ forced even if the current balance is perfect (1.0) be specifying a
may not be achieved. For example, "grid" methods (defined below) that
create a logical 3d grid cannot achieve perfect balance for many
irregular distributions of particles. Likewise, if a portion of the
system is a perfect lattice, e.g. the initial system is generated by
the :doc:`create_atoms <create_atoms>` command, then "grid" methods may
be unable to achieve exact balance. This is because entire lattice
planes will be owned or not owned by a single processor.
system is a perfect, non-rotated lattice (e.g., the initial system is
generated by the :doc:`create_atoms <create_atoms>` command with no
rotations), then "grid" methods may be unable to achieve exact balance.
This is because entire lattice planes will be owned or not owned by a single
processor.
.. note::
The imbalance factor is also an estimate of the maximum speed-up
you can hope to achieve by running a perfectly balanced simulation
versus an imbalanced one. In the example above, the 10000 particle
versus an imbalanced one. In the example above, the 10000-particle
simulation could run up to 20% faster if it were perfectly balanced,
versus when imbalanced. However, computational cost is not strictly
proportional to particle count, and changing the relative size and
shape of processor sub-domains may lead to additional computational
and communication overheads, e.g. in the PPPM solver used via the
:doc:`kspace_style <kspace_style>` command. Thus you should benchmark
and communication overheads (e.g., in the PPPM solver used via the
:doc:`kspace_style <kspace_style>` command). Thus, you should benchmark
the run times of a simulation before and after balancing.
----------
The method used to perform a load balance is specified by one of the
listed styles, which are described in detail below. There are 2 kinds
listed styles, which are described in detail below. There are two kinds
of styles.
The *shift* style is a "grid" method which produces a logical 3d grid
@ -198,11 +201,12 @@ The *group-ID* is ignored. However the impact of balancing on
different groups of atoms can be affected by using the *group* weight
style as described below.
The *Nfreq* setting determines how often a re-balance is performed. If
*Nfreq* > 0, then re-balancing will occur every *Nfreq* steps. Each
time a re-balance occurs, a reneighboring is triggered, so *Nfreq*
should not be too small. If *Nfreq* = 0, then re-balancing will be
done every time reneighboring normally occurs, as determined by the
The :math:`N_\text{freq}` setting determines how often a re-balance is
performed. If :math:`N_\text{freq} > 0`, then re-balancing will occur every
:math:`N_\text{freq}` steps. Each time a re-balance occurs, a reneighboring is
triggered, so :math:`N_\text{freq}` should not be too small. If
:math:`N_\text{freq} = 0`, then re-balancing will be done every time
reneighboring normally occurs, as determined by the
the :doc:`neighbor <neighbor>` and :doc:`neigh_modify <neigh_modify>`
command settings.
@ -216,7 +220,7 @@ above. It changes the positions of cutting planes between processors
in an iterative fashion, seeking to reduce the imbalance factor.
The *dimstr* argument is a string of characters, each of which must be
an "x" or "y" or "z". Each character can appear zero or one time,
*x* or *y* or *z*. Each character can appear zero or one time,
since there is no advantage to balancing on a dimension more than
once. You should normally only list dimensions where you expect there
to be a density variation in the particles.
@ -224,8 +228,8 @@ to be a density variation in the particles.
Balancing proceeds by adjusting the cutting planes in each of the
dimensions listed in *dimstr*, one dimension at a time. For a single
dimension, the balancing operation (described below) is iterated on up
to *Niter* times. After each dimension finishes, the imbalance factor
is re-computed, and the balancing operation halts if the *stopthresh*
to :math:`N_\text{iter}` times. After each dimension finishes, the imbalance
factor is re-computed, and the balancing operation halts if the *stopthresh*
criterion is met.
A re-balance operation in a single dimension is performed using a
@ -265,15 +269,15 @@ the normal reneighboring procedure.
by the extent of a processor's sub-domain in one dimension. The size
of this bracketing region shrinks based on the local density, as
described above, which should typically be 1/2 or more every
iteration. Thus if *Niter* is specified as 10, the cutting plane will
typically be positioned to better than 1 part in 1000 accuracy
(relative to the perfect target position). For *Niter* = 20, it will
be accurate to better than 1 part in a million. Thus there is no need
to set *Niter* to a large value. This is especially true if you are
re-balancing often enough that each time you expect only an incremental
adjustment in the cutting planes is necessary. LAMMPS will check if
the threshold accuracy is reached (in a dimension) is less iterations
than *Niter* and exit early.
iteration. Thus if :math:`N_\text{iter}` is specified as 10, the cutting
plane will typically be positioned to better than 1 part in 1000 accuracy
(relative to the perfect target position). For :math:`N_\text{iter} = 20`,
it will be accurate to better than 1 part in a million. Thus there is no
need to set :math:`N_\text{iter}` to a large value. This is especially true
if you are re-balancing often enough that each time you expect only an
incremental adjustment in the cutting planes is necessary. LAMMPS will
check if the threshold accuracy is reached (in a dimension) is less
iterations than :math:`N_\text{iter}` and exit early.
----------
@ -281,12 +285,12 @@ The *rcb* style invokes a "tiled" method for balancing, as described
above. It performs a recursive coordinate bisectioning (RCB) of the
simulation domain. The basic idea is as follows.
The simulation domain is cut into 2 boxes by an axis-aligned cut in
The simulation domain is cut into two boxes by an axis-aligned cut in
the longest dimension, leaving one new box on either side of the cut.
All the processors are also partitioned into 2 groups, half assigned
All the processors are also partitioned into two groups, half assigned
to the box on the lower side of the cut, and half to the box on the
upper side. (If the processor count is odd, one side gets an extra
processor.) The cut is positioned so that the number of atoms in the
upper side. If the processor count is odd, one side gets an extra
processor. The cut is positioned so that the number of atoms in the
lower box is exactly the number that the processors assigned to that
box should own for load balance to be perfect. This also makes load
balance for the upper box perfect. The positioning is done
@ -309,7 +313,7 @@ results of each re-balancing operation. The file contains the bounds
of the sub-domain for each processor after the balancing operation
completes. The format of the file is compatible with the
`Pizza.py <pizza_>`_ *mdump* tool which has support for manipulating and
visualizing mesh files. An example is shown here for a balancing by 4
visualizing mesh files. An example is shown here for a balancing by four
processors for a 2d problem:
.. parsed-literal::
@ -349,27 +353,28 @@ processors for a 2d problem:
3 1 9 10 11 12
4 1 13 14 15 16
The coordinates of all the vertices are listed in the NODES section, 5
per processor. Note that the 4 sub-domains share vertices, so there
The coordinates of all the vertices are listed in the NODES section, five
per processor. Note that the four sub-domains share vertices, so there
will be duplicate nodes in the list.
The "SQUARES" section lists the node IDs of the 4 vertices in a
The "SQUARES" section lists the node IDs of the four vertices in a
rectangle for each processor (1 to 4).
For a 3d problem, the syntax is similar with 8 vertices listed for
each processor, instead of 4, and "SQUARES" replaced by "CUBES".
For a 3d problem, the syntax is similar but with eight vertices listed for
each processor instead of four, and "SQUARES" replaced by "CUBES."
----------
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
are relevant to this fix.
No information about this fix is written to
:doc:`binary restart files <restart>`. None of the
:doc:`fix_modify <fix_modify>` options are relevant to this fix.
This fix computes a global scalar which is the imbalance factor
after the most recent re-balance and a global vector of length 3 with
additional information about the most recent re-balancing. The 3
additional information about the most recent re-balancing. The three
values in the vector are as follows:
* 1 = max # of particles per processor
@ -380,22 +385,24 @@ As explained above, the imbalance factor is the ratio of the maximum
number of particles (or total weight) on any processor to the average
number of particles (or total weight) per processor.
These quantities can be accessed by various :doc:`output commands <Howto_output>`. The scalar and vector values calculated
by this fix are "intensive".
These quantities can be accessed by various
:doc:`output commands <Howto_output>`. The scalar and vector values calculated
by this fix are "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>`.
the :doc:`run <run>` command. This fix is not invoked during
:doc:`energy minimization <minimize>`.
----------
Restrictions
""""""""""""
For 2d simulations, the *z* style cannot be used. Nor can a "z"
For 2d simulations, the *z* style cannot be used, nor can *z*
appear in *dimstr* for the *shift* style.
Balancing through recursive bisectioning (\ *rcb* style) requires
:doc:`comm_style tiled <comm_style>`
:doc:`comm_style tiled <comm_style>`\ .
Related commands
""""""""""""""""

View File

@ -125,13 +125,14 @@ LAMMPS atom type corresponds to. This is specified by the atomic
number of the element, e.g. 13 for Al. An atomic number must be
specified for each of the ntypes LAMMPS atom types. Ntypes is
typically specified via the create_box command or in the data file
read by the read_data command. If this keyword is not specified, then
this fix will send the LAMMPS atom type for each atom to the MDI
engine. If both the LAMMPS driver and the MDI engine are initialized
so that atom type values are consistent in both codes, then the
*elements* keyword is not needed. Otherwise the keyword can be used
to insure the two codes are consistent in their definition of atomic
species.
read by the read_data command.
If this keyword is specified, then this fix will send the MDI
">ELEMENTS" command to the engine, to insure the two codes are
consistent in their definition of atomic species. If this keyword is
not specified, then this fix will send the MDI >TYPES command to the
engine. This is fine if both the LAMMPS driver and the MDI engine are
initialized so that the atom type values are consistent in both codes.
----------

View File

@ -14,7 +14,7 @@ Syntax
.. parsed-literal::
*engine* args = zero or more keyword arg pairs
*engine* args = zero or more keyword/args pairs
keywords = *elements*
*elements* args = N_1 N_2 ... N_ntypes
N_1,N_2,...N_ntypes = atomic number for each of ntypes LAMMPS atom types
@ -24,7 +24,7 @@ Syntax
keywords = *mdi* or *infile* or *extra* or *command*
*mdi* value = args passed to MDI for driver to operate with plugins (required)
*infile* value = filename the engine will read at start-up (optional)
*extra* value = aditional command-line args to pass to engine library when loaded
*extra* value = aditional command-line args to pass to engine library when loaded (optional)
*command* value = a LAMMPS input script command to execute (required)
*connect* args = none
*exit* args = none
@ -289,11 +289,11 @@ are required. The -name setting can be anything you choose. MDI
drivers and engines can query their names to verify they are values
they expect.
The *infile* keyword is also required. It is the name of an input
script which the engine will open and process. MDI will pass it as a
The *infile* keyword is optional. It sets the name of an input script
which the engine will open and process. MDI will pass it as a
command-line argument to the library when it is launched. The file
typically contains settings that an MD or QM code will use for its
subsequent calculations.
calculations.
The *extra* keyword is optional. It contains additional command-line
arguments which MDI will pass to the library when it is launched.
@ -309,12 +309,12 @@ could specify a filename with multiple LAMMPS commands.
.. note::
When the single *command* is complete, LAMMPS will send an MDI
EXIT command to the plugin engine and the plugin will be removed.
The "mdi plugin" command will then exit and the next command
(if any) in the LAMMPS input script will be processed. A subsequent
"mdi plugin" command could then load the same library plugin or
a different one if desired.
When the *command* is complete, LAMMPS will send an MDI EXIT
command to the plugin engine and the plugin will be removed. The
"mdi plugin" command will then exit and the next command (if any)
in the LAMMPS input script will be processed. A subsequent "mdi
plugin" command could then load the same or a different MDI
plugin if desired.
----------

View File

@ -12,7 +12,7 @@ Syntax
restart N root keyword value ...
restart N file1 file2 keyword value ...
* N = write a restart file every this many timesteps
* N = write a restart file on timesteps which are multipls of N
* N can be a variable (see below)
* root = filename to which timestep # is appended
* file1,file2 = two full filenames, toggle between them when writing file
@ -42,13 +42,14 @@ Description
"""""""""""
Write out a binary restart file with the current state of the
simulation every so many timesteps, in either or both of two modes, as
a run proceeds. A value of 0 means do not write out any restart
files. The two modes are as follows. If one filename is specified, a
series of filenames will be created which include the timestep in the
filename. If two filenames are specified, only 2 restart files will
be created, with those names. LAMMPS will toggle between the 2 names
as it writes successive restart files.
simulation on timesteps which are a multiple of N. A value of N = 0
means do not write out any restart files, which is the default.
Restart files are written in one (or both) of two modes as a run
proceeds. If one filename is specified, a series of filenames will be
created which include the timestep in the filename. If two filenames
are specified, only 2 restart files will be created, with those names.
LAMMPS will toggle between the 2 names as it writes successive restart
files.
Note that you can specify the restart command twice, once with a
single filename and once with two filenames. This would allow you,

View File

@ -6,7 +6,7 @@ LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
"clear", "comm_modify", "comm_style",
"compute_modify", "create_atoms", "create_bonds", "create_box", "delete_atoms",
"delete_bonds", "dielectric", "dihedral_coeff", "dihedral_style", "dimension",
"displace_atoms", "dump_modify", "dynamical_matrix", "echo",
"displace_atoms", "dump_modify", "dynamical_matrix", "echo", "elif", "else",
"fix_modify", "group2ndx", "hyper", "if", "improper_coeff",
"improper_style", "include", "info", "jump", "kim",
"kspace_modify", "kspace_style", "label", "lattice",
@ -16,8 +16,8 @@ LAMMPS_COMMANDS = ("angle_coeff", "angle_style", "atom_modify", "atom_style",
"partition", "prd", "print", "processors", "python", "quit", "read_data",
"read_dump", "read_restart", "replicate", "rerun", "reset_ids",
"reset_timestep", "restart", "run", "run_style", "server", "set", "shell",
"special_bonds", "suffix", "tad", "temper", "temper/grem", "temper/npt",
"thermo", "thermo_modify", "thermo_style", "then", "third_order", "timer", "timestep",
"special_bonds", "suffix", "tad", "temper", "temper/grem", "temper/npt", "then",
"thermo", "thermo_modify", "thermo_style", "third_order", "timer", "timestep",
"units", "velocity", "write_coeff",
"write_data", "write_restart")

View File

@ -0,0 +1,24 @@
LAMMPS Description
6 atoms
2 atom types
0.0000000000000000 10.800000000000001 xlo xhi
0.0000000000000000 5.4000000000000004 ylo yhi
0.0000000000000000 5.4000000000000004 zlo zhi
3.3065463576978537E-016 3.3065463576978537E-016 3.3065463576978537E-016 xy xz yz
Masses
1 238.05078125000000
2 15.994915008544922
Atoms
1 1 1 0.0 2.70000 8.10000 0.00000
2 1 2 0.0 1.35000 9.45000 1.35000
3 1 2 0.0 4.05000 9.45000 1.35000
4 1 1 0.0 2.70000 10.80000 2.70000
5 1 2 0.0 1.35000 12.15000 4.05000
6 1 2 0.0 4.05000 12.15000 4.05000

View File

@ -0,0 +1,27 @@
LAMMPS Description
9 atoms
2 atom types
0.0000000000000000 16.199999999999999 xlo xhi
0.0000000000000000 5.4000000000000004 ylo yhi
0.0000000000000000 5.4000000000000004 zlo zhi
3.3065463576978537E-016 3.3065463576978537E-016 3.3065463576978537E-016 xy xz yz
Masses
1 238.05078125000000
2 15.994915008544922
Atoms
1 1 1 0.0 2.70000 8.10000 0.00000
2 1 2 0.0 1.35000 9.45000 1.35000
3 1 2 0.0 4.05000 9.45000 1.35000
4 1 1 0.0 2.70000 10.80000 2.70000
5 1 2 0.0 1.35000 12.15000 4.05000
6 1 2 0.0 4.05000 12.15000 4.05000
7 1 1 0.0 2.70000 13.50000 5.40000
8 1 2 0.0 1.35000 14.85000 6.75000
9 1 2 0.0 4.05000 14.85000 6.75000

View File

@ -0,0 +1,30 @@
LAMMPS Description
12 atoms
2 atom types
0.0000000000000000 10.800000000000001 xlo xhi
0.0000000000000000 10.800000000000001 ylo yhi
0.0000000000000000 5.4000000000000004 zlo zhi
6.6130927153957075E-016 3.3065463576978537E-016 3.3065463576978537E-016 xy xz yz
Masses
1 238.05078125000000
2 15.994915008544922
Atoms
1 1 1 0.0 2.70000 8.10000 0.00000
2 1 2 0.0 1.35000 9.45000 1.35000
3 1 2 0.0 4.05000 9.45000 1.35000
4 1 1 0.0 5.40000 8.10000 2.70000
5 1 2 0.0 4.05000 9.45000 4.05000
6 1 2 0.0 6.75000 9.45000 4.05000
7 1 1 0.0 2.70000 10.80000 2.70000
8 1 2 0.0 1.35000 12.15000 4.05000
9 1 2 0.0 4.05000 12.15000 4.05000
10 1 1 0.0 5.40000 10.80000 5.40000
11 1 2 0.0 4.05000 12.15000 6.75000
12 1 2 0.0 6.75000 12.15000 6.75000

149
examples/QM/LATTE/README Normal file
View File

@ -0,0 +1,149 @@
LATTE is a semi-empirical tight-binding quantum code, developed
primarily at Los Alamos National Labs.
See these links:
https://www.osti.gov/biblio/1526907-los-alamos-transferable-tight-binding-energetics-latte-version
https://github.com/lanl/LATTE
LAMMPS has 2 ways of working with LATTE:
(1) Via its LATTE package and the fix latte command
must run LAMMPS on a single processor, it calls LATTE as a library
(2) Via its MDI package and the code-coupling MDI library
(a) can run LAMMPS and LATTE as stand-alone codes
LAMMPS can be run on any number of procs
LATTE must run on a single proc, but can use OpenMP
(b) can run LAMMPS with LATTE as a plug-in library
must run LAMMPS on a single processor
Examples for use case (1) are in the examples/latte dir. Use case (2)
is illustrated in this dir.
NOTE: If you compare MDI runs in this dir to similar fix latte runs in
examples/latte, the answers for energy and virial will be differnt.
This is b/c the version of LATTE used by the fix latte command within
the LATTE package is older than the version of LATTE used here.
------------------
Building 3 codes needed to run these examples
(1) Download and build MDI
% git clone git@github.com:MolSSI-MDI/MDI_Library.git mdi
% cd mdi
% mkdir build; cd build
% cmake .. # includes support for all langauges (incl Fortran, Python)
% make
(2) Download and build LATTE with MDI support
% git clone git@github.com:lanl/LATTE.git latte
% cd latte
% git checkout skimLATTE-progress # goto branch with MDI support
% cp makefiles/makefile.CHOICES.mdi makefile.CHOICES # so can now edit
% edit makefile.CHOICES settings to have these settings:
MAKELIB = OFF, SHARED = ON, MDI = ON
MDI_PATH must point to CMake build of MDI in (1),
e.g. /home/sjplimp/mdi/build/MDI_Library
comment out 2 LIB lines with CUDA-CUDART_LIBRARY
% make clean
% make # creates liblatte.so and LATTE_DOUBLE with support for MDI
(3) Build LAMMPS with its MDI package
also with the MOLECULE package for these example scripts
Build with CMake (NOTE: do not use traditional make for this use case)
% cd lammps
% mkdir build; cd build
% cmake -D PKG_MDI=yes -D PKG_MOLECULE=yes ../cmake
% make # creates lmp
(4) Copy LAMMPS and LATTE executables into this dir
Copy the LAMMPS executable into this dir as lmp_mpi.
Copy the LATTE executable LATTE_DOUBLE into this dir.
The run commands below assume you have done this.
(5) Insure LD_LIBRARY_PATH includes the dir where MDI was built in (1)
with its libmdi.so file, e.g. mdi/build/MDI_Library. This is needed
so when LATTE_DOUBLE runs as an executable it will able to find
libmdi.so.
------------------
Notes on LATTE usage
You must run this version of LATTE on a single MPI processor.
However, you can use OpenMP with LATTE. To do this you need to build
LATTE with OpenMP support by editing the makefile.CHOICES file to
include -fopenmp with FFLAGS and LINKFLAGS. Also -lapack and -lblas
need to be added to LIB, and those libraries must be available on your
system. For best performance you should also build LATTE with its
PROGRESS and BML libraries. Building those libs is more complex,
see details here:
https://github.com/lanl/LATTE_SUPER/tree/allMachines/Laptop
At run time, you need to also first set an environment variable for
the number of OpenMP threads to use, e.g.
% export OMP_NUM_THREADS=12
By default LATTE reads the latte.in file for its parameters. That
file specifies other files LATTE will read. With MDI, the driver code
(e.g. LAMMPS) can use the >FNAME command to specify an alternate
filename to use instead of latte.in.
By default LATTE writes out a log.latte file with info about its
calculations. An "OUTFILE= logfile" setting in latte.in can rename
this file.
---------
Run example #1: AIMD
* Run with MPI: 1 proc each
mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.aimd -log log.aimd.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run with MPI: 2 procs for LAMMPS, 1 for LATTE
mpirun -np 2 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.aimd -log log.aimd.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run in plugin mode: 1 proc
lmp_mpi -mdi \
"-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/latte/git" \
-in in.aimd.plugin -log log.aimd.lammps.plugin
NOTE: The -plugin_path needs to point to where LATTE was built in step
(2).
---------
Run example #2: sequence of configurations
* Run with MPI: 1 proc each
mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.series -log log.series.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run with MPI: 2 procs for LAMMPS, 1 for LATTE
mpirun -np 2 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" \
-in in.series -log log.series.lammps.mpi : \
-np 1 LATTE_DOUBLE -mdi "-name LATTE -role ENGINE -method MPI"
* Run in plugin mode: 1 proc
lmp_mpi -mdi \
"-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/latte/git" \
-in in.series.plugin -log log.series.lammps.plugin
NOTE: The -plugin_path needs to point to where LATTE was built in step
(2).

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,315 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.7 2.7 0 -0.601491 0.335597 -0.87242 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 8.2897 4.55901 5.97376 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 1.7742 6.51885 0.385522 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -0.325605 -1.03244 0.724324 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.42711 -1.49109 -2.41596 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 1.30688 0.784281 -1.73922 -2.35473 -1.38761e-14 1.09382e-14
ITEM: TIMESTEP
1
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69985 2.70008 -0.000218105 -0.601467 0.335616 -0.872428 0.00470101 0.00380515 -0.00141625
2 2 1.35212 4.05114 1.35149 8.64389 4.55886 5.97363 2.34251 -0.00209926 -0.00172976
3 2 4.0504 4.05163 1.3501 1.41949 6.51866 0.385561 -2.34936 -0.00247497 0.00051716
4 1 2.69992 -0.00025811 2.70018 -0.325581 -1.03243 0.724334 0.00481137 0.00249244 0.00195665
5 2 1.35065 1.34963 4.0494 2.78199 -1.49112 -2.4159 2.3517 -0.00043711 0.000874754
6 2 4.05028 1.3502 4.04957 0.951796 0.784184 -1.73923 -2.35436 -0.00128625 -0.00020256
ITEM: TIMESTEP
2
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6997 2.70017 -0.000436214 -0.601396 0.335673 -0.872449 0.00939888 0.00756163 -0.00288164
2 2 1.35432 4.05228 1.35299 8.99615 4.55837 5.97323 2.32921 -0.00431846 -0.00355855
3 2 4.05071 4.05326 1.35019 1.06567 6.5181 0.385678 -2.34304 -0.00494314 0.00103532
4 1 2.69984 -0.000516214 2.70036 -0.325507 -1.03239 0.724364 0.00976944 0.00512657 0.00403686
5 2 1.35139 1.34925 4.04879 3.13634 -1.49122 -2.4157 2.34776 -0.000851489 0.00177498
6 2 4.05048 1.35039 4.04913 0.596838 0.783892 -1.73928 -2.3531 -0.00257512 -0.000406965
ITEM: TIMESTEP
3
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69955 2.70025 -0.00065433 -0.601277 0.335769 -0.872486 0.0141006 0.0112702 -0.00439552
2 2 1.35661 4.05342 1.35448 9.34633 4.55754 5.97255 2.31482 -0.00666433 -0.00549143
3 2 4.05093 4.05489 1.35029 0.712875 6.51717 0.385873 -2.33577 -0.00740896 0.00154764
4 1 2.69976 -0.000774304 2.70054 -0.325382 -1.03232 0.724417 0.0148831 0.00790884 0.00624833
5 2 1.35222 1.34888 4.04819 3.49003 -1.49137 -2.41536 2.3429 -0.0012407 0.00270313
6 2 4.05058 1.35059 4.0487 0.242138 0.783407 -1.73935 -2.35094 -0.00386511 -0.000612161
ITEM: TIMESTEP
4
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6994 2.70034 -0.000872457 -0.60111 0.335902 -0.872539 0.0188131 0.0149318 -0.00595718
2 2 1.359 4.05456 1.35597 9.69425 4.55635 5.97156 2.29933 -0.00914346 -0.00753331
3 2 4.05107 4.05652 1.35039 0.361248 6.51586 0.386144 -2.32753 -0.00987687 0.00204727
4 1 2.69967 -0.00103238 2.70072 -0.325204 -1.03223 0.724492 0.020161 0.0108455 0.00859866
5 2 1.35314 1.34851 4.04758 3.84292 -1.49159 -2.41488 2.33711 -0.00160232 0.00366164
6 2 4.0506 1.35078 4.04826 -0.112168 0.782727 -1.73946 -2.34789 -0.00515472 -0.000817084
ITEM: TIMESTEP
5
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69925 2.70042 -0.0010906 -0.600896 0.336071 -0.872607 0.0235434 0.0185473 -0.00756588
2 2 1.36146 4.0557 1.35747 10.0397 4.55478 5.97026 2.2827 -0.0117623 -0.00968894
3 2 4.05111 4.05815 1.35048 0.0109366 6.51419 0.386489 -2.31832 -0.0123511 0.00252727
4 1 2.69959 -0.00129042 2.70091 -0.324972 -1.0321 0.724592 0.0256115 0.0139425 0.0110953
5 2 1.35414 1.34814 4.04698 4.19487 -1.49186 -2.41425 2.33039 -0.00193394 0.0046529
6 2 4.05052 1.35098 4.04783 -0.465946 0.781852 -1.7396 -2.34393 -0.00644244 -0.00102066
ITEM: TIMESTEP
6
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6991 2.7005 -0.00130876 -0.600633 0.336277 -0.872692 0.0282985 0.0221175 -0.00922083
2 2 1.36401 4.05684 1.35896 10.3827 4.55279 5.96863 2.26494 -0.0145272 -0.0119629
3 2 4.05107 4.05978 1.35058 -0.337913 6.51214 0.386904 -2.30814 -0.0148362 0.00298071
4 1 2.69951 -0.00154843 2.70109 -0.324684 -1.03194 0.724717 0.0312427 0.0172058 0.0137455
5 2 1.35523 1.34776 4.04638 4.54573 -1.49217 -2.41347 2.32273 -0.00223319 0.00567932
6 2 4.05036 1.35117 4.04739 -0.819058 0.780784 -1.73977 -2.33906 -0.00772673 -0.00122181
ITEM: TIMESTEP
7
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69895 2.70059 -0.00152695 -0.600322 0.336519 -0.872794 0.0330853 0.0256435 -0.0109212
2 2 1.36665 4.05797 1.36045 10.7228 4.55038 5.96665 2.24601 -0.0174443 -0.0143597
3 2 4.05094 4.0614 1.35068 -0.685154 6.50971 0.387385 -2.29698 -0.0173365 0.00340068
4 1 2.69943 -0.00180639 2.70127 -0.324338 -1.03175 0.724871 0.0370626 0.020641 0.0165564
5 2 1.35641 1.34739 4.04577 4.89536 -1.49253 -2.41254 2.31411 -0.0024977 0.00674323
6 2 4.05012 1.35137 4.04696 -1.17137 0.779522 -1.73997 -2.33329 -0.00900604 -0.00141944
ITEM: TIMESTEP
8
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6988 2.70067 -0.00174516 -0.599962 0.336797 -0.872914 0.0379108 0.0291262 -0.0126661
2 2 1.36938 4.05911 1.36194 11.06 4.54752 5.96429 2.2259 -0.0205196 -0.0168834
3 2 4.05073 4.06303 1.35077 -1.03064 6.50691 0.387927 -2.28482 -0.0198564 0.00378025
4 1 2.69935 -0.0020643 2.70145 -0.323932 -1.03153 0.725054 0.0430788 0.0242538 0.0195348
5 2 1.35768 1.34702 4.04517 5.24362 -1.49292 -2.41144 2.30452 -0.0027252 0.00784692
6 2 4.04978 1.35156 4.04652 -1.52274 0.778068 -1.7402 -2.32659 -0.0102788 -0.00161245
ITEM: TIMESTEP
9
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69865 2.70076 -0.0019634 -0.599553 0.337109 -0.873051 0.0427817 0.0325667 -0.0144547
2 2 1.37218 4.06025 1.36343 11.3941 4.54418 5.96155 2.20459 -0.023759 -0.019538
3 2 4.05043 4.06466 1.35087 -1.37421 6.50372 0.388522 -2.27166 -0.0224003 0.00411244
4 1 2.69927 -0.00232215 2.70163 -0.323464 -1.03126 0.725268 0.0492987 0.0280495 0.0226874
5 2 1.35904 1.34664 4.04457 5.59036 -1.49335 -2.41017 2.29396 -0.00291347 0.00899259
6 2 4.04935 1.35176 4.04609 -1.87303 0.776422 -1.74045 -2.31898 -0.0115434 -0.00179972
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6985 2.70084 -0.00218168 -0.599095 0.337456 -0.873207 0.0477049 0.0359661 -0.0162858
2 2 1.37507 4.06138 1.36492 11.7248 4.54034 5.95839 2.18206 -0.0271682 -0.0223275
3 2 4.05004 4.06628 1.35097 -1.71572 6.50015 0.389163 -2.25748 -0.0249726 0.0043903
4 1 2.69919 -0.00257993 2.70181 -0.322932 -1.03096 0.725515 0.0557294 0.0320331 0.0260207
5 2 1.36048 1.34627 4.04397 5.93543 -1.4938 -2.40872 2.2824 -0.00306026 0.0101825
6 2 4.04884 1.35195 4.04565 -2.2221 0.774587 -1.74074 -2.31042 -0.0127983 -0.00198013
ITEM: TIMESTEP
11
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69835 2.70092 -0.00240001 -0.598586 0.337838 -0.873382 0.0526872 0.0393256 -0.0181586
2 2 1.37805 4.06252 1.36641 12.0521 4.53597 5.9548 2.15829 -0.0307526 -0.0252554
3 2 4.04957 4.06791 1.35106 -2.05501 6.49619 0.389841 -2.24228 -0.0275775 0.00460683
4 1 2.69911 -0.00283763 2.70199 -0.322334 -1.03061 0.725796 0.0623777 0.0362096 0.0295409
5 2 1.362 1.3459 4.04336 6.27868 -1.49427 -2.40709 2.26985 -0.00316333 0.0114188
6 2 4.04824 1.35215 4.04522 -2.56981 0.772563 -1.74105 -2.30093 -0.0140417 -0.00215255
ITEM: TIMESTEP
12
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6982 2.70101 -0.00261837 -0.598027 0.338253 -0.873575 0.0577351 0.0426463 -0.0200718
2 2 1.3811 4.06365 1.3679 12.3757 4.53105 5.95076 2.13326 -0.0345179 -0.0283253
3 2 4.04901 4.06953 1.35116 -2.39194 6.49183 0.390547 -2.22604 -0.0302194 0.00475506
4 1 2.69903 -0.00309524 2.70217 -0.321667 -1.03022 0.726114 0.06925 0.0405836 0.0332542
5 2 1.36362 1.34552 4.04276 6.61997 -1.49475 -2.40527 2.25627 -0.00322051 0.0127037
6 2 4.04756 1.35234 4.04478 -2.91602 0.770353 -1.74139 -2.29048 -0.0152721 -0.00231583
ITEM: TIMESTEP
13
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69805 2.70109 -0.00283679 -0.597416 0.338702 -0.873788 0.0628554 0.0459295 -0.0220243
2 2 1.38423 4.06478 1.36939 12.6954 4.52555 5.94625 2.10694 -0.0384688 -0.0315401
3 2 4.04837 4.07115 1.35126 -2.72634 6.48707 0.39127 -2.20874 -0.0329024 0.00482793
4 1 2.69895 -0.00335274 2.70236 -0.320929 -1.02979 0.726471 0.0763523 0.0451591 0.0371659
5 2 1.36531 1.34515 4.04216 6.95912 -1.49523 -2.40326 2.24165 -0.00322965 0.0140393
6 2 4.04678 1.35253 4.04434 -3.26057 0.767958 -1.74175 -2.27906 -0.0164877 -0.0024688
ITEM: TIMESTEP
14
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6979 2.70118 -0.00305527 -0.596753 0.339184 -0.874022 0.0680546 0.0491768 -0.0240145
2 2 1.38745 4.06591 1.37087 13.0111 4.51944 5.94124 2.07932 -0.0426096 -0.0349018
3 2 4.04765 4.07277 1.35136 -3.05804 6.4819 0.391997 -2.19038 -0.035631 0.00481829
4 1 2.69887 -0.00361013 2.70254 -0.320118 -1.0293 0.726868 0.0836894 0.0499393 0.0412807
5 2 1.3671 1.34478 4.04156 7.296 -1.49572 -2.40103 2.22598 -0.00318867 0.0154277
6 2 4.04593 1.35272 4.04391 -3.60334 0.765381 -1.74213 -2.26667 -0.0176868 -0.00261028
ITEM: TIMESTEP
15
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69775 2.70126 -0.0032738 -0.596036 0.339698 -0.874275 0.0733392 0.0523895 -0.0260413
2 2 1.39074 4.06704 1.37236 13.3225 4.51268 5.93571 2.05037 -0.0469451 -0.0384133
3 2 4.04685 4.07439 1.35146 -3.3869 6.47632 0.392716 -2.17093 -0.038409 0.00471919
4 1 2.69879 -0.00386739 2.70272 -0.319232 -1.02877 0.727309 0.0912666 0.0549279 0.0456036
5 2 1.36896 1.3444 4.04096 7.63043 -1.49619 -2.3986 2.20924 -0.00309551 0.0168709
6 2 4.04498 1.35291 4.04347 -3.94416 0.762625 -1.74253 -2.25329 -0.0188678 -0.0027391
ITEM: TIMESTEP
16
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6976 2.70135 -0.00349241 -0.595266 0.340245 -0.87455 0.0787153 0.055569 -0.0281032
2 2 1.39411 4.06817 1.37384 13.6294 4.50526 5.92964 2.02007 -0.0514799 -0.042077
3 2 4.04596 4.07601 1.35155 -3.71274 6.47031 0.393413 -2.15039 -0.0412405 0.00452364
4 1 2.69871 -0.00412452 2.7029 -0.318268 -1.02819 0.727794 0.0990893 0.0601283 0.0501398
5 2 1.37091 1.34403 4.04036 7.96225 -1.49665 -2.39594 2.19142 -0.00294819 0.0183708
6 2 4.04395 1.3531 4.04304 -4.28288 0.759692 -1.74296 -2.2389 -0.0200287 -0.00285406
ITEM: TIMESTEP
17
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69745 2.70143 -0.00371108 -0.594441 0.340824 -0.874845 0.0841889 0.0587168 -0.0301987
2 2 1.39755 4.0693 1.37532 13.9317 4.49714 5.92301 1.9884 -0.0562187 -0.0458954
3 2 4.04499 4.07763 1.35165 -4.0354 6.46388 0.394073 -2.12872 -0.0441293 0.0042247
4 1 2.69863 -0.00438149 2.70308 -0.317223 -1.02755 0.728326 0.107162 0.0655439 0.054894
5 2 1.37294 1.34365 4.03976 8.2913 -1.49708 -2.39305 2.17248 -0.00274479 0.0199293
6 2 4.04284 1.35329 4.0426 -4.61936 0.756586 -1.74339 -2.2235 -0.0211679 -0.00295392
ITEM: TIMESTEP
18
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69731 2.70152 -0.00392983 -0.593559 0.341435 -0.875162 0.0897661 0.0618346 -0.0323262
2 2 1.40107 4.07042 1.3768 14.229 4.48829 5.91578 1.95532 -0.0611659 -0.0498706
3 2 4.04394 4.07924 1.35175 -4.3547 6.457 0.394679 -2.10593 -0.0470792 0.0038154
4 1 2.69855 -0.00463829 2.70327 -0.316095 -1.02686 0.728907 0.11549 0.0711775 0.0598705
5 2 1.37506 1.34328 4.03916 8.61741 -1.49747 -2.38993 2.15241 -0.00248344 0.0215483
6 2 4.04164 1.35348 4.04217 -4.95344 0.753309 -1.74385 -2.20706 -0.0222835 -0.00303744
ITEM: TIMESTEP
19
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69716 2.7016 -0.00414866 -0.592621 0.342077 -0.8755 0.0954526 0.0649239 -0.0344841
2 2 1.40467 4.07154 1.37828 14.5213 4.47868 5.90795 1.92083 -0.0663258 -0.0540045
3 2 4.04281 4.08086 1.35185 -4.67049 6.44967 0.395215 -2.08198 -0.050094 0.00328881
4 1 2.69847 -0.00489492 2.70345 -0.314881 -1.02611 0.72954 0.124076 0.0770317 0.0650736
5 2 1.37725 1.3429 4.03857 8.94041 -1.49782 -2.38655 2.13119 -0.00216234 0.0232295
6 2 4.04036 1.35367 4.04173 -5.28496 0.749867 -1.74431 -2.18956 -0.0233735 -0.00310338
ITEM: TIMESTEP
20
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69701 2.70169 -0.00436758 -0.591624 0.342751 -0.875861 0.101254 0.0679866 -0.0366705
2 2 1.40833 4.07266 1.37976 14.8083 4.46827 5.89948 1.88489 -0.0717024 -0.0582989
3 2 4.0416 4.08247 1.35195 -4.98257 6.44189 0.395662 -2.05686 -0.0531772 0.00263798
4 1 2.69839 -0.00515135 2.70363 -0.313579 -1.0253 0.730227 0.132925 0.0831089 0.0705072
5 2 1.37953 1.34253 4.03797 9.26012 -1.49812 -2.38291 2.1088 -0.00177977 0.0249746
6 2 4.039 1.35386 4.04129 -5.61376 0.746262 -1.74478 -2.171 -0.0244362 -0.00315046

View File

@ -0,0 +1,315 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.7 2.7 0 -0.601491 0.335597 -0.87242 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 8.2897 4.55901 5.97376 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 1.7742 6.51885 0.385522 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -0.325605 -1.03244 0.724324 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.42711 -1.49109 -2.41596 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 1.30688 0.784281 -1.73922 -2.35473 -1.38761e-14 1.09382e-14
ITEM: TIMESTEP
1
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69985 2.70008 -0.000218105 -0.601467 0.335616 -0.872428 0.00470101 0.00380515 -0.00141625
2 2 1.35212 4.05114 1.35149 8.64389 4.55886 5.97363 2.34251 -0.00209926 -0.00172976
3 2 4.0504 4.05163 1.3501 1.41949 6.51866 0.385561 -2.34936 -0.00247497 0.00051716
4 1 2.69992 -0.00025811 2.70018 -0.325581 -1.03243 0.724334 0.00481137 0.00249244 0.00195665
5 2 1.35065 1.34963 4.0494 2.78199 -1.49112 -2.4159 2.3517 -0.00043711 0.000874754
6 2 4.05028 1.3502 4.04957 0.951796 0.784184 -1.73923 -2.35436 -0.00128625 -0.00020256
ITEM: TIMESTEP
2
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6997 2.70017 -0.000436214 -0.601396 0.335673 -0.872449 0.00939888 0.00756163 -0.00288164
2 2 1.35432 4.05228 1.35299 8.99615 4.55837 5.97323 2.32921 -0.00431846 -0.00355855
3 2 4.05071 4.05326 1.35019 1.06567 6.5181 0.385678 -2.34304 -0.00494314 0.00103532
4 1 2.69984 -0.000516214 2.70036 -0.325507 -1.03239 0.724364 0.00976944 0.00512657 0.00403686
5 2 1.35139 1.34925 4.04879 3.13634 -1.49122 -2.4157 2.34776 -0.000851489 0.00177498
6 2 4.05048 1.35039 4.04913 0.596838 0.783892 -1.73928 -2.3531 -0.00257512 -0.000406965
ITEM: TIMESTEP
3
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69955 2.70025 -0.00065433 -0.601277 0.335769 -0.872486 0.0141006 0.0112702 -0.00439552
2 2 1.35661 4.05342 1.35448 9.34633 4.55754 5.97255 2.31482 -0.00666433 -0.00549143
3 2 4.05093 4.05489 1.35029 0.712875 6.51717 0.385873 -2.33577 -0.00740896 0.00154764
4 1 2.69976 -0.000774304 2.70054 -0.325382 -1.03232 0.724417 0.0148831 0.00790884 0.00624833
5 2 1.35222 1.34888 4.04819 3.49003 -1.49137 -2.41536 2.3429 -0.0012407 0.00270313
6 2 4.05058 1.35059 4.0487 0.242138 0.783407 -1.73935 -2.35094 -0.00386511 -0.000612161
ITEM: TIMESTEP
4
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6994 2.70034 -0.000872457 -0.60111 0.335902 -0.872539 0.0188131 0.0149318 -0.00595718
2 2 1.359 4.05456 1.35597 9.69425 4.55635 5.97156 2.29933 -0.00914346 -0.00753331
3 2 4.05107 4.05652 1.35039 0.361248 6.51586 0.386144 -2.32753 -0.00987687 0.00204727
4 1 2.69967 -0.00103238 2.70072 -0.325204 -1.03223 0.724492 0.020161 0.0108455 0.00859866
5 2 1.35314 1.34851 4.04758 3.84292 -1.49159 -2.41488 2.33711 -0.00160232 0.00366164
6 2 4.0506 1.35078 4.04826 -0.112168 0.782727 -1.73946 -2.34789 -0.00515472 -0.000817084
ITEM: TIMESTEP
5
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69925 2.70042 -0.0010906 -0.600896 0.336071 -0.872607 0.0235434 0.0185473 -0.00756588
2 2 1.36146 4.0557 1.35747 10.0397 4.55478 5.97026 2.2827 -0.0117623 -0.00968894
3 2 4.05111 4.05815 1.35048 0.0109366 6.51419 0.386489 -2.31832 -0.0123511 0.00252727
4 1 2.69959 -0.00129042 2.70091 -0.324972 -1.0321 0.724592 0.0256115 0.0139425 0.0110953
5 2 1.35414 1.34814 4.04698 4.19487 -1.49186 -2.41425 2.33039 -0.00193394 0.0046529
6 2 4.05052 1.35098 4.04783 -0.465946 0.781852 -1.7396 -2.34393 -0.00644244 -0.00102066
ITEM: TIMESTEP
6
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6991 2.7005 -0.00130876 -0.600633 0.336277 -0.872692 0.0282985 0.0221175 -0.00922083
2 2 1.36401 4.05684 1.35896 10.3827 4.55279 5.96863 2.26494 -0.0145272 -0.0119629
3 2 4.05107 4.05978 1.35058 -0.337913 6.51214 0.386904 -2.30814 -0.0148362 0.00298071
4 1 2.69951 -0.00154843 2.70109 -0.324684 -1.03194 0.724717 0.0312427 0.0172058 0.0137455
5 2 1.35523 1.34776 4.04638 4.54573 -1.49217 -2.41347 2.32273 -0.00223319 0.00567932
6 2 4.05036 1.35117 4.04739 -0.819058 0.780784 -1.73977 -2.33906 -0.00772673 -0.00122181
ITEM: TIMESTEP
7
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69895 2.70059 -0.00152695 -0.600322 0.336519 -0.872794 0.0330853 0.0256435 -0.0109212
2 2 1.36665 4.05797 1.36045 10.7228 4.55038 5.96665 2.24601 -0.0174443 -0.0143597
3 2 4.05094 4.0614 1.35068 -0.685154 6.50971 0.387385 -2.29698 -0.0173365 0.00340068
4 1 2.69943 -0.00180639 2.70127 -0.324338 -1.03175 0.724871 0.0370626 0.020641 0.0165564
5 2 1.35641 1.34739 4.04577 4.89536 -1.49253 -2.41254 2.31411 -0.0024977 0.00674323
6 2 4.05012 1.35137 4.04696 -1.17137 0.779522 -1.73997 -2.33329 -0.00900604 -0.00141944
ITEM: TIMESTEP
8
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6988 2.70067 -0.00174516 -0.599962 0.336797 -0.872914 0.0379108 0.0291262 -0.0126661
2 2 1.36938 4.05911 1.36194 11.06 4.54752 5.96429 2.2259 -0.0205196 -0.0168834
3 2 4.05073 4.06303 1.35077 -1.03064 6.50691 0.387927 -2.28482 -0.0198564 0.00378025
4 1 2.69935 -0.0020643 2.70145 -0.323932 -1.03153 0.725054 0.0430788 0.0242538 0.0195348
5 2 1.35768 1.34702 4.04517 5.24362 -1.49292 -2.41144 2.30452 -0.0027252 0.00784692
6 2 4.04978 1.35156 4.04652 -1.52274 0.778068 -1.7402 -2.32659 -0.0102788 -0.00161245
ITEM: TIMESTEP
9
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69865 2.70076 -0.0019634 -0.599553 0.337109 -0.873051 0.0427817 0.0325667 -0.0144547
2 2 1.37218 4.06025 1.36343 11.3941 4.54418 5.96155 2.20459 -0.023759 -0.019538
3 2 4.05043 4.06466 1.35087 -1.37421 6.50372 0.388522 -2.27166 -0.0224003 0.00411244
4 1 2.69927 -0.00232215 2.70163 -0.323464 -1.03126 0.725268 0.0492987 0.0280495 0.0226874
5 2 1.35904 1.34664 4.04457 5.59036 -1.49335 -2.41017 2.29396 -0.00291347 0.00899259
6 2 4.04935 1.35176 4.04609 -1.87303 0.776422 -1.74045 -2.31898 -0.0115434 -0.00179972
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6985 2.70084 -0.00218168 -0.599095 0.337456 -0.873207 0.0477049 0.0359661 -0.0162858
2 2 1.37507 4.06138 1.36492 11.7248 4.54034 5.95839 2.18206 -0.0271682 -0.0223275
3 2 4.05004 4.06628 1.35097 -1.71572 6.50015 0.389163 -2.25748 -0.0249726 0.0043903
4 1 2.69919 -0.00257993 2.70181 -0.322932 -1.03096 0.725515 0.0557294 0.0320331 0.0260207
5 2 1.36048 1.34627 4.04397 5.93543 -1.4938 -2.40872 2.2824 -0.00306026 0.0101825
6 2 4.04884 1.35195 4.04565 -2.2221 0.774587 -1.74074 -2.31042 -0.0127983 -0.00198013
ITEM: TIMESTEP
11
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69835 2.70092 -0.00240001 -0.598586 0.337838 -0.873382 0.0526872 0.0393256 -0.0181586
2 2 1.37805 4.06252 1.36641 12.0521 4.53597 5.9548 2.15829 -0.0307526 -0.0252554
3 2 4.04957 4.06791 1.35106 -2.05501 6.49619 0.389841 -2.24228 -0.0275775 0.00460683
4 1 2.69911 -0.00283763 2.70199 -0.322334 -1.03061 0.725796 0.0623777 0.0362096 0.0295409
5 2 1.362 1.3459 4.04336 6.27868 -1.49427 -2.40709 2.26985 -0.00316333 0.0114188
6 2 4.04824 1.35215 4.04522 -2.56981 0.772563 -1.74105 -2.30093 -0.0140417 -0.00215255
ITEM: TIMESTEP
12
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6982 2.70101 -0.00261837 -0.598027 0.338253 -0.873575 0.0577351 0.0426463 -0.0200718
2 2 1.3811 4.06365 1.3679 12.3757 4.53105 5.95076 2.13326 -0.0345179 -0.0283253
3 2 4.04901 4.06953 1.35116 -2.39194 6.49183 0.390547 -2.22604 -0.0302194 0.00475506
4 1 2.69903 -0.00309524 2.70217 -0.321667 -1.03022 0.726114 0.06925 0.0405836 0.0332542
5 2 1.36362 1.34552 4.04276 6.61997 -1.49475 -2.40527 2.25627 -0.00322051 0.0127037
6 2 4.04756 1.35234 4.04478 -2.91602 0.770353 -1.74139 -2.29048 -0.0152721 -0.00231583
ITEM: TIMESTEP
13
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69805 2.70109 -0.00283679 -0.597416 0.338702 -0.873788 0.0628554 0.0459295 -0.0220243
2 2 1.38423 4.06478 1.36939 12.6954 4.52555 5.94625 2.10694 -0.0384688 -0.0315401
3 2 4.04837 4.07115 1.35126 -2.72634 6.48707 0.39127 -2.20874 -0.0329024 0.00482793
4 1 2.69895 -0.00335274 2.70236 -0.320929 -1.02979 0.726471 0.0763523 0.0451591 0.0371659
5 2 1.36531 1.34515 4.04216 6.95912 -1.49523 -2.40326 2.24165 -0.00322965 0.0140393
6 2 4.04678 1.35253 4.04434 -3.26057 0.767958 -1.74175 -2.27906 -0.0164877 -0.0024688
ITEM: TIMESTEP
14
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6979 2.70118 -0.00305527 -0.596753 0.339184 -0.874022 0.0680546 0.0491768 -0.0240145
2 2 1.38745 4.06591 1.37087 13.0111 4.51944 5.94124 2.07932 -0.0426096 -0.0349018
3 2 4.04765 4.07277 1.35136 -3.05804 6.4819 0.391997 -2.19038 -0.035631 0.00481829
4 1 2.69887 -0.00361013 2.70254 -0.320118 -1.0293 0.726868 0.0836894 0.0499393 0.0412807
5 2 1.3671 1.34478 4.04156 7.296 -1.49572 -2.40103 2.22598 -0.00318867 0.0154277
6 2 4.04593 1.35272 4.04391 -3.60334 0.765381 -1.74213 -2.26667 -0.0176868 -0.00261028
ITEM: TIMESTEP
15
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69775 2.70126 -0.0032738 -0.596036 0.339698 -0.874275 0.0733392 0.0523895 -0.0260413
2 2 1.39074 4.06704 1.37236 13.3225 4.51268 5.93571 2.05037 -0.0469451 -0.0384133
3 2 4.04685 4.07439 1.35146 -3.3869 6.47632 0.392716 -2.17093 -0.038409 0.00471919
4 1 2.69879 -0.00386739 2.70272 -0.319232 -1.02877 0.727309 0.0912666 0.0549279 0.0456036
5 2 1.36896 1.3444 4.04096 7.63043 -1.49619 -2.3986 2.20924 -0.00309551 0.0168709
6 2 4.04498 1.35291 4.04347 -3.94416 0.762625 -1.74253 -2.25329 -0.0188678 -0.0027391
ITEM: TIMESTEP
16
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6976 2.70135 -0.00349241 -0.595266 0.340245 -0.87455 0.0787153 0.055569 -0.0281032
2 2 1.39411 4.06817 1.37384 13.6294 4.50526 5.92964 2.02007 -0.0514799 -0.042077
3 2 4.04596 4.07601 1.35155 -3.71274 6.47031 0.393413 -2.15039 -0.0412405 0.00452364
4 1 2.69871 -0.00412452 2.7029 -0.318268 -1.02819 0.727794 0.0990893 0.0601283 0.0501398
5 2 1.37091 1.34403 4.04036 7.96225 -1.49665 -2.39594 2.19142 -0.00294819 0.0183708
6 2 4.04395 1.3531 4.04304 -4.28288 0.759692 -1.74296 -2.2389 -0.0200287 -0.00285406
ITEM: TIMESTEP
17
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69745 2.70143 -0.00371108 -0.594441 0.340824 -0.874845 0.0841889 0.0587168 -0.0301987
2 2 1.39755 4.0693 1.37532 13.9317 4.49714 5.92301 1.9884 -0.0562187 -0.0458954
3 2 4.04499 4.07763 1.35165 -4.0354 6.46388 0.394073 -2.12872 -0.0441293 0.0042247
4 1 2.69863 -0.00438149 2.70308 -0.317223 -1.02755 0.728326 0.107162 0.0655439 0.054894
5 2 1.37294 1.34365 4.03976 8.2913 -1.49708 -2.39305 2.17248 -0.00274479 0.0199293
6 2 4.04284 1.35329 4.0426 -4.61936 0.756586 -1.74339 -2.2235 -0.0211679 -0.00295392
ITEM: TIMESTEP
18
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69731 2.70152 -0.00392983 -0.593559 0.341435 -0.875162 0.0897661 0.0618346 -0.0323262
2 2 1.40107 4.07042 1.3768 14.229 4.48829 5.91578 1.95532 -0.0611659 -0.0498706
3 2 4.04394 4.07924 1.35175 -4.3547 6.457 0.394679 -2.10593 -0.0470792 0.0038154
4 1 2.69855 -0.00463829 2.70327 -0.316095 -1.02686 0.728907 0.11549 0.0711775 0.0598705
5 2 1.37506 1.34328 4.03916 8.61741 -1.49747 -2.38993 2.15241 -0.00248344 0.0215483
6 2 4.04164 1.35348 4.04217 -4.95344 0.753309 -1.74385 -2.20706 -0.0222835 -0.00303744
ITEM: TIMESTEP
19
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69716 2.7016 -0.00414866 -0.592621 0.342077 -0.8755 0.0954526 0.0649239 -0.0344841
2 2 1.40467 4.07154 1.37828 14.5213 4.47868 5.90795 1.92083 -0.0663258 -0.0540045
3 2 4.04281 4.08086 1.35185 -4.67049 6.44967 0.395215 -2.08198 -0.050094 0.00328881
4 1 2.69847 -0.00489492 2.70345 -0.314881 -1.02611 0.72954 0.124076 0.0770317 0.0650736
5 2 1.37725 1.3429 4.03857 8.94041 -1.49782 -2.38655 2.13119 -0.00216234 0.0232295
6 2 4.04036 1.35367 4.04173 -5.28496 0.749867 -1.74431 -2.18956 -0.0233735 -0.00310338
ITEM: TIMESTEP
20
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69701 2.70169 -0.00436758 -0.591624 0.342751 -0.875861 0.101254 0.0679866 -0.0366705
2 2 1.40833 4.07266 1.37976 14.8083 4.46827 5.89948 1.88489 -0.0717024 -0.0582989
3 2 4.0416 4.08247 1.35195 -4.98257 6.44189 0.395662 -2.05686 -0.0531772 0.00263798
4 1 2.69839 -0.00515135 2.70363 -0.313579 -1.0253 0.730227 0.132925 0.0831089 0.0705072
5 2 1.37953 1.34253 4.03797 9.26012 -1.49812 -2.38291 2.1088 -0.00177977 0.0249746
6 2 4.039 1.35386 4.04129 -5.61376 0.746262 -1.74478 -2.171 -0.0244362 -0.00315046

View File

@ -0,0 +1,315 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.7 2.7 0 -0.601491 0.335597 -0.87242 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 8.2897 4.55901 5.97376 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 1.7742 6.51885 0.385522 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -0.325605 -1.03244 0.724324 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.42711 -1.49109 -2.41596 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 1.30688 0.784281 -1.73922 -2.35473 -1.38761e-14 1.09382e-14
ITEM: TIMESTEP
1
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69985 2.70008 -0.000218105 -0.601467 0.335616 -0.872428 0.00470101 0.00380515 -0.00141625
2 2 1.35212 4.05114 1.35149 8.64389 4.55886 5.97363 2.34251 -0.00209926 -0.00172976
3 2 4.0504 4.05163 1.3501 1.41949 6.51866 0.385561 -2.34936 -0.00247497 0.00051716
4 1 2.69992 -0.00025811 2.70018 -0.325581 -1.03243 0.724334 0.00481137 0.00249244 0.00195665
5 2 1.35065 1.34963 4.0494 2.78199 -1.49112 -2.4159 2.3517 -0.00043711 0.000874754
6 2 4.05028 1.3502 4.04957 0.951796 0.784184 -1.73923 -2.35436 -0.00128625 -0.00020256
ITEM: TIMESTEP
2
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6997 2.70017 -0.000436214 -0.601396 0.335673 -0.872449 0.00939888 0.00756163 -0.00288164
2 2 1.35432 4.05228 1.35299 8.99615 4.55837 5.97323 2.32921 -0.00431846 -0.00355855
3 2 4.05071 4.05326 1.35019 1.06567 6.5181 0.385678 -2.34304 -0.00494314 0.00103532
4 1 2.69984 -0.000516214 2.70036 -0.325507 -1.03239 0.724364 0.00976944 0.00512657 0.00403686
5 2 1.35139 1.34925 4.04879 3.13634 -1.49122 -2.4157 2.34776 -0.000851489 0.00177498
6 2 4.05048 1.35039 4.04913 0.596838 0.783892 -1.73928 -2.3531 -0.00257512 -0.000406965
ITEM: TIMESTEP
3
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69955 2.70025 -0.00065433 -0.601277 0.335769 -0.872486 0.0141006 0.0112702 -0.00439552
2 2 1.35661 4.05342 1.35448 9.34633 4.55754 5.97255 2.31482 -0.00666433 -0.00549143
3 2 4.05093 4.05489 1.35029 0.712875 6.51717 0.385873 -2.33577 -0.00740896 0.00154764
4 1 2.69976 -0.000774304 2.70054 -0.325382 -1.03232 0.724417 0.0148831 0.00790884 0.00624833
5 2 1.35222 1.34888 4.04819 3.49003 -1.49137 -2.41536 2.3429 -0.0012407 0.00270313
6 2 4.05058 1.35059 4.0487 0.242138 0.783407 -1.73935 -2.35094 -0.00386511 -0.000612161
ITEM: TIMESTEP
4
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6994 2.70034 -0.000872457 -0.60111 0.335902 -0.872539 0.0188131 0.0149318 -0.00595718
2 2 1.359 4.05456 1.35597 9.69425 4.55635 5.97156 2.29933 -0.00914346 -0.00753331
3 2 4.05107 4.05652 1.35039 0.361248 6.51586 0.386144 -2.32753 -0.00987687 0.00204727
4 1 2.69967 -0.00103238 2.70072 -0.325204 -1.03223 0.724492 0.020161 0.0108455 0.00859866
5 2 1.35314 1.34851 4.04758 3.84292 -1.49159 -2.41488 2.33711 -0.00160232 0.00366164
6 2 4.0506 1.35078 4.04826 -0.112168 0.782727 -1.73946 -2.34789 -0.00515472 -0.000817084
ITEM: TIMESTEP
5
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69925 2.70042 -0.0010906 -0.600896 0.336071 -0.872607 0.0235434 0.0185473 -0.00756588
2 2 1.36146 4.0557 1.35747 10.0397 4.55478 5.97026 2.2827 -0.0117623 -0.00968894
3 2 4.05111 4.05815 1.35048 0.0109366 6.51419 0.386489 -2.31832 -0.0123511 0.00252727
4 1 2.69959 -0.00129042 2.70091 -0.324972 -1.0321 0.724592 0.0256115 0.0139425 0.0110953
5 2 1.35414 1.34814 4.04698 4.19487 -1.49186 -2.41425 2.33039 -0.00193394 0.0046529
6 2 4.05052 1.35098 4.04783 -0.465946 0.781852 -1.7396 -2.34393 -0.00644244 -0.00102066
ITEM: TIMESTEP
6
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6991 2.7005 -0.00130876 -0.600633 0.336277 -0.872692 0.0282985 0.0221175 -0.00922083
2 2 1.36401 4.05684 1.35896 10.3827 4.55279 5.96863 2.26494 -0.0145272 -0.0119629
3 2 4.05107 4.05978 1.35058 -0.337913 6.51214 0.386904 -2.30814 -0.0148362 0.00298071
4 1 2.69951 -0.00154843 2.70109 -0.324684 -1.03194 0.724717 0.0312427 0.0172058 0.0137455
5 2 1.35523 1.34776 4.04638 4.54573 -1.49217 -2.41347 2.32273 -0.00223319 0.00567932
6 2 4.05036 1.35117 4.04739 -0.819058 0.780784 -1.73977 -2.33906 -0.00772673 -0.00122181
ITEM: TIMESTEP
7
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69895 2.70059 -0.00152695 -0.600322 0.336519 -0.872794 0.0330853 0.0256435 -0.0109212
2 2 1.36665 4.05797 1.36045 10.7228 4.55038 5.96665 2.24601 -0.0174443 -0.0143597
3 2 4.05094 4.0614 1.35068 -0.685154 6.50971 0.387385 -2.29698 -0.0173365 0.00340068
4 1 2.69943 -0.00180639 2.70127 -0.324338 -1.03175 0.724871 0.0370626 0.020641 0.0165564
5 2 1.35641 1.34739 4.04577 4.89536 -1.49253 -2.41254 2.31411 -0.0024977 0.00674323
6 2 4.05012 1.35137 4.04696 -1.17137 0.779522 -1.73997 -2.33329 -0.00900604 -0.00141944
ITEM: TIMESTEP
8
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6988 2.70067 -0.00174516 -0.599962 0.336797 -0.872914 0.0379108 0.0291262 -0.0126661
2 2 1.36938 4.05911 1.36194 11.06 4.54752 5.96429 2.2259 -0.0205196 -0.0168834
3 2 4.05073 4.06303 1.35077 -1.03064 6.50691 0.387927 -2.28482 -0.0198564 0.00378025
4 1 2.69935 -0.0020643 2.70145 -0.323932 -1.03153 0.725054 0.0430788 0.0242538 0.0195348
5 2 1.35768 1.34702 4.04517 5.24362 -1.49292 -2.41144 2.30452 -0.0027252 0.00784692
6 2 4.04978 1.35156 4.04652 -1.52274 0.778068 -1.7402 -2.32659 -0.0102788 -0.00161245
ITEM: TIMESTEP
9
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69865 2.70076 -0.0019634 -0.599553 0.337109 -0.873051 0.0427817 0.0325667 -0.0144547
2 2 1.37218 4.06025 1.36343 11.3941 4.54418 5.96155 2.20459 -0.023759 -0.019538
3 2 4.05043 4.06466 1.35087 -1.37421 6.50372 0.388522 -2.27166 -0.0224003 0.00411244
4 1 2.69927 -0.00232215 2.70163 -0.323464 -1.03126 0.725268 0.0492987 0.0280495 0.0226874
5 2 1.35904 1.34664 4.04457 5.59036 -1.49335 -2.41017 2.29396 -0.00291347 0.00899259
6 2 4.04935 1.35176 4.04609 -1.87303 0.776422 -1.74045 -2.31898 -0.0115434 -0.00179972
ITEM: TIMESTEP
10
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6985 2.70084 -0.00218168 -0.599095 0.337456 -0.873207 0.0477049 0.0359661 -0.0162858
2 2 1.37507 4.06138 1.36492 11.7248 4.54034 5.95839 2.18206 -0.0271682 -0.0223275
3 2 4.05004 4.06628 1.35097 -1.71572 6.50015 0.389163 -2.25748 -0.0249726 0.0043903
4 1 2.69919 -0.00257993 2.70181 -0.322932 -1.03096 0.725515 0.0557294 0.0320331 0.0260207
5 2 1.36048 1.34627 4.04397 5.93543 -1.4938 -2.40872 2.2824 -0.00306026 0.0101825
6 2 4.04884 1.35195 4.04565 -2.2221 0.774587 -1.74074 -2.31042 -0.0127983 -0.00198013
ITEM: TIMESTEP
11
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69835 2.70092 -0.00240001 -0.598586 0.337838 -0.873382 0.0526872 0.0393256 -0.0181586
2 2 1.37805 4.06252 1.36641 12.0521 4.53597 5.9548 2.15829 -0.0307526 -0.0252554
3 2 4.04957 4.06791 1.35106 -2.05501 6.49619 0.389841 -2.24228 -0.0275775 0.00460683
4 1 2.69911 -0.00283763 2.70199 -0.322334 -1.03061 0.725796 0.0623777 0.0362096 0.0295409
5 2 1.362 1.3459 4.04336 6.27868 -1.49427 -2.40709 2.26985 -0.00316333 0.0114188
6 2 4.04824 1.35215 4.04522 -2.56981 0.772563 -1.74105 -2.30093 -0.0140417 -0.00215255
ITEM: TIMESTEP
12
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6982 2.70101 -0.00261837 -0.598027 0.338253 -0.873575 0.0577351 0.0426463 -0.0200718
2 2 1.3811 4.06365 1.3679 12.3757 4.53105 5.95076 2.13326 -0.0345179 -0.0283253
3 2 4.04901 4.06953 1.35116 -2.39194 6.49183 0.390547 -2.22604 -0.0302194 0.00475506
4 1 2.69903 -0.00309524 2.70217 -0.321667 -1.03022 0.726114 0.06925 0.0405836 0.0332542
5 2 1.36362 1.34552 4.04276 6.61997 -1.49475 -2.40527 2.25627 -0.00322051 0.0127037
6 2 4.04756 1.35234 4.04478 -2.91602 0.770353 -1.74139 -2.29048 -0.0152721 -0.00231583
ITEM: TIMESTEP
13
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69805 2.70109 -0.00283679 -0.597416 0.338702 -0.873788 0.0628554 0.0459295 -0.0220243
2 2 1.38423 4.06478 1.36939 12.6954 4.52555 5.94625 2.10694 -0.0384688 -0.0315401
3 2 4.04837 4.07115 1.35126 -2.72634 6.48707 0.39127 -2.20874 -0.0329024 0.00482793
4 1 2.69895 -0.00335274 2.70236 -0.320929 -1.02979 0.726471 0.0763523 0.0451591 0.0371659
5 2 1.36531 1.34515 4.04216 6.95912 -1.49523 -2.40326 2.24165 -0.00322965 0.0140393
6 2 4.04678 1.35253 4.04434 -3.26057 0.767958 -1.74175 -2.27906 -0.0164877 -0.0024688
ITEM: TIMESTEP
14
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6979 2.70118 -0.00305527 -0.596753 0.339184 -0.874022 0.0680546 0.0491768 -0.0240145
2 2 1.38745 4.06591 1.37087 13.0111 4.51944 5.94124 2.07932 -0.0426096 -0.0349018
3 2 4.04765 4.07277 1.35136 -3.05804 6.4819 0.391997 -2.19038 -0.035631 0.00481829
4 1 2.69887 -0.00361013 2.70254 -0.320118 -1.0293 0.726868 0.0836894 0.0499393 0.0412807
5 2 1.3671 1.34478 4.04156 7.296 -1.49572 -2.40103 2.22598 -0.00318867 0.0154277
6 2 4.04593 1.35272 4.04391 -3.60334 0.765381 -1.74213 -2.26667 -0.0176868 -0.00261028
ITEM: TIMESTEP
15
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69775 2.70126 -0.0032738 -0.596036 0.339698 -0.874275 0.0733392 0.0523895 -0.0260413
2 2 1.39074 4.06704 1.37236 13.3225 4.51268 5.93571 2.05037 -0.0469451 -0.0384133
3 2 4.04685 4.07439 1.35146 -3.3869 6.47632 0.392716 -2.17093 -0.038409 0.00471919
4 1 2.69879 -0.00386739 2.70272 -0.319232 -1.02877 0.727309 0.0912666 0.0549279 0.0456036
5 2 1.36896 1.3444 4.04096 7.63043 -1.49619 -2.3986 2.20924 -0.00309551 0.0168709
6 2 4.04498 1.35291 4.04347 -3.94416 0.762625 -1.74253 -2.25329 -0.0188678 -0.0027391
ITEM: TIMESTEP
16
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.6976 2.70135 -0.00349241 -0.595266 0.340245 -0.87455 0.0787153 0.055569 -0.0281032
2 2 1.39411 4.06817 1.37384 13.6294 4.50526 5.92964 2.02007 -0.0514799 -0.042077
3 2 4.04596 4.07601 1.35155 -3.71274 6.47031 0.393413 -2.15039 -0.0412405 0.00452364
4 1 2.69871 -0.00412452 2.7029 -0.318268 -1.02819 0.727794 0.0990893 0.0601283 0.0501398
5 2 1.37091 1.34403 4.04036 7.96225 -1.49665 -2.39594 2.19142 -0.00294819 0.0183708
6 2 4.04395 1.3531 4.04304 -4.28288 0.759692 -1.74296 -2.2389 -0.0200287 -0.00285406
ITEM: TIMESTEP
17
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69745 2.70143 -0.00371108 -0.594441 0.340824 -0.874845 0.0841889 0.0587168 -0.0301987
2 2 1.39755 4.0693 1.37532 13.9317 4.49714 5.92301 1.9884 -0.0562187 -0.0458954
3 2 4.04499 4.07763 1.35165 -4.0354 6.46388 0.394073 -2.12872 -0.0441293 0.0042247
4 1 2.69863 -0.00438149 2.70308 -0.317223 -1.02755 0.728326 0.107162 0.0655439 0.054894
5 2 1.37294 1.34365 4.03976 8.2913 -1.49708 -2.39305 2.17248 -0.00274479 0.0199293
6 2 4.04284 1.35329 4.0426 -4.61936 0.756586 -1.74339 -2.2235 -0.0211679 -0.00295392
ITEM: TIMESTEP
18
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69731 2.70152 -0.00392983 -0.593559 0.341435 -0.875162 0.0897661 0.0618346 -0.0323262
2 2 1.40107 4.07042 1.3768 14.229 4.48829 5.91578 1.95532 -0.0611659 -0.0498706
3 2 4.04394 4.07924 1.35175 -4.3547 6.457 0.394679 -2.10593 -0.0470792 0.0038154
4 1 2.69855 -0.00463829 2.70327 -0.316095 -1.02686 0.728907 0.11549 0.0711775 0.0598705
5 2 1.37506 1.34328 4.03916 8.61741 -1.49747 -2.38993 2.15241 -0.00248344 0.0215483
6 2 4.04164 1.35348 4.04217 -4.95344 0.753309 -1.74385 -2.20706 -0.0222835 -0.00303744
ITEM: TIMESTEP
19
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69716 2.7016 -0.00414866 -0.592621 0.342077 -0.8755 0.0954526 0.0649239 -0.0344841
2 2 1.40467 4.07154 1.37828 14.5213 4.47868 5.90795 1.92083 -0.0663258 -0.0540045
3 2 4.04281 4.08086 1.35185 -4.67049 6.44967 0.395215 -2.08198 -0.050094 0.00328881
4 1 2.69847 -0.00489492 2.70345 -0.314881 -1.02611 0.72954 0.124076 0.0770317 0.0650736
5 2 1.37725 1.3429 4.03857 8.94041 -1.49782 -2.38655 2.13119 -0.00216234 0.0232295
6 2 4.04036 1.35367 4.04173 -5.28496 0.749867 -1.74431 -2.18956 -0.0233735 -0.00310338
ITEM: TIMESTEP
20
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z vx vy vz fx fy fz
1 1 2.69701 2.70169 -0.00436758 -0.591624 0.342751 -0.875861 0.101254 0.0679866 -0.0366705
2 2 1.40833 4.07266 1.37976 14.8083 4.46827 5.89948 1.88489 -0.0717024 -0.0582989
3 2 4.0416 4.08247 1.35195 -4.98257 6.44189 0.395662 -2.05686 -0.0531772 0.00263798
4 1 2.69839 -0.00515135 2.70363 -0.313579 -1.0253 0.730227 0.132925 0.0831089 0.0705072
5 2 1.37953 1.34253 4.03797 9.26012 -1.49812 -2.38291 2.1088 -0.00177977 0.0249746
6 2 4.039 1.35386 4.04129 -5.61376 0.746262 -1.74478 -2.171 -0.0244362 -0.00315046

View File

@ -0,0 +1,15 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 -2.35473 -1.38761e-14 1.09382e-14

View File

@ -0,0 +1,18 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
9
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.6199999999999999e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -1.27436e-13 0.760572 0.760572
2 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
3 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901
4 1 2.7 1.65327e-16 2.7 -8.06311e-14 -1.57101 -1.57101
5 2 1.35 1.35 4.05 2.79365 0.684734 0.684734
6 2 4.05 1.35 4.05 -2.79365 0.684734 0.684734
7 1 2.7 2.7 0 -1.30843e-13 0.760572 0.760572
8 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
9 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901

View File

@ -0,0 +1,21 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
12
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 6.6130927153957075e-16
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 8.1 0 -0.433947 2.16479 1.55466
2 2 1.35 9.45 1.35 1.64718 -0.119006 0.375837
3 2 4.05 9.45 1.35 0.999862 -1.02573 0.037629
4 1 5.4 8.1 2.7 0.433947 2.16479 1.55466
5 2 4.05 9.45 4.05 -0.999862 -1.02573 0.037629
6 2 6.75 9.45 4.05 -1.64718 -0.119006 0.375837
7 1 2.7 1.65327e-16 2.7 -0.211437 1.63064 -0.0728897
8 2 1.35 1.35 4.05 0.461807 -1.3955 -1.94959
9 2 4.05 1.35 4.05 0.708573 -1.2552 0.0543549
10 1 5.4 0 0 0.211437 1.63064 -0.0728897
11 2 4.05 1.35 1.35 -0.708573 -1.2552 0.0543549
12 2 6.75 1.35 1.35 -0.461807 -1.3955 -1.94959

View File

@ -0,0 +1,15 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 -2.35473 -1.38761e-14 1.09382e-14

View File

@ -0,0 +1,18 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
9
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.6199999999999999e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -1.27436e-13 0.760572 0.760572
2 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
3 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901
4 1 2.7 1.65327e-16 2.7 -8.06311e-14 -1.57101 -1.57101
5 2 1.35 1.35 4.05 2.79365 0.684734 0.684734
6 2 4.05 1.35 4.05 -2.79365 0.684734 0.684734
7 1 2.7 2.7 0 -1.30843e-13 0.760572 0.760572
8 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
9 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901

View File

@ -0,0 +1,21 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
12
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 6.6130927153957075e-16
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 8.1 0 -0.433947 2.16479 1.55466
2 2 1.35 9.45 1.35 1.64718 -0.119006 0.375837
3 2 4.05 9.45 1.35 0.999862 -1.02573 0.037629
4 1 5.4 8.1 2.7 0.433947 2.16479 1.55466
5 2 4.05 9.45 4.05 -0.999862 -1.02573 0.037629
6 2 6.75 9.45 4.05 -1.64718 -0.119006 0.375837
7 1 2.7 1.65327e-16 2.7 -0.211437 1.63064 -0.0728897
8 2 1.35 1.35 4.05 0.461807 -1.3955 -1.94959
9 2 4.05 1.35 4.05 0.708573 -1.2552 0.0543549
10 1 5.4 0 0 0.211437 1.63064 -0.0728897
11 2 4.05 1.35 1.35 -0.708573 -1.2552 0.0543549
12 2 6.75 1.35 1.35 -0.461807 -1.3955 -1.94959

View File

@ -0,0 +1,15 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -2.27066e-14 -1.33391e-14 2.31141e-14
2 2 1.35 4.05 1.35 2.35473 2.21578e-14 7.40069e-15
3 2 4.05 4.05 1.35 -2.35473 2.97071e-15 -2.01341e-14
4 1 2.7 1.65327e-16 2.7 -2.90278e-14 6.77422e-15 2.86766e-15
5 2 1.35 1.35 4.05 2.35473 5.79901e-15 -1.19594e-14
6 2 4.05 1.35 4.05 -2.35473 -1.38761e-14 1.09382e-14

View File

@ -0,0 +1,18 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
9
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.6199999999999999e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 2.7 0 -1.27436e-13 0.760572 0.760572
2 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
3 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901
4 1 2.7 1.65327e-16 2.7 -8.06311e-14 -1.57101 -1.57101
5 2 1.35 1.35 4.05 2.79365 0.684734 0.684734
6 2 4.05 1.35 4.05 -2.79365 0.684734 0.684734
7 1 2.7 2.7 0 -1.30843e-13 0.760572 0.760572
8 2 1.35 4.05 1.35 0.682428 -0.329901 -0.329901
9 2 4.05 4.05 1.35 -0.682428 -0.329901 -0.329901

View File

@ -0,0 +1,21 @@
ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
12
ITEM: BOX BOUNDS xy xz yz pp pp pp
0.0000000000000000e+00 1.0800000000000001e+01 6.6130927153957075e-16
0.0000000000000000e+00 1.0800000000000001e+01 3.3065463576978537e-16
0.0000000000000000e+00 5.4000000000000004e+00 3.3065463576978537e-16
ITEM: ATOMS id type x y z fx fy fz
1 1 2.7 8.1 0 -0.433947 2.16479 1.55466
2 2 1.35 9.45 1.35 1.64718 -0.119006 0.375837
3 2 4.05 9.45 1.35 0.999862 -1.02573 0.037629
4 1 5.4 8.1 2.7 0.433947 2.16479 1.55466
5 2 4.05 9.45 4.05 -0.999862 -1.02573 0.037629
6 2 6.75 9.45 4.05 -1.64718 -0.119006 0.375837
7 1 2.7 1.65327e-16 2.7 -0.211437 1.63064 -0.0728897
8 2 1.35 1.35 4.05 0.461807 -1.3955 -1.94959
9 2 4.05 1.35 4.05 0.708573 -1.2552 0.0543549
10 1 5.4 0 0 0.211437 1.63064 -0.0728897
11 2 4.05 1.35 1.35 -0.708573 -1.2552 0.0543549
12 2 6.75 1.35 1.35 -0.461807 -1.3955 -1.94959

View File

@ -0,0 +1,15 @@
Noelem= 2
Element basis Numel Es Ep Ed Ef Mass HubbardU Wss Wpp Wdd Wff
U sdf 6.0 -4.08 0.0 0.816 -0.586 238.05078 9.0 0.0 0.0 0.0 0.0
O sp 6.0 -23.77 -8.85 0.0 0.0 15.994915 12.2 0.0 0.0 0.0 0.0
W spd 6.0 -4.52 0.53 -2.91 0.0 183.84 7.048 0.0 0.0 0.0 0.0
Mo sd 6.0 -3.29 0.0 -1.98 0.0 95.95 6.48 0.0 0.0 0.0 0.0
S sp 6.0 -14.00 -3.97 0.0 0.0 32.06 8.28 0.0 -0.4278 0.0 0.0
N sp 5.000000 -18.543798 -7.862407 0.000000 0.000000 14.006700 17.053958 0.000000 -0.6934 0.000000 0.000000
H s 1.000000 -6.237968 0.000000 0.000000 0.000000 1.007900 13.684855 -2.23400 0.000000 0.000000 0.000000
C sp 4.000000 -13.736556 -4.748938 0.000000 0.000000 12.010000 10.522540 0.000000 -0.618100 0.000000 0.000000
O sp 6.000000 -23.833752 -9.645001 0.000000 0.000000 15.999400 14.443874 0.000000 -0.757650 0.000000 0.000000

26
examples/QM/LATTE/in.aimd Normal file
View File

@ -0,0 +1,26 @@
# AIMD test of two UO2 molecules with LATTE in MDI stand-alone mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.mpi &
id type x y z vx vy vz fx fy fz
run 20

View File

@ -0,0 +1,27 @@
# AIMD test of two UO2 molecules with LATTE in MDI plugin mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.plugin &
id type x y z vx vy vz fx fy fz
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" &
command "run 20"

View File

@ -0,0 +1,37 @@
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI stand-alone mode
variable files index 2uo2 3uo2 4uo2
mdi connect
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
write_dump all custom dump.series.mpi.${files} &
id type x y z fx fy fz modify sort id
clear
next files
jump SELF LOOP
mdi exit

View File

@ -0,0 +1,32 @@
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI plugin mode
variable files index 2uo2 3uo2 4uo2
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
fix 1 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" &
command "run 0"
write_dump all custom dump.series.plugin.${files} &
id type x y z fx fy fz modify sort id
clear
next files
jump SELF LOOP

67
examples/QM/LATTE/latte.in Executable file
View File

@ -0,0 +1,67 @@
#General controls
CONTROL{
XCONTROL= 1
BASISTYPE= NONORTHO
PARAMPATH= './'
SCLTYPE= TABLE
DEBUGON= 0
FERMIM= 6
CGORLIB= 1 CGTOL= 1.0e-6
KBT= 1.0
NORECS= 5
ENTROPYKIND= 1
PPOTON= 2 VDWON= 0
SPINON= 0 SPINTOL= 1.0e-4
ELECTRO= 1 ELECMETH= 0 ELEC_ETOL= 0.001 ELEC_QTOL= 1.0e-12
COULACC= 1.0e-6 COULCUT= -500.0 COULR1= 500.0
MAXSCF= 250
BREAKTOL= 1.0E-12 MINSP2ITER= 22 SP2CONV= REL
FULLQCONV= 1 QITER= 0
QMIX= 0.05 SPINMIX= 0.05 MDMIX= 0.05
#QMIX= 0.25 SPINMIX= 0.25 MDMIX= 0.25
ORDERNMOL= 0
SPARSEON= 0 THRESHOLDON= 1 NUMTHRESH= 1.0e-6 FILLINSTOP= 100 BLKSZ= 4
MSPARSE= 3000
LCNON= 0 LCNITER= 4 CHTOL= 0.01
SKIN= 1.0
RELAX= 0 RELAXTYPE= SD MAXITER= 100 RLXFTOL= 0.001
MDON= 1
PBCON= 1
RESTART= 0
CHARGE= 0
XBO= 1
XBODISON= 1
XBODISORDER= 5
NGPU= 2
KON= 0
COMPFORCE= 1
DOSFIT= 0 INTS2FIT= 1 BETA= 1000.0 NFITSTEP= 5000 QFIT= 0 MCSIGMA= 0.2
PPFITON= 0
ALLFITON= 0
PPSTEP= 500 BISTEP= 500 PP2FIT= 2 BINT2FIT= 6
PPBETA= 1000.0 PPSIGMA= 0.01 PPNMOL= 10 PPNGEOM= 200
PARREP= 0
ER= 1.0
#DOKERNEL= T
}
MDCONTROL{
MAXITER= 2000
UDNEIGH= 1
DT= 0.5
TEMPERATURE= 1.0e-10 RNDIST= GAUSSIAN SEEDINIT= UNIFORM
DUMPFREQ= 250
RSFREQ= 500
WRTFREQ= 1
TOINITTEMP5= 1
THERMPER= 500
THERMRUN= 50000
NVTON= 0 NPTON= 0 AVEPER= 1000 FRICTION= 1000.0 SEED= 54
PTARGET= 0.0 NPTTYPE= ISO
SHOCKON= 0
SHOCKSTART= 100000
SHOCKDIR= 1
UPARTICLE= 500.0 USHOCK= -4590.0 C0= 1300.0
MDADAPT= 0
GETHUG= 0 E0= -795.725 V0= 896.984864 P0= 0.083149
}

View File

@ -0,0 +1,102 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# AIMD test of two UO2 molecules with LATTE in MDI stand-alone mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.003 seconds
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.mpi id type x y z vx vy vz fx fy fz
run 20
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 6.489 | 6.489 | 6.489 Mbytes
Step Temp PotEng TotEng Press
0 300 -50.539035 -50.345145 -120197.6
1 307.57345 -50.544722 -50.345937 -120123.27
2 316.3757 -50.551342 -50.346868 -120035.12
3 326.39203 -50.558885 -50.347938 -119933.11
4 337.60559 -50.567341 -50.349146 -119817.17
5 349.99734 -50.576697 -50.350493 -119687.24
6 363.54606 -50.586939 -50.351979 -119543.23
7 378.22834 -50.598054 -50.353605 -119385.07
8 394.0186 -50.610024 -50.355369 -119212.67
9 410.88903 -50.622831 -50.357273 -119025.94
10 428.80963 -50.636457 -50.359317 -118824.77
11 447.74819 -50.65088 -50.3615 -118609.06
12 467.67027 -50.666079 -50.363823 -118378.7
13 488.53922 -50.68203 -50.366287 -118133.58
14 510.31617 -50.698708 -50.36889 -117873.58
15 532.96002 -50.716086 -50.371633 -117598.57
16 556.42747 -50.734137 -50.374517 -117308.44
17 580.67298 -50.75283 -50.377541 -117003.05
18 605.64879 -50.772136 -50.380705 -116682.27
19 631.30497 -50.792023 -50.38401 -116345.95
20 657.58937 -50.812455 -50.387454 -115993.97
Loop time of 3.40001 on 1 procs for 20 steps with 6 atoms
Performance: 0.127 ns/day, 188.889 hours/ns, 5.882 timesteps/s
100.0% 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 | 0 | 0 | 0.0 | 0.00
Bond | 1.2223e-05 | 1.2223e-05 | 1.2223e-05 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 6.0971e-05 | 6.0971e-05 | 6.0971e-05 | 0.0 | 0.00
Output | 0.0009257 | 0.0009257 | 0.0009257 | 0.0 | 0.03
Modify | 3.3989 | 3.3989 | 3.3989 | 0.0 | 99.97
Other | | 6.824e-05 | | | 0.00
Nlocal: 6 ave 6 max 6 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2 ave 2 max 2 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03

View File

@ -0,0 +1,102 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# AIMD test of two UO2 molecules with LATTE in MDI stand-alone mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
2 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.005 seconds
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.mpi id type x y z vx vy vz fx fy fz
run 20
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.485 | 5.987 | 6.489 Mbytes
Step Temp PotEng TotEng Press
0 300 -50.539035 -50.345145 -120197.6
1 307.57345 -50.544722 -50.345937 -120123.27
2 316.3757 -50.551342 -50.346868 -120035.12
3 326.39203 -50.558885 -50.347938 -119933.11
4 337.60559 -50.567341 -50.349146 -119817.17
5 349.99734 -50.576697 -50.350493 -119687.24
6 363.54606 -50.586939 -50.351979 -119543.23
7 378.22834 -50.598054 -50.353605 -119385.07
8 394.0186 -50.610024 -50.355369 -119212.67
9 410.88903 -50.622831 -50.357273 -119025.94
10 428.80963 -50.636457 -50.359317 -118824.77
11 447.74819 -50.65088 -50.3615 -118609.06
12 467.67027 -50.666079 -50.363823 -118378.7
13 488.53922 -50.68203 -50.366287 -118133.58
14 510.31617 -50.698708 -50.36889 -117873.58
15 532.96002 -50.716086 -50.371633 -117598.57
16 556.42747 -50.734137 -50.374517 -117308.44
17 580.67298 -50.75283 -50.377541 -117003.05
18 605.64879 -50.772136 -50.380705 -116682.27
19 631.30497 -50.792023 -50.38401 -116345.95
20 657.58937 -50.812455 -50.387454 -115993.97
Loop time of 25.2055 on 2 procs for 20 steps with 6 atoms
Performance: 0.017 ns/day, 1400.306 hours/ns, 0.793 timesteps/s
99.9% CPU use with 2 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Bond | 1.746e-05 | 2.5213e-05 | 3.2966e-05 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 4.3862e-05 | 5.4267e-05 | 6.4671e-05 | 0.0 | 0.00
Output | 0.001642 | 0.0018189 | 0.0019957 | 0.4 | 0.01
Modify | 25.203 | 25.203 | 25.203 | 0.0 | 99.99
Other | | 0.000307 | | | 0.00
Nlocal: 3 ave 6 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Nghost: 1 ave 2 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 2 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:26

View File

@ -0,0 +1,103 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# AIMD test of two UO2 molecules with LATTE in MDI plugin mode
units metal
atom_style full
atom_modify sort 0 0.0
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.004 seconds
velocity all create 300.0 87287 loop geom
neighbor 1.0 bin
neigh_modify every 1 delay 0 check yes
timestep 0.00025
fix 1 all nve
fix 2 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
dump 1 all custom 1 dump.aimd.plugin id type x y z vx vy vz fx fy fz
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" command "run 20"
run 20
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 6.489 | 6.489 | 6.489 Mbytes
Step Temp PotEng TotEng Press
0 300 -50.539035 -50.345145 -120197.6
1 307.57345 -50.544722 -50.345937 -120123.27
2 316.3757 -50.551342 -50.346868 -120035.12
3 326.39203 -50.558885 -50.347938 -119933.11
4 337.60559 -50.567341 -50.349146 -119817.17
5 349.99734 -50.576697 -50.350493 -119687.24
6 363.54606 -50.586939 -50.351979 -119543.23
7 378.22834 -50.598054 -50.353605 -119385.07
8 394.0186 -50.610024 -50.355369 -119212.67
9 410.88903 -50.622831 -50.357273 -119025.94
10 428.80963 -50.636457 -50.359317 -118824.77
11 447.74819 -50.65088 -50.3615 -118609.06
12 467.67027 -50.666079 -50.363823 -118378.7
13 488.53922 -50.68203 -50.366287 -118133.58
14 510.31617 -50.698708 -50.36889 -117873.58
15 532.96002 -50.716086 -50.371633 -117598.57
16 556.42747 -50.734137 -50.374517 -117308.44
17 580.67298 -50.75283 -50.377541 -117003.05
18 605.64879 -50.772136 -50.380705 -116682.27
19 631.30497 -50.792023 -50.38401 -116345.95
20 657.58937 -50.812455 -50.387454 -115993.97
Loop time of 2.74435 on 1 procs for 20 steps with 6 atoms
Performance: 0.157 ns/day, 152.464 hours/ns, 7.288 timesteps/s
99.8% 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 | 0 | 0 | 0.0 | 0.00
Bond | 1.299e-05 | 1.299e-05 | 1.299e-05 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 7.9198e-05 | 7.9198e-05 | 7.9198e-05 | 0.0 | 0.00
Output | 0.001118 | 0.001118 | 0.001118 | 0.0 | 0.04
Modify | 2.743 | 2.743 | 2.743 | 0.0 | 99.95
Other | | 0.0001456 | | | 0.01
Nlocal: 6 ave 6 max 6 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2 ave 2 max 2 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
Total wall time: 0:00:03

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,263 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI stand-alone mode
variable files index 2uo2 3uo2 4uo2
mdi connect
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.003 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -50.539035 -50.539035 -120855.2
Loop time of 1.397e-06 on 1 procs for 0 steps with 6 atoms
71.6% 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 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.397e-06 | | |100.00
Nlocal: 6 ave 6 max 6 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2 ave 2 max 2 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.mpi.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.mpi.2uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 3uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (16.2 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
9 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.002 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 16.2, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -78.155679 -78.155679 -99931.431
Loop time of 1.117e-06 on 1 procs for 0 steps with 9 atoms
89.5% 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 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.117e-06 | | |100.00
Nlocal: 9 ave 9 max 9 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 3 ave 3 max 3 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.mpi.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.mpi.3uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 4uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 10.8 5.4) with tilt (6.6130927e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
12 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.001 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -102.35713 -102.35713 -31036.168
Loop time of 1.466e-06 on 1 procs for 0 steps with 12 atoms
136.4% 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 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.466e-06 | | |100.00
Nlocal: 12 ave 12 max 12 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 5 ave 5 max 5 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.mpi.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.mpi.4uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
mdi exit
Total wall time: 0:00:02

View File

@ -0,0 +1,263 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI stand-alone mode
variable files index 2uo2 3uo2 4uo2
mdi connect
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
2 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.004 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.234 | 5.236 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -50.539035 -50.539035 -120855.2
Loop time of 1.956e-06 on 2 procs for 0 steps with 6 atoms
127.8% CPU use with 2 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.956e-06 | | |100.00
Nlocal: 3 ave 6 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Nghost: 1 ave 2 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 2 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.mpi.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.mpi.2uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 3uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (16.2 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
2 by 1 by 1 MPI processor grid
reading atoms ...
9 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.001 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 16.2, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.234 | 5.236 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -78.155679 -78.155679 -99931.431
Loop time of 2.375e-06 on 2 procs for 0 steps with 9 atoms
147.4% CPU use with 2 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 2.375e-06 | | |100.00
Nlocal: 4.5 ave 9 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Nghost: 1.5 ave 3 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 2 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.mpi.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.mpi.3uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 4uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 10.8 5.4) with tilt (6.6130927e-16 3.3065464e-16 3.3065464e-16)
1 by 2 by 1 MPI processor grid
reading atoms ...
12 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.002 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
timestep 0.001
fix 1 all mdi/qm virial yes elements 92 8 connect no
thermo_style custom step temp pe etotal press
thermo 1
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -102.35713 -102.35713 -31036.168
Loop time of 2.4445e-06 on 2 procs for 0 steps with 12 atoms
122.7% CPU use with 2 MPI tasks x 1 OpenMP threads
MPI task timing breakdown:
Section | min time | avg time | max time |%varavg| %total
---------------------------------------------------------------
Pair | 0 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 2.444e-06 | | |100.00
Nlocal: 6 ave 6 max 6 min
Histogram: 2 0 0 0 0 0 0 0 0 0
Nghost: 2.5 ave 4 max 1 min
Histogram: 1 0 0 0 0 0 0 0 0 1
Neighs: 0 ave 0 max 0 min
Histogram: 2 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.mpi.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.mpi.4uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
mdi exit
Total wall time: 0:00:08

View File

@ -0,0 +1,256 @@
LAMMPS (23 Jun 2022)
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
# Series of single-point calcs of 2,3,4 UO2 molecules
# with LATTE in MDI plugin mode
variable files index 2uo2 3uo2 4uo2
label LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 2uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
6 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.004 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
fix 1 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" command "run 0"
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -50.539035 -50.539035 -120855.2
Loop time of 1.396e-06 on 1 procs for 0 steps with 6 atoms
143.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 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.396e-06 | | |100.00
Nlocal: 6 ave 6 max 6 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 2 ave 2 max 2 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.plugin.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.plugin.2uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 3uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (16.2 5.4 5.4) with tilt (3.3065464e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
9 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.002 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
fix 1 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" command "run 0"
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 16.2, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -78.155679 -78.155679 -99931.431
Loop time of 1.117e-06 on 1 procs for 0 steps with 9 atoms
89.5% 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 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.117e-06 | | |100.00
Nlocal: 9 ave 9 max 9 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 3 ave 3 max 3 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.plugin.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.plugin.3uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
units metal
atom_style full
atom_modify sort 0 0.0
read_data ${files}.lmp
read_data 4uo2.lmp
Reading data file ...
triclinic box = (0 0 0) to (10.8 10.8 5.4) with tilt (6.6130927e-16 3.3065464e-16 3.3065464e-16)
1 by 1 by 1 MPI processor grid
reading atoms ...
12 atoms
Finding 1-2 1-3 1-4 neighbors ...
special bond factors lj: 0 0 0
special bond factors coul: 0 0 0
0 = max # of 1-2 neighbors
0 = max # of 1-3 neighbors
0 = max # of 1-4 neighbors
1 = max # of special neighbors
special bonds CPU = 0.000 seconds
read_data CPU = 0.001 seconds
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
fix 1 all mdi/qm virial yes elements 92 8
thermo_style custom step temp pe etotal press
thermo 1
mdi plugin latte_mdi mdi "-role ENGINE -name LATTE -method LINK" command "run 0"
run 0
WARNING: No fixes with time integration, atoms won't move (src/verlet.cpp:60)
Neighbor list info ...
update every 1 steps, delay 0 steps, check yes
max neighbors/atom: 2000, page size: 100000
master list distance cutoff = 0
ghost atom cutoff = 0
binsize = 10.8, bins = 1 1 1
0 neighbor lists, perpetual/occasional/extra = 0 0 0
WARNING: Communication cutoff is 0.0. No ghost atoms will be generated. Atoms may get lost. (src/comm_brick.cpp:210)
Per MPI rank memory allocation (min/avg/max) = 5.238 | 5.238 | 5.238 Mbytes
Step Temp PotEng TotEng Press
0 0 -102.35713 -102.35713 -31036.168
Loop time of 1.048e-06 on 1 procs for 0 steps with 12 atoms
190.8% 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 | 0 | 0 | 0.0 | 0.00
Bond | 0 | 0 | 0 | 0.0 | 0.00
Neigh | 0 | 0 | 0 | 0.0 | 0.00
Comm | 0 | 0 | 0 | 0.0 | 0.00
Output | 0 | 0 | 0 | 0.0 | 0.00
Modify | 0 | 0 | 0 | 0.0 | 0.00
Other | | 1.048e-06 | | |100.00
Nlocal: 12 ave 12 max 12 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Nghost: 5 ave 5 max 5 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Neighs: 0 ave 0 max 0 min
Histogram: 1 0 0 0 0 0 0 0 0 0
Total # of neighbors = 0
Ave neighs/atom = 0
Ave special neighs/atom = 0
Neighbor list builds = 0
Dangerous builds = 0
write_dump all custom dump.series.plugin.${files} id type x y z fx fy fz modify sort id
write_dump all custom dump.series.plugin.4uo2 id type x y z fx fy fz modify sort id
clear
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:98)
using 1 OpenMP thread(s) per MPI task
next files
jump SELF LOOP
Total wall time: 0:00:01

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,178 @@
3
U O
101
1.0000000000000000 53.452052832272599
1.0520000000000000 48.423668742582244
1.1040000000000001 43.721445018814535
1.1560000000000001 39.334296276283553
1.2080000000000000 35.251137130303420
1.2600000000000000 31.460882196188166
1.3120000000000001 27.952446089251964
1.3639999999999999 24.714743424808852
1.4159999999999999 21.736688818172937
1.4680000000000000 19.007196884658306
1.5200000000000000 16.515182239579076
1.5720000000000001 14.249559498249329
1.6240000000000001 12.199243275983154
1.6760000000000002 10.353148188094648
1.7280000000000000 8.7001888498979163
1.7800000000000000 7.2292798767070447
1.8320000000000001 5.9293358838361092
1.8839999999999999 4.7892714865992376
1.9359999999999999 3.7980013003104953
1.9880000000000000 2.9444399402839894
2.0400000000000000 2.2175020218338095
2.0920000000000001 1.6061021602740548
2.1440000000000001 1.0991549709188142
2.1960000000000002 0.68557506908218180
2.2480000000000002 0.35427707007825704
2.2999999999999998 9.4175589221130632E-002
2.3520000000000003 -0.10581475817510910
2.4039999999999999 -0.25677935679635860
2.4560000000000000 -0.36980359132853102
2.5080000000000000 -0.45596679597127698
2.5600000000000001 -0.52381995798172376
2.6120000000000001 -0.57548542297431915
2.6640000000000001 -0.61207888691334400
2.7160000000000002 -0.63471604576307783
2.7679999999999998 -0.64451259548780349
2.8200000000000003 -0.64258423205180126
2.8719999999999999 -0.63004665141935134
2.9240000000000004 -0.60801554955473625
2.9760000000000000 -0.57760662242223493
3.0280000000000000 -0.53993556598613002
3.0800000000000001 -0.49611807621070214
3.1320000000000001 -0.44726984906023193
3.1840000000000002 -0.39450658049900023
3.2359999999999998 -0.33894396649128961
3.2880000000000003 -0.28169770300137842
3.3399999999999999 -0.22388348599354982
3.3920000000000003 -0.16661701143208349
3.4440000000000000 -0.11101397528126161
3.4960000000000004 -5.8190073505363524E-002
3.5480000000000000 -9.2610020686722198E-003
3.6000000000000001 3.4657543064533058E-002
3.6519999999999997 7.2695102245010301E-002
3.7040000000000002 0.10496216108368017
3.7560000000000002 0.13181444150650151
3.8080000000000003 0.15360766543943441
3.8599999999999999 0.17069755480843840
3.9119999999999999 0.18343983153947352
3.9640000000000004 0.19219021755849935
4.0160000000000000 0.19730443479147558
4.0679999999999996 0.19913820516436204
4.1200000000000001 0.19804725060311840
4.1719999999999997 0.19438729303370450
4.2240000000000002 0.18851405438207983
4.2759999999999998 0.18078325657420447
4.3280000000000003 0.17155062153603778
4.3799999999999999 0.16117187119353987
4.4320000000000004 0.15000272747267010
4.4840000000000000 0.13839891229938861
4.5359999999999996 0.12671614759965491
4.5880000000000001 0.11531015529942858
4.6400000000000006 0.10450791010072910
4.6920000000000002 9.4401608127654982E-002
4.7439999999999998 8.4968801575229971E-002
4.7960000000000003 7.6186266463431560E-002
4.8480000000000008 6.8030778812237541E-002
4.9000000000000004 6.0479114641625663E-002
4.9520000000000000 5.3508049971573365E-002
5.0040000000000004 4.7094360822058187E-002
5.0560000000000000 4.1214823213057958E-002
5.1080000000000005 3.5846213164550077E-002
5.1600000000000001 3.0965306696512353E-002
5.2119999999999997 2.6548879828922314E-002
5.2640000000000002 2.2573708581757501E-002
5.3159999999999998 1.9016568974995669E-002
5.3680000000000003 1.5854237028614312E-002
5.4199999999999999 1.3063488762591162E-002
5.4719999999999995 1.0621100196903764E-002
5.5240000000000000 8.5038473515297100E-003
5.5760000000000005 6.6885062464466568E-003
5.6280000000000001 5.1518529016322447E-003
5.6799999999999997 3.8706633370640541E-003
5.7320000000000002 2.8217135727196876E-003
5.7840000000000007 1.9817796285767830E-003
5.8360000000000003 1.3276375246129659E-003
5.8879999999999999 8.3606328080583568E-004
5.9400000000000004 4.8383291713300426E-004
5.9920000000000009 2.4772245357209625E-004
6.0440000000000005 1.0450791010072858E-004
6.0960000000000001 3.0965306696512431E-005
6.1480000000000006 3.8706633370639547E-006
6.2000000000000002 0.0000000000000000
O O
20
0.59999999999999998 29923.073152218909
0.70000000000000007 4662.8666204588562
0.80000000000000004 849.06541460837946
0.90000000000000002 174.94775568214448
1.0000000000000000 39.499570511324919
1.1000000000000001 9.4630438308109763
1.2000000000000002 2.3294935751104737
1.3000000000000003 0.57058726754144162
1.4000000000000001 0.13466360499250576
1.5000000000000002 2.9654028763683022E-002
1.6000000000000001 5.9001110666872716E-003
1.7000000000000002 1.0271110256853976E-003
1.8000000000000003 1.5149315970664778E-004
1.9000000000000001 1.8332630772941197E-005
2.0000000000000000 1.7625863466525047E-006
2.1000000000000001 1.3037897449239816E-007
2.2000000000000002 7.1851191723432173E-009
2.3000000000000003 2.8567178835137876E-010
2.4000000000000004 7.9349720447872060E-012
2.5000000000000004 1.4910967552225071E-013
U U
50
0.10000000000000001 74348.981230147430
0.20000000000000001 40311.628875481227
0.30000000000000004 22512.215747793147
0.40000000000000002 12931.185562052075
0.50000000000000000 7629.3983056130000
0.59999999999999998 4617.1471175675460
0.70000000000000007 2862.1227331610016
0.80000000000000004 1814.8199558215895
0.90000000000000002 1175.4637167411634
1.0000000000000000 776.63138285251296
1.1000000000000001 522.69735907852555
1.2000000000000002 357.86149706462436
1.3000000000000003 248.89064787141209
1.4000000000000001 175.60252392080037
1.5000000000000002 125.51081146835013
1.6000000000000001 90.752660563379663
1.7000000000000002 66.292603562046978
1.8000000000000003 48.853749739571974
1.9000000000000001 36.270829284225563
2.0000000000000000 27.092149160250134
2.1000000000000001 20.330846347361575
2.2000000000000002 15.307107145388191
2.3000000000000003 11.546652254529212
2.4000000000000004 8.7145303726582952
2.5000000000000004 6.5713781993663156
2.6000000000000001 4.9441671799982290
2.7000000000000002 3.7064118746112378
2.8000000000000003 2.7646343058611356
2.9000000000000004 2.0490135318783476
3.0000000000000004 1.5068662861359490
3.1000000000000001 1.0980623443850352
3.2000000000000002 0.79177413418881881
3.3000000000000003 0.56415350027012756
3.4000000000000004 0.39665649152896415
3.5000000000000004 0.27482281511443302
3.6000000000000001 0.18737497023545538
3.7000000000000002 0.12554244470464804
3.8000000000000003 8.2544745767756542E-002
3.9000000000000004 5.3187278866042048E-002
4.0000000000000000 3.3538623216095062E-002
4.0999999999999996 2.0668142493140005E-002
4.2000000000000002 1.2430141080200409E-002
4.2999999999999998 7.2856566327403139E-003
4.3999999999999995 4.1560332011683883E-003
4.5000000000000000 2.3041281035584126E-003
4.5999999999999996 1.2397986929553748E-003
4.7000000000000002 6.4656516755885957E-004
4.7999999999999998 3.2635453161844339E-004
4.9000000000000004 1.5921458192287997E-004
5.0000000000000000 7.4970692168027886E-005

21
examples/QM/README Normal file
View File

@ -0,0 +1,21 @@
Each of the directories shows how to use LAMMPS in tandem with a
specific quantum code
LATTE = semi-empirical tight-binding code from LANL
https://www.osti.gov/biblio/1526907-los-alamos-transferable-tight-binding-energetics-latte-version
https://github.com/lanl/LATTE
To be added later (as of Aug 2022):
Quantum Espresso (QE) = DFT code for materials modeling
https://www.quantum-espresso.org/
DFT-FE = real-space DFT code from U Michigan
https://github.com/dftfeDevelopers/dftfe
INQ = DFT code from LLNL
https://github.com/LLNL/inq
NWChem = computational chemistry code from PNNL
focus here is on DFT portion of NWChem
https://www.nwchem-sw.org

View File

@ -189,6 +189,9 @@ corresponding doc page in the manual for more info. See the
https://docs.lammps.org/Build_package.html page for more info about
installing and building packages.
The QM directory has examples of how to use LAMMPS in tandem with
several quantum codes.
The TIP4P directory has an example for testing forces computed on a
GPU.

View File

@ -2,15 +2,17 @@ These are examples that work the MDI package in LAMMPS which uses the
MolSSI MDI library for coupling codes together and communicating
between them with MDI messages.
Within the MDI context, one code is the driver and another code is
the engine. The 2 codes can be written in any language; C++ (LAMMPS)
and Python are illustrated here. The 2 codes can each be stand-alone
codes, in which case they can be run on different numbers of processors.
The 2
codes can communicate either via TCP (sockets) or via MPI. For the
TCP case, the driver and engine need to be launched separately,
e.g. in 2 windows on your desktop machine. For the MPI case, a single
mpirun command launches both codes.
There are more examples of using LAMMPS with quantum codes via MDI in
the examples/QM directory.
Within the MDI context, one code is the driver and another code is the
engine. The 2 codes can be written in any language; C++ (LAMMPS) and
Python are illustrated here. The 2 codes can each be stand-alone
codes, in which case they can be run on different numbers of
processors. The 2 codes can communicate either via TCP (sockets) or
via MPI. For the TCP case, the driver and engine need to be launched
separately, e.g. in 2 windows on your desktop machine. For the MPI
case, a single mpirun command launches both codes.
Alternatively the engine code can be a plugin library which the driver
code loads, in which case the driver and engine run on the same
@ -19,17 +21,39 @@ processors.
LAMMPS supports operating in all these MDI modes. It can be an engine
operating either as a stand-alone code or as a plugin. It can also be
a driver and couple to an engine that is either a stand-alone code or
a plugin. Examples for all these use cases are in this directory.
The Run.sh file shows how run in all the modes. Type "sh Run.sh"
to try them all out.
a plugin.
To use LAMMPS as a plugin engine, you must build it as a shared
library. Something like this with make, which also builds the normal
LAMMPS executable lmp_mpi:
Examples for all these use cases, using LAMMPS as a driver and as an
engine are in this directory. The Run.sh file shows how run in all
the modes. Type "sh Run.sh" to try them all out.
cd src
make yes-mdi
make mode=shlib mpi
Examples for using LAMMPS as a driver with the tight-binding code
LATTE are in the examples/QM/LATTE sub-directory. See its README file
for more info.
-------------------------------------------------
Here is how to build LAMMPS with MDI support. Both as an executable
and a shared library. The former is needed to use LAMMPS as an MDI
driver or as an MDI engine in stand-alone mode. The latter is needed
to use LAMMPS as an MDI engine in plugin mode.
Build via regular make:
% cd lammps/src
% make lib-mdi args="-m mpi" # download, install MDI in lib/mdi w/ MPI support
% make yes-mdi # include MDI package in LAMMPS build
% make mode=shlib mpi # creates lmp_mpi and liblammps.so
Build via CMake:
cd lammps
mkdir build; cd build
cmake -D PKG_MDI=yes -D BUILD_SHARED_LIBS=yes ../cmake
make # creates lmp and liblammps.so
Both of these build procedures build LAMMPS both as an executable
(lmp_mpi) and as a shared library (liblammps.so).
-------------------------------------------------
@ -39,9 +63,9 @@ Python/mpi4py are using same the same version of MPI.
You will also need MDI installed in your Python. You cannot use the
LAMMPS build of the MDI library for this, b/c LAMMPS builds MDI as a
static library, not shared, which Python requires.
static library, while Python requires a shared library.
You can install MDI in your Python via conda:
Instead you can install MDI in your Python via conda:
% conda install -c conda-forge pymdi=1.4.1

View File

@ -316,6 +316,9 @@ class UCL_Device {
std::vector<CUstream> _cq;
CUdevice _cu_device;
CUcontext _context;
#if GERYON_NVD_PRIMARY_CONTEXT
CUcontext _old_context;
#endif
};
// Grabs the properties for all devices
@ -391,8 +394,14 @@ int UCL_Device::set_platform(const int pid) {
int UCL_Device::set(int num) {
clear();
_device=_properties[num].device_id;
#if GERYON_NVD_PRIMARY_CONTEXT
CU_SAFE_CALL_NS(cuCtxGetCurrent(&_old_context));
CU_SAFE_CALL_NS(cuDeviceGet(&_cu_device,_device));
CUresult err=cuDevicePrimaryCtxRetain(&_context,_cu_device);
#else
CU_SAFE_CALL_NS(cuDeviceGet(&_cu_device,_device));
CUresult err=cuCtxCreate(&_context,0,_cu_device);
#endif
if (err!=CUDA_SUCCESS) {
#ifndef UCL_NO_EXIT
std::cerr << "UCL Error: Could not access accelerator number " << num
@ -401,13 +410,23 @@ int UCL_Device::set(int num) {
#endif
return UCL_ERROR;
}
#if GERYON_NVD_PRIMARY_CONTEXT
if (_context != _old_context) {
CU_SAFE_CALL_NS(cuCtxSetCurrent(_context));
}
#endif
return UCL_SUCCESS;
}
void UCL_Device::clear() {
if (_device>-1) {
for (int i=1; i<num_queues(); i++) pop_command_queue();
cuCtxDestroy(_context);
#if GERYON_NVD_PRIMARY_CONTEXT
CU_SAFE_CALL_NS(cuCtxSetCurrent(_old_context));
CU_SAFE_CALL_NS(cuDevicePrimaryCtxRelease(_cu_device));
#else
cuCtxDestroy(_context));
#endif
}
_device=-1;
}

View File

@ -7,6 +7,13 @@
#define CUDA_INT_TYPE size_t
// Use the primary context for GPU access to enable compatibility with tools
// like OpenMPI accessing the GPU through the runtime interface.
// Set to 0 to revert to old behavior
#ifndef GERYON_NVD_PRIMARY_CONTEXT
#define GERYON_NVD_PRIMARY_CONTEXT 1
#endif
#ifdef MPI_GERYON
#include "mpi.h"
#define NVD_GERYON_EXIT do { \

View File

@ -27,19 +27,17 @@ specify -m and optionally -e, order does not matter
Examples:
make lib-poems args="-m serial" # build POEMS lib with same settings as in the serial Makefile in src
make lib-colvars args="-m mpi" # build COLVARS lib with same settings as in the mpi Makefile in src
make lib-meam args="-m ifort" # build MEAM lib with custom Makefile.ifort (using Intel Fortran)
make lib-mdi args="-m mpi" # build MDI lib with same settings as in the mpi Makefile in src
"""
# settings
version = "1.4.1"
version = "1.4.10"
url = "https://github.com/MolSSI-MDI/MDI_Library/archive/v%s.tar.gz" % version
# known checksums for different MDI versions. used to validate the download.
checksums = { \
'1.4.1' : 'f9505fccd4c79301a619f6452dad4ad9', \
'1.4.10' : '1c203b7fd462d9934834f643f09f3c06', \
}
# print error message or help

View File

@ -300,7 +300,7 @@ class ElemwiseModels(torch.nn.Module):
self.subnets = subnets
self.n_types = n_types
def forward(self, descriptors, elems):
def forward(self, descriptors, elems, dtype=torch.float64):
"""
Feeds descriptors to network model after adding zeros into
descriptor columns relating to different atom types
@ -319,8 +319,12 @@ class ElemwiseModels(torch.nn.Module):
Per atom attribute computed by the network model
"""
per_atom_attributes = torch.zeros(elems.size[0])
self.dtype=dtype
self.to(self.dtype)
per_atom_attributes = torch.zeros(elems.size(dim=0), dtype=self.dtype)
given_elems, elem_indices = torch.unique(elems, return_inverse=True)
for i, elem in enumerate(given_elems):
per_atom_attribute[elem_indices == i] = self.subnets[elem](descriptors[elem_indices == i])
self.subnets[elem].to(self.dtype)
per_atom_attributes[elem_indices == i] = self.subnets[elem](descriptors[elem_indices == i]).flatten()
return per_atom_attributes

View File

@ -15,6 +15,10 @@
#include "atom.h"
#include "citeme.h"
#include "error.h"
#include "force.h"
#include "pair.h"
#include "pair_hybrid.h"
#include <cmath>
@ -87,6 +91,42 @@ AtomVecDielectric::AtomVecDielectric(LAMMPS *_lmp) : AtomVec(_lmp)
bond_per_atom = angle_per_atom = dihedral_per_atom = improper_per_atom = 0;
}
/* ---------------------------------------------------------------------- */
void AtomVecDielectric::init()
{
AtomVec::init();
// since atom style dielectric modifies the charge q, it will produce incorrect results
// with pair styles using coulomb without dielectric support.
std::string pair_style(force->pair_style);
if ((pair_style != "none") && (pair_style != "zero") && !utils::strmatch(force->pair_style,"/dielectric")) {
bool mismatch = false;
if (utils::strmatch(force->pair_style,"^reaxff")) mismatch = true;
if (utils::strmatch(force->pair_style,"^comb")) mismatch = true;
if (utils::strmatch(force->pair_style,"coul")) mismatch = true;
if (utils::strmatch(force->pair_style,"tip4p")) mismatch = true;
if (utils::strmatch(force->pair_style,"dipole")) mismatch = true;
if (utils::strmatch(force->pair_style,"^hybrid")) {
auto hybrid = dynamic_cast<PairHybrid *>(force->pair);
if (hybrid) {
for (int i = 0; i < hybrid->nstyles; i++) {
if (utils::strmatch(hybrid->keywords[i],"^reaxff")) mismatch = true;
if (utils::strmatch(hybrid->keywords[i],"^comb")) mismatch = true;
if (utils::strmatch(hybrid->keywords[i],"coul")) mismatch = true;
if (utils::strmatch(hybrid->keywords[i],"tip4p")) mismatch = true;
if (utils::strmatch(hybrid->keywords[i],"dipole")) mismatch = true;
}
}
}
if (mismatch)
error->all(FLERR, "Pair style {} is not compatible with atom style {}",
pair_style, atom->get_style());
}
}
/* ----------------------------------------------------------------------
set local copies of all grow ptrs used by this class, except defaults
needed in replicate when 2 atom classes exist and it calls pack_restart()

View File

@ -31,6 +31,7 @@ class AtomVecDielectric : public AtomVec {
public:
AtomVecDielectric(class LAMMPS *);
void init() override;
void grow_pointers() override;
void create_atom_post(int) override;
void data_atom_post(int) override;

View File

@ -38,6 +38,7 @@ static constexpr double EPSILON = 1.0e-6;
PairCoulCutDielectric::PairCoulCutDielectric(LAMMPS *_lmp) : PairCoulCut(_lmp), efield(nullptr)
{
nmax = 0;
no_virial_fdotr_compute = 1;
}
/* ---------------------------------------------------------------------- */

View File

@ -41,6 +41,7 @@ PairCoulLongDielectric::PairCoulLongDielectric(LAMMPS *_lmp) :
{
nmax = 0;
single_enable = 0;
no_virial_fdotr_compute = 1;
}
/* ---------------------------------------------------------------------- */

View File

@ -40,6 +40,7 @@ PairLJCutCoulCutDielectric::PairLJCutCoulCutDielectric(LAMMPS *_lmp) : PairLJCut
efield = nullptr;
epot = nullptr;
nmax = 0;
no_virial_fdotr_compute = 1;
}
/* ---------------------------------------------------------------------- */
@ -93,15 +94,16 @@ void PairLJCutCoulCutDielectric::compute(int eflag, int vflag)
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
qtmp = q[i];
etmp = eps[i];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
etmp = eps[i];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
// self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al
double curvature_threshold = sqrt(area[i]);
if (curvature[i] < curvature_threshold) {
double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i];

View File

@ -40,6 +40,7 @@ PairLJCutCoulDebyeDielectric::PairLJCutCoulDebyeDielectric(LAMMPS *_lmp) : PairL
efield = nullptr;
epot = nullptr;
nmax = 0;
no_virial_fdotr_compute = 1;
}
/* ---------------------------------------------------------------------- */

View File

@ -45,6 +45,7 @@ PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *_lmp) : PairLJC
efield = nullptr;
epot = nullptr;
nmax = 0;
no_virial_fdotr_compute = 1;
}
/* ---------------------------------------------------------------------- */

View File

@ -47,6 +47,7 @@ PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *_lmp) : PairLJCut
nmax = 0;
ftmp = nullptr;
efield = nullptr;
no_virial_fdotr_compute = 1;
}
/* ---------------------------------------------------------------------- */

View File

@ -45,6 +45,7 @@ PairLJLongCoulLongDielectric::PairLJLongCoulLongDielectric(LAMMPS *_lmp) : PairL
efield = nullptr;
epot = nullptr;
nmax = 0;
no_virial_fdotr_compute = 1;
}
/* ----------------------------------------------------------------------

View File

@ -33,8 +33,7 @@ FixMDIQM::FixMDIQM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
{
// check requirements for LAMMPS to work with MDI as an engine
if (atom->tag_enable == 0)
error->all(FLERR, "Cannot use MDI engine without atom IDs");
if (atom->tag_enable == 0) error->all(FLERR, "Cannot use MDI engine without atom IDs");
if (atom->natoms && atom->tag_consecutive() == 0)
error->all(FLERR, "MDI engine requires consecutive atom IDs");
@ -57,15 +56,21 @@ FixMDIQM::FixMDIQM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
while (iarg < narg) {
if (strcmp(arg[iarg], "virial") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix mdi/qm command");
if (strcmp(arg[iarg+1],"yes") == 0) virialflag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) virialflag = 0;
else error->all(FLERR,"Illegal fix mdi/qm command");
if (strcmp(arg[iarg + 1], "yes") == 0)
virialflag = 1;
else if (strcmp(arg[iarg + 1], "no") == 0)
virialflag = 0;
else
error->all(FLERR, "Illegal fix mdi/qm command");
iarg += 2;
} else if (strcmp(arg[iarg], "add") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix mdi/qm command");
if (strcmp(arg[iarg+1],"yes") == 0) addflag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) addflag = 0;
else error->all(FLERR,"Illegal fix mdi/qm command");
if (strcmp(arg[iarg + 1], "yes") == 0)
addflag = 1;
else if (strcmp(arg[iarg + 1], "no") == 0)
addflag = 0;
else
error->all(FLERR, "Illegal fix mdi/qm command");
iarg += 2;
} else if (strcmp(arg[iarg], "every") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix mdi/qm command");
@ -74,9 +79,12 @@ FixMDIQM::FixMDIQM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
iarg += 2;
} else if (strcmp(arg[iarg], "connect") == 0) {
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix mdi/qm command");
if (strcmp(arg[iarg+1],"yes") == 0) connectflag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) connectflag = 0;
else error->all(FLERR,"Illegal fix mdi/qm command");
if (strcmp(arg[iarg + 1], "yes") == 0)
connectflag = 1;
else if (strcmp(arg[iarg + 1], "no") == 0)
connectflag = 0;
else
error->all(FLERR, "Illegal fix mdi/qm command");
iarg += 2;
} else if (strcmp(arg[iarg], "elements") == 0) {
int ntypes = atom->ntypes;
@ -89,7 +97,8 @@ FixMDIQM::FixMDIQM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
error->all(FLERR, "Illegal fix mdi/qm command");
}
iarg += ntypes + 1;
} else error->all(FLERR,"Illegal fix mdi/qm command");
} else
error->all(FLERR, "Illegal fix mdi/qm command");
}
// fix output settings are based on optional keywords
@ -217,8 +226,7 @@ void FixMDIQM::init()
plugin = 1;
int method;
MDI_Get_method(&method, mdicomm);
if (method != MDI_PLUGIN)
error->all(FLERR, "MDI internal error for plugin engine");
if (method != MDI_PLUGIN) error->all(FLERR, "MDI internal error for plugin engine");
}
// connection should have been already made by "mdi connect" command
@ -237,6 +245,7 @@ void FixMDIQM::init()
}
// send natoms, atom types or elements, and simulation box to engine
// confirm engine count of NATOMS is correct
// this will trigger setup of a new system
// subsequent calls in post_force() will be for same system until new init()
@ -245,36 +254,41 @@ void FixMDIQM::init()
int natoms_exists;
int ierr = MDI_Check_command_exists("@DEFAULT", ">NATOMS", mdicomm, &natoms_exists);
if (ierr) error->all(FLERR, "MDI: >NATOMS command check");
if ( natoms_exists ) {
MPI_Bcast(&natoms_exists, 1, MPI_INT, 0, world);
if (natoms_exists) {
ierr = MDI_Send_command(">NATOMS", mdicomm);
if (ierr) error->all(FLERR, "MDI: >NATOMS command");
int n = static_cast<int>(atom->natoms);
ierr = MDI_Send(&n, 1, MDI_INT, mdicomm);
if (ierr) error->all(FLERR, "MDI: >NATOMS data");
} else { // confirm that the engine's NATOMS is correct
} else {
ierr = MDI_Send_command("<NATOMS", mdicomm);
if (ierr) error->all(FLERR, "MDI: <NATOMS command");
int n;
ierr = MDI_Recv(&n, 1, MDI_INT, mdicomm);
if (ierr) error->all(FLERR, "MDI: <NATOMS data");
if ( n != atom->natoms ) error->all(FLERR, "MDI: Engine has the wrong number of atoms, and does not support the >NATOMS command.");
MPI_Bcast(&n, 1, MPI_INT, 0, world);
if (n != atom->natoms)
error->all(FLERR, "MDI: Engine has wrong atom count and does not support >NATOMS command");
}
int elements_exists;
int types_exists;
ierr = MDI_Check_command_exists("@DEFAULT", ">ELEMENTS", mdicomm, &elements_exists);
if (ierr) error->all(FLERR, "MDI: >ELEMENTS command check");
MPI_Bcast(&elements_exists, 1, MPI_INT, 0, world);
ierr = MDI_Check_command_exists("@DEFAULT", ">TYPES", mdicomm, &types_exists);
if (ierr) error->all(FLERR, "MDI: >TYPES command check");
if ( elements && elements_exists ) {
MPI_Bcast(&types_exists, 1, MPI_INT, 0, world);
if (elements && elements_exists)
send_elements();
} else if ( types_exists ) {
else if (types_exists)
send_types();
}
send_box();
}
@ -301,8 +315,7 @@ void FixMDIQM::post_force(int vflag)
// if simulation box dynamically changes, send current box to MDI engine
if (domain->box_change_size || domain->box_change_shape)
send_box();
if (domain->box_change_size || domain->box_change_shape) send_box();
// gather all coords, ordered by atomID
@ -358,7 +371,6 @@ void FixMDIQM::post_force(int vflag)
fqm[i][2] = buf3[3 * index + 2] * mdi2lmp_force;
}
// optionally add forces to owned atoms
// use atomID of local atoms to index into ordered buf3
@ -372,7 +384,8 @@ void FixMDIQM::post_force(int vflag)
}
}
// optionally request stress tensor from MDI engine, convert to virial
// optionally request stress tensor from MDI engine, convert to 6-value virial
// MDI defines virial tensor as intensive (divided by volume), LAMMPS does not
// qm_virial = fix output for global QM virial
if (virialflag) {
@ -402,8 +415,7 @@ void FixMDIQM::post_force(int vflag)
volume = domain->xprd * domain->yprd;
else if (domain->dimension == 3)
volume = domain->xprd * domain->yprd * domain->zprd;
for (int i = 0; i < 6; i++)
virial[i] = qm_virial_symmetric[i]*volume/nprocs;
for (int i = 0; i < 6; i++) virial[i] = qm_virial_symmetric[i] * volume / nprocs;
}
}
@ -447,8 +459,7 @@ void FixMDIQM::reallocate()
if (atom->natoms > maxbuf) {
bigint nsize = atom->natoms * 3;
if (nsize > MAXSMALLINT)
error->all(FLERR, "Natoms too large to use with fix mdi/qm");
if (nsize > MAXSMALLINT) error->all(FLERR, "Natoms too large to use with fix mdi/qm");
maxbuf = static_cast<int>(atom->natoms);
memory->destroy(ibuf1);
@ -530,6 +541,8 @@ void FixMDIQM::send_box()
int celldispl_exists;
int ierr = MDI_Check_command_exists("@DEFAULT", ">NATOMS", mdicomm, &celldispl_exists);
if (ierr) error->all(FLERR, "MDI: >CELL_DISPL command check");
MPI_Bcast(&celldispl_exists, 1, MPI_INT, 0, world);
if (celldispl_exists) {
ierr = MDI_Send_command(">CELL_DISPL", mdicomm);
if (ierr) error->all(FLERR, "MDI: >CELL_DISPL command");
@ -608,18 +621,17 @@ void FixMDIQM::unit_conversions()
mdi2lmp_force = angstrom_to_bohr / ev_to_hartree;
}
// pressure or stress units = force/area = energy/volume
// stress units = force/area = energy/volume
mdi2lmp_pressure = 1.0;
lmp2mdi_pressure = 1.0;
if (lmpunits == REAL) {
lmp2mdi_pressure = (kelvin_to_hartree / force->boltz) /
(angstrom_to_bohr * angstrom_to_bohr * angstrom_to_bohr) / force->nktv2p;
(angstrom_to_bohr * angstrom_to_bohr * angstrom_to_bohr);
mdi2lmp_pressure = 1.0 / lmp2mdi_pressure;
} else if (lmpunits == METAL) {
lmp2mdi_pressure =
ev_to_hartree / (angstrom_to_bohr * angstrom_to_bohr * angstrom_to_bohr) / force->nktv2p;
lmp2mdi_pressure = ev_to_hartree / (angstrom_to_bohr * angstrom_to_bohr * angstrom_to_bohr);
mdi2lmp_pressure = 1.0 / lmp2mdi_pressure;
}
}

View File

@ -23,12 +23,8 @@
#define LAMMPS_LIB_MPI 1
#include "library.h"
#include "mdi_engine.h"
#include <cstring>
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
/** Initialize an instance of LAMMPS as an MDI plugin
@ -52,15 +48,16 @@ command-line argument, which must be provided by the MDI driver.
* \param class_obj pointer to an instance of an mdi/engine fix cast to ``void *``.
* \return 0 on no error. */
int MDI_Plugin_init_lammps()
int MDI_Plugin_init_lammps(void *plugin_state)
{
// initialize MDI
int mdi_argc;
char **mdi_argv;
if (MDI_Set_plugin_state(plugin_state)) MPI_Abort(MPI_COMM_WORLD, 1);
if (MDI_Plugin_get_argc(&mdi_argc)) MPI_Abort(MPI_COMM_WORLD, 1);
if (MDI_Plugin_get_argv(&mdi_argv)) MPI_Abort(MPI_COMM_WORLD, 1);
if (MDI_Init(&mdi_argc, &mdi_argv)) MPI_Abort(MPI_COMM_WORLD, 1);
// get the MPI intra-communicator for this code
@ -90,14 +87,23 @@ int MDI_Plugin_init_lammps()
if (!found_filename) MPI_Abort(MPI_COMM_WORLD, 1);
// create and run a LAMMPS instance
// lammps_open() expects a first arg (not used) which is executable name
// same as if called from main.cpp
// need to add an initial pseudo arg to mdi_argc & mdi_argv
// b/c lammps_open() expects first arg to be an executable name
// same as if it were called from main.cpp
int mdi_argc_extra = mdi_argc + 1;
char **mdi_argv_extra = new char *[mdi_argc_extra];
mdi_argv_extra[0] = (char *) "MDI_plugin_engine";
for (int i = 0; i < mdi_argc; i++) mdi_argv_extra[i + 1] = mdi_argv[i];
void *lmp = nullptr;
if (lammps_config_has_mpi_support() > 0)
lmp = lammps_open(mdi_argc + 1, &mdi_argv[-1], mpi_world_comm, nullptr);
lmp = lammps_open(mdi_argc_extra, mdi_argv_extra, mpi_world_comm, nullptr);
else
lmp = lammps_open_no_mpi(mdi_argc + 1, &mdi_argv[-1], nullptr);
lmp = lammps_open_no_mpi(mdi_argc_extra, mdi_argv_extra, nullptr);
delete[] mdi_argv_extra;
// process the specified input script
// must contain "mdi engine" command
@ -110,25 +116,3 @@ int MDI_Plugin_init_lammps()
return 0;
}
/* ---------------------------------------------------------------------- */
/** Execute an MDI command
*
\verbatim embed:rst
This function is called by the MolSSI Driver Interface Library (MDI)
when LAMMPS is run as a plugin, and should not otherwise be used.
The function executes a single command from an external MDI driver.
\endverbatim
* \param command string buffer corresponding to the command to be executed
* \param comm MDI communicator that can be used to communicated with the driver.
* \param class_obj pointer to an instance of an mdi/engine fix cast to ``void *``.
* \return 0 on no error, 1 on error. */
int lammps_execute_mdi_command(const char *command, MDI_Comm comm, void *class_obj)
{
auto mdi_engine = (MDIEngine *) class_obj;
return mdi_engine->execute_command(command, comm);
}

View File

@ -14,13 +14,12 @@
#ifndef LAMMPS_LIBRARY_MDI_H
#define LAMMPS_LIBRARY_MDI_H
/* C style library calls to LAMMPS when a LAMMPS shared library is
* used as a plugin through MolSSI Driver Interface (MDI). */
/* C style library call to LAMMPS when a LAMMPS shared library is
* used as a plugin through MolSSI Driver Interface (MDI) */
#include <mdi.h>
extern "C" {
int MDI_Plugin_init_lammps();
int lammps_execute_mdi_command(const char *, MDI_Comm, void *);
int MDI_Plugin_init_lammps(void *plugin_state);
}
#endif

View File

@ -53,7 +53,8 @@ void MDICommand::command(int narg, char **arg)
MDI_Accept_communicator(&mdicomm);
if (mdicomm == MDI_COMM_NULL)
error->all(FLERR, "MDI unable to connect to stand-alone engine");
} else error->all(FLERR, "Cannot use mdi connect with plugin engine");
} else
error->all(FLERR, "Cannot use mdi connect with plugin engine");
int nbytes = sizeof(MDI_Comm);
char *ptrcomm = (char *) memory->smalloc(nbytes, "mdi:mdicomm");
@ -63,8 +64,7 @@ void MDICommand::command(int narg, char **arg)
} else if (strcmp(arg[0], "exit") == 0) {
if (lmp->mdicomm == nullptr)
error->all(FLERR,"MDI cannot send exit to unconnected engine");
if (lmp->mdicomm == nullptr) error->all(FLERR, "MDI cannot send exit to unconnected engine");
MDI_Comm mdicomm;
int nbytes = sizeof(MDI_Comm);
@ -77,5 +77,6 @@ void MDICommand::command(int narg, char **arg)
memory->sfree(ptrcomm);
lmp->mdicomm = nullptr;
} else error->all(FLERR, "Illegal mdi command");
} else
error->all(FLERR, "Illegal mdi command");
}

View File

@ -91,7 +91,8 @@ MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char ** arg) : Pointers(_lmp)
error->all(FLERR, "Illegal mdi engine command");
}
iarg += ntypes + 1;
} else error->all(FLERR,"Illegal mdi engine command");
} else
error->all(FLERR, "Illegal mdi engine command");
}
// error check an MDI element does not map to multiple atom types
@ -184,10 +185,10 @@ MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char ** arg) : Pointers(_lmp)
mdi_commands();
// register the execute_command function with MDI
// only used when engine runs in plugin mode
// register a callback function with MDI used when engine runs in plugin mode
// execute_command_plugin_wrapper() must be a static method
MDI_Set_execute_command_func(lammps_execute_mdi_command, this);
MDI_Set_execute_command_func(execute_command_plugin_wrapper, this);
// one-time operation to establish a connection with the driver
@ -291,11 +292,22 @@ void MDIEngine::engine_node(const char *node)
node_match = true;
}
/* ----------------------------------------------------------------------
wrapper function on execute_command()
invoked as callback by MDI when engine operates in plugin mode
this is a static method in mdi_engine.h
---------------------------------------------------------------------- */
int MDIEngine::execute_command_plugin_wrapper(const char *command, MDI_Comm comm, void *class_obj)
{
auto mdi_engine = (MDIEngine *) class_obj;
return mdi_engine->execute_command(command, comm);
}
/* ----------------------------------------------------------------------
process a single driver command
called by engine_node() in loop
also called by MDI itself via lib::lammps_execute_mdi_command()
when LAMMPS is running as a plugin
called by engine_node() in loop when engine runs as stand-alone code
called by execute_command_plugin_wrapper() when engine runs as plugin lib
---------------------------------------------------------------------- */
int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
@ -334,8 +346,7 @@ int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
receive_coords();
} else if (strcmp(command, ">ELEMENTS") == 0) {
if (!elements)
error->all(FLERR,"MDI engine command did not define element list");
if (!elements) error->all(FLERR, "MDI engine command did not define element list");
receive_elements();
} else if (strcmp(command, ">FORCES") == 0) {
@ -1148,9 +1159,16 @@ void MDIEngine::receive_cell()
for (int icell = 0; icell < 9; icell++) sys_cell[icell] *= mdi2lmp_length;
// error check that edge vectors match LAMMPS triclinic requirement
// 3,7,6 = xy, yz, xz tilt factors
if (sys_cell[1] != 0.0 || sys_cell[2] != 0.0 || sys_cell[5] != 0.0)
error->all(FLERR, "MDI: Received cell edges are not LAMMPS compatible");
error->all(FLERR, "MDI: Received cell edges are not an upper triangular matrix");
if (sys_cell[3] != 0.0 || sys_cell[7] != 0.0 || sys_cell[6] != 0.0)
if (!domain->triclinic)
error->all(FLERR,
"MDI: Received cell edges are for a triclinic box, "
"but LAMMPS is using an orthogonal box");
}
/* ----------------------------------------------------------------------
@ -1227,8 +1245,7 @@ void MDIEngine::receive_elements()
break;
}
}
if (itype > ntypes)
error->all(FLERR,"MDI element not found in element list");
if (itype > ntypes) error->all(FLERR, "MDI element not found in element list");
}
}
@ -1493,6 +1510,9 @@ void MDIEngine::send_pe()
/* ----------------------------------------------------------------------
<STRESS command
send 9-component stress tensor (no kinetic energy term)
should be intensive quantity (divided by volume in pressure compute)
MDI stress tensor units are energy/volume,
so conversion factor includes nktv2p to convert pressure back to virial
---------------------------------------------------------------------- */
void MDIEngine::send_stress()
@ -1837,6 +1857,8 @@ void MDIEngine::unit_conversions()
}
// pressure or stress units = force/area = energy/volume
// MDI energy/volume = Hartree/Bohr^3,
// so need to remove LAMMPS nktv2p from pressure
mdi2lmp_pressure = 1.0;
lmp2mdi_pressure = 1.0;

View File

@ -22,8 +22,6 @@ namespace LAMMPS_NS {
class MDIEngine : protected Pointers {
public:
MDIEngine(class LAMMPS *, int, char **);
int execute_command(const char *command, MDI_Comm mdicomm);
void engine_node(const char *node);
private:
@ -87,9 +85,13 @@ class MDIEngine : protected Pointers {
class Irregular *irregular; // irregular comm if new COORDS
// are highly displaced
// static method for MDI to callback to, when LAMMPS used as plugin engine
static int execute_command_plugin_wrapper(const char *, MDI_Comm, void *);
// class methods
void mdi_engine(int, char **);
int execute_command(const char *, MDI_Comm);
void mdi_commands();
void mdi_md();

View File

@ -72,18 +72,23 @@ MDIPlugin::MDIPlugin(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp)
// error checks
if (!mdi_arg || !infile_arg || !lammps_command)
error->all(FLERR, "MDI plugin must specify mdi, infile, command keywords");
if (!mdi_arg || !lammps_command)
error->all(FLERR, "MDI plugin must specify mdi and command keywords");
// build full plugin_args string for args to plugin library
int n = strlen(mdi_arg) + strlen(infile_arg) + strlen(extra_arg) + 16;
int n = strlen(mdi_arg) + 16;
if (infile_arg) n += strlen(infile_arg);
if (extra_arg) n += strlen(extra_arg);
auto plugin_args = new char[n];
plugin_args[0] = 0;
strcat(plugin_args, "-mdi \"");
strcat(plugin_args, mdi_arg);
strcat(plugin_args, "\" -in ");
strcat(plugin_args, "\"");
if (infile_arg) {
strcat(plugin_args, " -in ");
strcat(plugin_args, infile_arg);
}
if (extra_arg) {
strcat(plugin_args, " ");
strcat(plugin_args, extra_arg);
@ -91,7 +96,8 @@ MDIPlugin::MDIPlugin(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp)
// launch the MDI plugin library
// path for lib was specified in -mdi command-line arg when LAMMPS started
// this calls back to plugin_wrapper, which must issue MDI EXIT at end
// this calls back to plugin_wrapper(), which issues MDI EXIT at end & returns
// plugin_wrapper() must be a static method
MDI_Launch_plugin(plugin_name, plugin_args, &world, plugin_wrapper, (void *) this);
@ -99,8 +105,9 @@ MDIPlugin::MDIPlugin(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp)
}
/* ----------------------------------------------------------------------
callback function from MDI_Launch_plugin()
this function wraps entire interaction of LAMMPS driver with the plugin
wrapper on entire interaction of LAMMPS as a driver with the plugin engine
invoked as a callback by MDI once plugin library engine is launched
this is a static method in mdi_plugin.h
---------------------------------------------------------------------- */
int MDIPlugin::plugin_wrapper(void * /*pmpicomm*/, MDI_Comm mdicomm, void *vptr)

View File

@ -26,6 +26,9 @@ class MDIPlugin : protected Pointers {
private:
char *lammps_command;
// static method for MDI to callback to
// when LAMMPS is a driver which launches a plugin engine
static int plugin_wrapper(void *, MDI_Comm, void *);
};

View File

@ -26,6 +26,7 @@
#include "pair_mliap.h"
#include "python_compat.h"
#include "utils.h"
#include "comm.h"
#include <Python.h>
@ -104,7 +105,7 @@ void MLIAPModelPython::read_coeffs(char *fname)
if (loaded) {
this->connect_param_counts();
} else {
utils::logmesg(lmp, "Loading python model deferred.\n");
if (comm->me == 0) utils::logmesg(lmp, "Loading python model deferred.\n");
}
}

View File

@ -23,6 +23,7 @@
#include "math_const.h"
#include "memory.h"
#include "neigh_list.h"
#include "suffix.h"
#include <cmath>
@ -37,6 +38,7 @@ static constexpr double EPSILON = 1.0e-6;
PairLJCutCoulCutDielectricOMP::PairLJCutCoulCutDielectricOMP(LAMMPS *_lmp) :
PairLJCutCoulCutDielectric(_lmp), ThrOMP(_lmp, THR_PAIR)
{
suffix_flag |= Suffix::OMP;
}
/* ---------------------------------------------------------------------- */
@ -99,7 +101,7 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
{
int i, j, ii, jj, jnum, itype, jtype;
double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul;
double fpair_i, fpair_j;
double fpair_i;
double rsq, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj;
double efield_i, epot_i;
int *ilist, *jlist, *numneigh, **firstneigh;
@ -130,10 +132,10 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
i = ilist[ii];
qtmp = q[i];
etmp = eps[i];
xtmp = x[i].x;
ytmp = x[i].y;
ztmp = x[i].z;
etmp = eps[i];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
@ -141,6 +143,7 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
extmp = eytmp = eztmp = 0.0;
// self term Eq. (55) for I_{ii} and Eq. (52) and in Barros et al
double curvature_threshold = sqrt(area[i]);
if (curvature[i] < curvature_threshold) {
double sf = curvature[i] / (4.0 * MY_PIS * curvature_threshold) * area[i] * q[i];
@ -151,7 +154,7 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
efield[i][0] = efield[i][1] = efield[i][2] = 0;
}
epot[i] = 0;
epot[i] = 0.0;
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
@ -167,9 +170,10 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
if (rsq < cutsq[itype][jtype]) {
r2inv = 1.0 / rsq;
const double rinv = sqrt(r2inv);
if (rsq < cut_coulsq[itype][jtype] && rsq > EPSILON) {
efield_i = qqrd2e * q[j] * sqrt(r2inv);
efield_i = qqrd2e * q[j] * rinv;
forcecoul = qtmp * efield_i;
epot_i = efield_i;
} else
@ -182,7 +186,6 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
forcelj = 0.0;
fpair_i = (factor_coul * etmp * forcecoul + factor_lj * forcelj) * r2inv;
fxtmp += delx * fpair_i;
fytmp += dely * fpair_i;
fztmp += delz * fpair_i;
@ -193,29 +196,18 @@ void PairLJCutCoulCutDielectricOMP::eval(int iifrom, int iito, ThrData *const th
eztmp += delz * efield_i;
epot[i] += epot_i;
if (NEWTON_PAIR || j >= nlocal) {
fpair_j = (factor_coul * eps[j] * forcecoul + factor_lj * forcelj) * r2inv;
f[j].x -= delx * fpair_j;
f[j].y -= dely * fpair_j;
f[j].z -= delz * fpair_j;
}
if (EFLAG) {
if (rsq < cut_coulsq[itype][jtype]) {
ecoul = factor_coul * qqrd2e * qtmp * q[j] * (etmp + eps[j]) * sqrt(r2inv);
ecoul = factor_coul * qqrd2e * qtmp * q[j] * 0.5 * (etmp + eps[j]) * rinv;
} else
ecoul = 0.0;
ecoul *= 0.5;
if (rsq < cut_ljsq[itype][jtype]) {
evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype];
evdwl *= factor_lj;
} else
evdwl = 0.0;
}
if (EVFLAG)
ev_tally_thr(this, i, j, nlocal, NEWTON_PAIR, evdwl, ecoul, fpair_i, delx, dely, delz,
thr);
if (EVFLAG) ev_tally_full_thr(this, i, evdwl, ecoul, fpair_i, delx, dely, delz, thr);
}
}
f[i].x += fxtmp;

View File

@ -23,6 +23,7 @@
#include "math_const.h"
#include "memory.h"
#include "neigh_list.h"
#include "suffix.h"
#include <cmath>
@ -37,6 +38,7 @@ static constexpr double EPSILON = 1.0e-6;
PairLJCutCoulDebyeDielectricOMP::PairLJCutCoulDebyeDielectricOMP(LAMMPS *_lmp) :
PairLJCutCoulDebyeDielectric(_lmp), ThrOMP(_lmp, THR_PAIR)
{
suffix_flag |= Suffix::OMP;
}
/* ---------------------------------------------------------------------- */
@ -99,7 +101,7 @@ void PairLJCutCoulDebyeDielectricOMP::eval(int iifrom, int iito, ThrData *const
{
int i, j, ii, jj, jnum, itype, jtype;
double qtmp, etmp, xtmp, ytmp, ztmp, delx, dely, delz, evdwl, ecoul;
double fpair_i, fpair_j;
double fpair_i;
double rsq, r2inv, r6inv, forcecoul, forcelj, factor_coul, factor_lj, efield_i, epot_i;
double r, rinv, screening;
int *ilist, *jlist, *numneigh, **firstneigh;
@ -185,7 +187,6 @@ void PairLJCutCoulDebyeDielectricOMP::eval(int iifrom, int iito, ThrData *const
forcelj = 0.0;
fpair_i = (factor_coul * etmp * forcecoul + factor_lj * forcelj) * r2inv;
fxtmp += delx * fpair_i;
fytmp += dely * fpair_i;
fztmp += delz * fpair_i;
@ -196,19 +197,11 @@ void PairLJCutCoulDebyeDielectricOMP::eval(int iifrom, int iito, ThrData *const
eztmp += delz * efield_i;
epot[i] += epot_i;
if (NEWTON_PAIR || j >= nlocal) {
fpair_j = (factor_coul * eps[j] * forcecoul + factor_lj * forcelj) * r2inv;
f[j].x -= delx * fpair_j;
f[j].y -= dely * fpair_j;
f[j].z -= delz * fpair_j;
}
if (EFLAG) {
if (rsq < cut_coulsq[itype][jtype]) {
ecoul = factor_coul * qqrd2e * qtmp * q[j] * (etmp + eps[j]) * rinv * screening;
ecoul = factor_coul * qqrd2e * qtmp * q[j] * 0.5 * (etmp + eps[j]) * rinv * screening;
} else
ecoul = 0.0;
ecoul *= 0.5;
if (rsq < cut_ljsq[itype][jtype]) {
evdwl = r6inv * (lj3[itype][jtype] * r6inv - lj4[itype][jtype]) - offset[itype][jtype];
evdwl *= factor_lj;
@ -216,9 +209,7 @@ void PairLJCutCoulDebyeDielectricOMP::eval(int iifrom, int iito, ThrData *const
evdwl = 0.0;
}
if (EVFLAG)
ev_tally_thr(this, i, j, nlocal, NEWTON_PAIR, evdwl, ecoul, fpair_i, delx, dely, delz,
thr);
if (EVFLAG) ev_tally_full_thr(this, i, evdwl, ecoul, fpair_i, delx, dely, delz, thr);
}
}
f[i].x += fxtmp;

View File

@ -24,6 +24,7 @@
#include "math_const.h"
#include "memory.h"
#include "neigh_list.h"
#include "suffix.h"
#include <cmath>
@ -39,6 +40,7 @@ static constexpr double EPSILON = 1.0e-6;
PairLJCutCoulLongDielectricOMP::PairLJCutCoulLongDielectricOMP(LAMMPS *_lmp) :
PairLJCutCoulLongDielectric(_lmp), ThrOMP(_lmp, THR_PAIR)
{
suffix_flag |= Suffix::OMP;
}
/* ---------------------------------------------------------------------- */
@ -229,10 +231,10 @@ void PairLJCutCoulLongDielectricOMP::eval(int iifrom, int iito, ThrData *const t
if (EFLAG) {
if (rsq < cut_coulsq) {
if (!ncoultablebits || rsq <= tabinnersq)
ecoul = prefactor * (etmp + eps[j]) * erfc;
ecoul = prefactor * 0.5 * (etmp + eps[j]) * erfc;
else {
table = etable[itable] + fraction * detable[itable];
ecoul = qtmp * q[j] * (etmp + eps[j]) * table;
ecoul = qtmp * q[j] * 0.5 * (etmp + eps[j]) * table;
}
if (factor_coul < 1.0) ecoul -= (1.0 - factor_coul) * prefactor;
} else

View File

@ -597,9 +597,8 @@ void ThrOMP::ev_tally_full_thr(Pair * const pair, const int i, const double evdw
const double ecoul, const double fpair, const double delx,
const double dely, const double delz, ThrData * const thr)
{
if (pair->eflag_either)
e_tally_thr(pair, i, i+1, i, 0, evdwl, ecoul, thr);
e_tally_thr(pair, i, /*j*/ i+1, /*nlocal*/ i+1, /*newton_pair*/ 0, evdwl, ecoul, thr);
if (pair->vflag_either) {
double v[6];
@ -610,7 +609,7 @@ void ThrOMP::ev_tally_full_thr(Pair * const pair, const int i, const double evdw
v[4] = delx*delz*fpair;
v[5] = dely*delz*fpair;
v_tally_thr(pair, i, i+1, i, 0, v, thr);
v_tally_thr(pair, i, /*j*/ i+1, /*nlocal*/ i+1, /*newton_pair*/ 0, v, thr);
}
if (pair->num_tally_compute > 0) {

View File

@ -1729,7 +1729,9 @@ void AtomVec::data_atom(double *coord, imageint imagetmp, const std::vector<std:
// error checks applicable to all styles
if (tag[nlocal] <= 0) error->one(FLERR, "Invalid atom ID in Atoms section of data file");
if (tag[nlocal] <= 0)
error->one(FLERR, "Invalid atom ID {} in line {} of Atoms section of data file",
tag[nlocal], nlocal+1);
// if needed, modify unpacked values or initialize other peratom values

View File

@ -29,7 +29,7 @@ FixNVE::FixNVE(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg)
{
if (!utils::strmatch(style,"^nve/sphere") && narg < 3)
error->all(FLERR,"Illegal fix nve command");
utils::missing_cmd_args(FLERR, "fix nve", error);
dynamic_group_allow = 1;
time_integrate = 1;

View File

@ -32,7 +32,7 @@ using namespace FixConst;
FixNVELimit::FixNVELimit(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg)
{
if (narg != 4) error->all(FLERR,"Illegal fix nve/limit command");
if (narg != 4) utils::missing_cmd_args(FLERR, "fix nve/limit", error);
time_integrate = 1;
scalar_flag = 1;

View File

@ -25,7 +25,7 @@ using namespace FixConst;
FixNVENoforce::FixNVENoforce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
{
if (narg != 3) error->all(FLERR, "Illegal fix nve/noforce command");
if (narg != 3) utils::missing_cmd_args(FLERR, "fix nve/noforce", error);
time_integrate = 1;
}

View File

@ -35,7 +35,7 @@ enum{NODLM,DLM};
FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) :
FixNVE(lmp, narg, arg)
{
if (narg < 3) error->all(FLERR,"Illegal fix nve/sphere command");
if (narg < 3) utils::missing_cmd_args(FLERR, "fix nve/sphere", error);
time_integrate = 1;
@ -49,12 +49,12 @@ FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) :
int iarg = 3;
while (iarg < narg) {
if (strcmp(arg[iarg],"update") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nve/sphere command");
if (iarg+2 > narg) utils::missing_cmd_args(FLERR, "fix nve/sphere update", error);
if (strcmp(arg[iarg+1],"dipole") == 0) extra = DIPOLE;
else if (strcmp(arg[iarg+1],"dipole/dlm") == 0) {
extra = DIPOLE;
dlm = DLM;
} else error->all(FLERR,"Illegal fix nve/sphere command");
} else error->all(FLERR,"Unknown keyword in fix nve/sphere update command: {}",arg[iarg+1]);
iarg += 2;
}
else if (strcmp(arg[iarg],"disc")==0) {
@ -63,7 +63,7 @@ FixNVESphere::FixNVESphere(LAMMPS *lmp, int narg, char **arg) :
error->all(FLERR,"Fix nve/sphere disc requires 2d simulation");
iarg++;
}
else error->all(FLERR,"Illegal fix nve/sphere command");
else error->all(FLERR,"Unknown keyword in fix nve/sphere command: {}",arg[iarg]);
}
// error checks

View File

@ -237,11 +237,9 @@ void Output::setup(int memflag)
last_dump[idump] = ntimestep;
}
// calculate timestep and/or time for next dump
// set next_dump and next_time_dump, 0 arg for setup()
// only do this if dump written or dump has not been written yet
// calculate timestep or time for next dump
// set next_dump and next_time_dump
if (writeflag || last_dump[idump] < 0)
calculate_next_dump(SETUP,idump,ntimestep);
// if dump not written now, use addstep_compute_all()
@ -268,11 +266,11 @@ void Output::setup(int memflag)
if (restart_flag && update->restrict_output == 0) {
if (restart_flag_single) {
if (restart_every_single)
if (restart_every_single) {
next_restart_single =
(ntimestep/restart_every_single)*restart_every_single +
restart_every_single;
else {
} else {
auto nextrestart = static_cast<bigint>
(input->variable->compute_equal(ivar_restart_single));
if (nextrestart <= ntimestep)
@ -365,7 +363,7 @@ void Output::setup(int memflag)
modify->clearstep_compute();
// perform dump
// reset next_dump and next_time_dump, 1 arg for write()
// set next_dump and next_time_dump
dump[idump]->write();
last_dump[idump] = ntimestep;
@ -388,7 +386,6 @@ void Output::setup(int memflag)
if (next_restart == ntimestep) {
if (next_restart_single == ntimestep) {
std::string file = restart1;
std::size_t found = file.find('*');
if (found != std::string::npos)
@ -407,6 +404,7 @@ void Output::setup(int memflag)
modify->addstep_compute(next_restart_single);
}
}
if (next_restart_double == ntimestep) {
if (last_restart != ntimestep) {
if (restart_toggle == 0) {
@ -417,6 +415,7 @@ void Output::setup(int memflag)
restart_toggle = 0;
}
}
if (restart_every_double) next_restart_double += restart_every_double;
else {
modify->clearstep_compute();
@ -489,8 +488,9 @@ void Output::calculate_next_dump(int which, int idump, bigint ntimestep)
if (every_dump[idump]) {
// which = SETUP: nextdump = next multiple of every_dump
// which = WRITE: increment nextdump by every_dump
// which = SETUP: next_dump = next multiple of every_dump
// which = WRITE: increment next_dump by every_dump
// current step is already multiple of every_dump
if (which == SETUP)
next_dump[idump] = (ntimestep/every_dump[idump])*every_dump[idump] + every_dump[idump];
@ -728,7 +728,6 @@ void Output::reset_dt()
next = MIN(next,next_thermo);
}
/* ----------------------------------------------------------------------
add a Dump to list of Dumps
------------------------------------------------------------------------- */

Some files were not shown because too many files have changed in this diff Show More