Merge branch 'develop' into type-labels
This commit is contained in:
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,10 +692,10 @@ 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
|
||||
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
|
||||
vectors of the simulation box edges, as discussed on the
|
||||
:doc:`Howto triclinic <Howto_triclinic>` page.
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
""""""""""""""""
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
""""""""""""""""
|
||||
@ -96,10 +97,10 @@ Related commands
|
||||
|
||||
Default
|
||||
"""""""
|
||||
none
|
||||
none
|
||||
|
||||
----------
|
||||
|
||||
.. _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.
|
||||
|
||||
@ -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:
|
||||
|
||||
|
||||
@ -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
|
||||
@ -44,15 +44,15 @@ Syntax
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*scale* value = *no* or *yes*
|
||||
*no* = the variable value is the new setting
|
||||
*yes* = the variable value multiplies the original setting
|
||||
*reset* value = *no* or *yes*
|
||||
*no* = values will remain altered at the end of a run
|
||||
*yes* = reset altered values to their original values at the end of a run
|
||||
*mass* value = *no* or *yes*
|
||||
*no* = mass is not altered by changes in diameter
|
||||
*yes* = mass is altered by changes in diameter
|
||||
*scale* value = *no* or *yes*
|
||||
*no* = the variable value is the new setting
|
||||
*yes* = the variable value multiplies the original setting
|
||||
*reset* value = *no* or *yes*
|
||||
*no* = values will remain altered at the end of a run
|
||||
*yes* = reset altered values to their original values at the end of a run
|
||||
*mass* value = *no* or *yes*
|
||||
*no* = mass is not altered by changes in diameter
|
||||
*yes* = mass is altered by changes in diameter
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
"""""""
|
||||
|
||||
@ -6,7 +6,7 @@ fix addforce command
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID addforce fx fy fz keyword value ...
|
||||
|
||||
@ -24,7 +24,7 @@ Syntax
|
||||
.. parsed-literal::
|
||||
|
||||
*every* value = Nevery
|
||||
Nevery = add force every this many timesteps
|
||||
Nevery = add force every this many time steps
|
||||
*region* value = region-ID
|
||||
region-ID = ID of region atoms must be in to have added force
|
||||
*energy* value = v_name
|
||||
@ -42,31 +42,31 @@ 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
|
||||
often the forces are applied. The default value is 1, for every
|
||||
timestep.
|
||||
time step.
|
||||
|
||||
If the *region* keyword is used, the atom must also be in the
|
||||
specified geometric :doc:`region <region>` in order to have force added
|
||||
@ -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.
|
||||
@ -157,7 +161,7 @@ the :doc:`run <run>` command.
|
||||
The forces due to this fix are imposed during an energy minimization,
|
||||
invoked by the :doc:`minimize <minimize>` command. You should not
|
||||
specify force components with a variable that has time-dependence for
|
||||
use with a minimizer, since the minimizer increments the timestep as
|
||||
use with a minimizer, since the minimizer increments the time step as
|
||||
the iteration count during the minimization.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -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
|
||||
""""""""""""""""
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
timesteps 90,92,94,96,98,100 will be used to compute the final average
|
||||
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
|
||||
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
|
||||
averaging is done; values are simply generated on timesteps
|
||||
100,200,etc.
|
||||
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
|
||||
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
|
||||
@ -279,32 +283,32 @@ Note that the per-chunk temperature calculated by this fix and the
|
||||
different. The compute calculates the temperature for each chunk for
|
||||
a single snapshot. This fix can do that but can also time average
|
||||
those values over many snapshots, or it can compute a temperature as
|
||||
if the atoms in the chunk on different timesteps were collected
|
||||
if the atoms in the chunk on different time steps were collected
|
||||
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 timesteps, 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
|
||||
their values on certain time steps, which must be compatible with
|
||||
: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
|
||||
|
||||
@ -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 timestep the accumulation of
|
||||
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
|
||||
|
||||
@ -6,14 +6,14 @@ fix ave/correlate/long command
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID ave/correlate/long Nevery Nfreq value1 value2 ... keyword args ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* ave/correlate/long = style name of this fix command
|
||||
* Nevery = use input values every this many timesteps
|
||||
* Nfreq = save state of the time correlation functions every this many timesteps
|
||||
* Nevery = use input values every this many time steps
|
||||
* Nfreq = save state of the time correlation functions every this many time steps
|
||||
* one or more input values can be listed
|
||||
* value = c_ID, c_ID[N], f_ID, f_ID[N], v_name
|
||||
|
||||
@ -38,7 +38,7 @@ Syntax
|
||||
auto/lower = auto + lower
|
||||
full = correlate each value with every other value, including itself = auto + upper + lower
|
||||
*start* args = Nstart
|
||||
Nstart = start accumulating correlations on this timestep
|
||||
Nstart = start accumulating correlations on this time step
|
||||
*file* arg = filename
|
||||
filename = name of file to output correlation data to
|
||||
*overwrite* arg = none = overwrite output file with only latest output
|
||||
@ -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 timesteps 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.
|
||||
The *Nevery* and *Nfreq* arguments specify on what time steps the input
|
||||
values will be used to calculate correlation data and the frequency
|
||||
with which the time correlation functions will be output to a file,
|
||||
respectively.
|
||||
Note that there is no *Nrepeat* argument, unlike the
|
||||
:doc:`fix ave/correlate <fix_ave_correlate>` command.
|
||||
|
||||
The optional keywords *ncorr*, *nlen*, and *ncount* are unique to this
|
||||
command and determine the number of correlation points calculated and
|
||||
the memory and CPU overhead used by this calculation. *Nlen* and
|
||||
*ncount* determine the amount of averaging done at longer correlation
|
||||
times. The default values *nlen=16*, *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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -6,15 +6,15 @@ fix ave/time command
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix ID group-ID ave/time Nevery Nrepeat Nfreq value1 value2 ... keyword args ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* ave/time = style name of this fix command
|
||||
* Nevery = use input values every this many timesteps
|
||||
* Nevery = use input values every this many time steps
|
||||
* Nrepeat = # of times to use input values for calculating averages
|
||||
* Nfreq = calculate averages every this many timesteps
|
||||
* Nfreq = calculate averages every this many time steps
|
||||
* one or more input values can be listed
|
||||
* value = c_ID, c_ID[N], f_ID, f_ID[N], v_name
|
||||
|
||||
@ -40,7 +40,7 @@ Syntax
|
||||
running = output cumulative average of all previous Nfreq steps
|
||||
window M = output average of M most recent Nfreq steps
|
||||
*start* args = Nstart
|
||||
Nstart = start averaging on this timestep
|
||||
Nstart = start averaging on this time step
|
||||
*off* arg = M = do not average this value
|
||||
M = value # from 1 to Nvalues
|
||||
*file* arg = filename
|
||||
@ -69,7 +69,7 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Use one or more global values as inputs every few timesteps, and
|
||||
Use one or more global values as inputs every few time steps, and
|
||||
average them over longer timescales. The resulting averages can be
|
||||
used by other :doc:`output commands <Howto_output>` such as
|
||||
:doc:`thermo_style custom <thermo_style>`, and can also be written to a
|
||||
@ -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,22 +149,24 @@ 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
|
||||
averaging is done; values are 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 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
|
||||
@ -198,7 +202,7 @@ global 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.
|
||||
|
||||
Note that some fixes only produce their values on certain timesteps,
|
||||
Note that some fixes only produce their values on certain time steps,
|
||||
which must be compatible with *Nevery*, else an error will result.
|
||||
Users can also write code for their own fix styles and :doc:`add them to LAMMPS <Modify>`.
|
||||
|
||||
@ -228,32 +232,32 @@ 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 timesteps
|
||||
that are multiples of *Nfreq* are independent of each other; they are
|
||||
output as-is without further averaging.
|
||||
If the *ave* setting is *one*, then the values produced on time steps
|
||||
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
|
||||
average of the value produced on that timestep with all preceding
|
||||
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>`
|
||||
command, or by re-defining the fix by re-specifying it.
|
||||
|
||||
If the *ave* setting is *window*, then the values produced on
|
||||
timesteps that are multiples of *Nfreq* are summed and averaged within
|
||||
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 timestep averaging will begin on.
|
||||
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
|
||||
setting *start* to a larger value can avoid including a 0.0 in a
|
||||
running or windowed average.
|
||||
@ -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
|
||||
@ -288,13 +292,13 @@ effort in Python using the *pyyaml*, *pandas*, and *matplotlib*
|
||||
packages.
|
||||
|
||||
The *overwrite* keyword will continuously overwrite the output file
|
||||
with the latest output, so that it only contains one timestep worth of
|
||||
with the latest output, so that it only contains one time step worth of
|
||||
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
|
||||
@ -340,8 +344,8 @@ 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 timesteps that are multiples of
|
||||
*Nfreq* since that is when averaging is performed.
|
||||
The values can only be accessed on time steps that are multiples of
|
||||
: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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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 timestep, a load-balancing operation is only performed
|
||||
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
|
||||
""""""""""""""""
|
||||
|
||||
@ -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.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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")
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ Masses
|
||||
2 1
|
||||
3 1
|
||||
|
||||
Atoms # dielectric: id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature
|
||||
Atoms # dielectric : id mol type q x y z normx normy normz area_per_patch ed em epsilon curvature
|
||||
|
||||
1 0 1 0 0 0 9.99798 0 0 1 0.866 8 6 6 0
|
||||
2 0 1 0 0.500101 0.866201 9.99798 0 0 1 0.866 8 6 6 0
|
||||
|
||||
24
examples/QM/LATTE/2uo2.lmp
Normal file
24
examples/QM/LATTE/2uo2.lmp
Normal 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
|
||||
27
examples/QM/LATTE/3uo2.lmp
Normal file
27
examples/QM/LATTE/3uo2.lmp
Normal 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
|
||||
30
examples/QM/LATTE/4uo2.lmp
Normal file
30
examples/QM/LATTE/4uo2.lmp
Normal 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
149
examples/QM/LATTE/README
Normal 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).
|
||||
1384
examples/QM/LATTE/bondints.table
Normal file
1384
examples/QM/LATTE/bondints.table
Normal file
File diff suppressed because it is too large
Load Diff
315
examples/QM/LATTE/dump.8Sep22.aimd.mpi.1
Normal file
315
examples/QM/LATTE/dump.8Sep22.aimd.mpi.1
Normal 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
|
||||
315
examples/QM/LATTE/dump.8Sep22.aimd.mpi.2
Normal file
315
examples/QM/LATTE/dump.8Sep22.aimd.mpi.2
Normal 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
|
||||
315
examples/QM/LATTE/dump.8Sep22.aimd.plugin
Normal file
315
examples/QM/LATTE/dump.8Sep22.aimd.plugin
Normal 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
|
||||
15
examples/QM/LATTE/dump.8Sep22.series.mpi.1.2uo2
Normal file
15
examples/QM/LATTE/dump.8Sep22.series.mpi.1.2uo2
Normal 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
|
||||
18
examples/QM/LATTE/dump.8Sep22.series.mpi.1.3uo2
Normal file
18
examples/QM/LATTE/dump.8Sep22.series.mpi.1.3uo2
Normal 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
|
||||
21
examples/QM/LATTE/dump.8Sep22.series.mpi.1.4uo2
Normal file
21
examples/QM/LATTE/dump.8Sep22.series.mpi.1.4uo2
Normal 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
|
||||
15
examples/QM/LATTE/dump.8Sep22.series.mpi.2.2uo2
Normal file
15
examples/QM/LATTE/dump.8Sep22.series.mpi.2.2uo2
Normal 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
|
||||
18
examples/QM/LATTE/dump.8Sep22.series.mpi.2.3uo2
Normal file
18
examples/QM/LATTE/dump.8Sep22.series.mpi.2.3uo2
Normal 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
|
||||
21
examples/QM/LATTE/dump.8Sep22.series.mpi.2.4uo2
Normal file
21
examples/QM/LATTE/dump.8Sep22.series.mpi.2.4uo2
Normal 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
|
||||
15
examples/QM/LATTE/dump.8Sep22.series.plugin.2uo2
Normal file
15
examples/QM/LATTE/dump.8Sep22.series.plugin.2uo2
Normal 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
|
||||
18
examples/QM/LATTE/dump.8Sep22.series.plugin.3uo2
Normal file
18
examples/QM/LATTE/dump.8Sep22.series.plugin.3uo2
Normal 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
|
||||
21
examples/QM/LATTE/dump.8Sep22.series.plugin.4uo2
Normal file
21
examples/QM/LATTE/dump.8Sep22.series.plugin.4uo2
Normal 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
|
||||
15
examples/QM/LATTE/electrons.dat
Normal file
15
examples/QM/LATTE/electrons.dat
Normal 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
26
examples/QM/LATTE/in.aimd
Normal 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
|
||||
27
examples/QM/LATTE/in.aimd.plugin
Normal file
27
examples/QM/LATTE/in.aimd.plugin
Normal 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"
|
||||
37
examples/QM/LATTE/in.series
Normal file
37
examples/QM/LATTE/in.series
Normal 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
|
||||
32
examples/QM/LATTE/in.series.plugin
Normal file
32
examples/QM/LATTE/in.series.plugin
Normal 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
67
examples/QM/LATTE/latte.in
Executable 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
|
||||
}
|
||||
102
examples/QM/LATTE/log.8Sep22.aimd.lammps.mpi.1
Normal file
102
examples/QM/LATTE/log.8Sep22.aimd.lammps.mpi.1
Normal 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
|
||||
102
examples/QM/LATTE/log.8Sep22.aimd.lammps.mpi.2
Normal file
102
examples/QM/LATTE/log.8Sep22.aimd.lammps.mpi.2
Normal 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
|
||||
103
examples/QM/LATTE/log.8Sep22.aimd.lammps.plugin
Normal file
103
examples/QM/LATTE/log.8Sep22.aimd.lammps.plugin
Normal 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
|
||||
12604
examples/QM/LATTE/log.8Sep22.aimd.latte.1
Normal file
12604
examples/QM/LATTE/log.8Sep22.aimd.latte.1
Normal file
File diff suppressed because it is too large
Load Diff
12604
examples/QM/LATTE/log.8Sep22.aimd.latte.2
Normal file
12604
examples/QM/LATTE/log.8Sep22.aimd.latte.2
Normal file
File diff suppressed because it is too large
Load Diff
12604
examples/QM/LATTE/log.8Sep22.aimd.latte.plugin
Normal file
12604
examples/QM/LATTE/log.8Sep22.aimd.latte.plugin
Normal file
File diff suppressed because it is too large
Load Diff
263
examples/QM/LATTE/log.8Sep22.series.lammps.mpi.1
Normal file
263
examples/QM/LATTE/log.8Sep22.series.lammps.mpi.1
Normal 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
|
||||
263
examples/QM/LATTE/log.8Sep22.series.lammps.mpi.2
Normal file
263
examples/QM/LATTE/log.8Sep22.series.lammps.mpi.2
Normal 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
|
||||
256
examples/QM/LATTE/log.8Sep22.series.lammps.plugin
Normal file
256
examples/QM/LATTE/log.8Sep22.series.lammps.plugin
Normal 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
|
||||
3209
examples/QM/LATTE/log.8Sep22.series.latte.1
Normal file
3209
examples/QM/LATTE/log.8Sep22.series.latte.1
Normal file
File diff suppressed because it is too large
Load Diff
3209
examples/QM/LATTE/log.8Sep22.series.latte.2
Normal file
3209
examples/QM/LATTE/log.8Sep22.series.latte.2
Normal file
File diff suppressed because it is too large
Load Diff
178
examples/QM/LATTE/ppots.dftb
Normal file
178
examples/QM/LATTE/ppots.dftb
Normal 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
21
examples/QM/README
Normal 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
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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 { \
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -41,6 +41,7 @@ PairCoulLongDielectric::PairCoulLongDielectric(LAMMPS *_lmp) :
|
||||
{
|
||||
nmax = 0;
|
||||
single_enable = 0;
|
||||
no_virial_fdotr_compute = 1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -40,6 +40,7 @@ PairLJCutCoulDebyeDielectric::PairLJCutCoulDebyeDielectric(LAMMPS *_lmp) : PairL
|
||||
efield = nullptr;
|
||||
epot = nullptr;
|
||||
nmax = 0;
|
||||
no_virial_fdotr_compute = 1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -45,6 +45,7 @@ PairLJCutCoulLongDielectric::PairLJCutCoulLongDielectric(LAMMPS *_lmp) : PairLJC
|
||||
efield = nullptr;
|
||||
epot = nullptr;
|
||||
nmax = 0;
|
||||
no_virial_fdotr_compute = 1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -47,6 +47,7 @@ PairLJCutCoulMSMDielectric::PairLJCutCoulMSMDielectric(LAMMPS *_lmp) : PairLJCut
|
||||
nmax = 0;
|
||||
ftmp = nullptr;
|
||||
efield = nullptr;
|
||||
no_virial_fdotr_compute = 1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -45,6 +45,7 @@ PairLJLongCoulLongDielectric::PairLJLongCoulLongDielectric(LAMMPS *_lmp) : PairL
|
||||
efield = nullptr;
|
||||
epot = nullptr;
|
||||
nmax = 0;
|
||||
no_virial_fdotr_compute = 1;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
||||
@ -25,7 +25,7 @@ using namespace FixConst;
|
||||
|
||||
enum { NATIVE, REAL, METAL }; // LAMMPS units which MDI supports
|
||||
|
||||
#define MAXELEMENT 103 // used elsewhere in MDI package
|
||||
#define MAXELEMENT 103 // used elsewhere in MDI package
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -55,41 +54,51 @@ FixMDIQM::FixMDIQM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
|
||||
|
||||
int iarg = 3;
|
||||
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], "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");
|
||||
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");
|
||||
} 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");
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"every") == 0) {
|
||||
if (iarg+2 > narg) error->all(FLERR,"Illegal fix mdi/qm command");
|
||||
every = utils::inumeric(FLERR,arg[iarg+1],false,lmp);
|
||||
if (every <= 0) error->all(FLERR,"Illegal fix mdi/qm command");
|
||||
} else if (strcmp(arg[iarg], "every") == 0) {
|
||||
if (iarg + 2 > narg) error->all(FLERR, "Illegal fix mdi/qm command");
|
||||
every = utils::inumeric(FLERR, arg[iarg + 1], false, lmp);
|
||||
if (every <= 0) error->all(FLERR, "Illegal fix mdi/qm command");
|
||||
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");
|
||||
} 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");
|
||||
iarg += 2;
|
||||
} else if (strcmp(arg[iarg],"elements") == 0) {
|
||||
} else if (strcmp(arg[iarg], "elements") == 0) {
|
||||
int ntypes = atom->ntypes;
|
||||
if (iarg+ntypes+1 > narg) error->all(FLERR,"Illegal fix mdi/qm command");
|
||||
delete [] elements;
|
||||
elements = new int[ntypes+1];
|
||||
if (iarg + ntypes + 1 > narg) error->all(FLERR, "Illegal fix mdi/qm command");
|
||||
delete[] elements;
|
||||
elements = new int[ntypes + 1];
|
||||
for (int i = 1; i <= ntypes; i++) {
|
||||
elements[i] = utils::inumeric(FLERR,arg[iarg+i],false,lmp);
|
||||
elements[i] = utils::inumeric(FLERR, arg[iarg + i], false, lmp);
|
||||
if (elements[i] < 1 || elements[i] > MAXELEMENT)
|
||||
error->all(FLERR,"Illegal fix mdi/qm command");
|
||||
error->all(FLERR, "Illegal fix mdi/qm command");
|
||||
}
|
||||
iarg += ntypes+1;
|
||||
} else error->all(FLERR,"Illegal fix mdi/qm command");
|
||||
iarg += ntypes + 1;
|
||||
} else
|
||||
error->all(FLERR, "Illegal fix mdi/qm command");
|
||||
}
|
||||
|
||||
// fix output settings are based on optional keywords
|
||||
@ -217,26 +226,26 @@ 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
|
||||
// only works for stand-alone engines
|
||||
// connection should have been already made by "mdi connect" command
|
||||
// only works for stand-alone engines
|
||||
|
||||
} else {
|
||||
plugin = 0;
|
||||
|
||||
if (lmp->mdicomm == nullptr)
|
||||
error->all(FLERR,"Fix mdi/qm is not connected to engine via mdi connect");
|
||||
error->all(FLERR, "Fix mdi/qm is not connected to engine via mdi connect");
|
||||
|
||||
int nbytes = sizeof(MDI_Comm);
|
||||
char *ptrcomm = (char *) lmp->mdicomm;
|
||||
memcpy(&mdicomm,ptrcomm,nbytes);
|
||||
memcpy(&mdicomm, ptrcomm, nbytes);
|
||||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
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 ) {
|
||||
send_elements();
|
||||
} else if ( types_exists ) {
|
||||
send_types();
|
||||
}
|
||||
MPI_Bcast(&types_exists, 1, MPI_INT, 0, world);
|
||||
|
||||
if (elements && elements_exists)
|
||||
send_elements();
|
||||
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
|
||||
|
||||
@ -319,7 +332,7 @@ void FixMDIQM::post_force(int vflag)
|
||||
buf3[3 * index + 2] = x[i][2] * lmp2mdi_length;
|
||||
}
|
||||
|
||||
int n = static_cast<int> (atom->natoms);
|
||||
int n = static_cast<int>(atom->natoms);
|
||||
MPI_Reduce(buf3, buf3all, 3 * n, MPI_DOUBLE, MPI_SUM, 0, world);
|
||||
|
||||
// send current coords to MDI engine
|
||||
@ -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) {
|
||||
@ -385,9 +398,9 @@ void FixMDIQM::post_force(int vflag)
|
||||
qm_virial_symmetric[0] = qm_virial[0] * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[1] = qm_virial[4] * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[2] = qm_virial[8] * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[3] = 0.5*(qm_virial[1]+qm_virial[3]) * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[4] = 0.5*(qm_virial[2]+qm_virial[6]) * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[5] = 0.5*(qm_virial[5]+qm_virial[7]) * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[3] = 0.5 * (qm_virial[1] + qm_virial[3]) * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[4] = 0.5 * (qm_virial[2] + qm_virial[6]) * mdi2lmp_pressure;
|
||||
qm_virial_symmetric[5] = 0.5 * (qm_virial[5] + qm_virial[7]) * mdi2lmp_pressure;
|
||||
}
|
||||
|
||||
// optionally set fix->virial
|
||||
@ -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,10 +459,9 @@ 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);
|
||||
maxbuf = static_cast<int>(atom->natoms);
|
||||
memory->destroy(ibuf1);
|
||||
memory->destroy(buf3);
|
||||
memory->destroy(buf3all);
|
||||
@ -467,7 +478,7 @@ void FixMDIQM::reallocate()
|
||||
|
||||
void FixMDIQM::send_types()
|
||||
{
|
||||
int n = static_cast<int> (atom->natoms);
|
||||
int n = static_cast<int>(atom->natoms);
|
||||
memset(ibuf1, 0, n * sizeof(int));
|
||||
|
||||
// use local atomID to index into ordered ibuf1
|
||||
@ -496,7 +507,7 @@ void FixMDIQM::send_types()
|
||||
|
||||
void FixMDIQM::send_elements()
|
||||
{
|
||||
int n = static_cast<int> (atom->natoms);
|
||||
int n = static_cast<int>(atom->natoms);
|
||||
memset(ibuf1, 0, n * sizeof(int));
|
||||
|
||||
// use local atomID to index into ordered ibuf1
|
||||
@ -530,7 +541,9 @@ 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");
|
||||
if ( celldispl_exists ) {
|
||||
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");
|
||||
cell[0] = domain->boxlo[0] * lmp2mdi_length;
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ class FixMDIQM : public Fix {
|
||||
|
||||
private:
|
||||
int nprocs;
|
||||
int every,virialflag,addflag,connectflag;
|
||||
int every, virialflag, addflag, connectflag;
|
||||
int plugin;
|
||||
int maxlocal;
|
||||
int sumflag;
|
||||
@ -48,7 +48,7 @@ class FixMDIQM : public Fix {
|
||||
|
||||
double qm_energy;
|
||||
int lmpunits;
|
||||
double qm_virial[9],qm_virial_symmetric[6];
|
||||
double qm_virial[9], qm_virial_symmetric[6];
|
||||
double **fqm;
|
||||
|
||||
MDI_Comm mdicomm;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -44,7 +44,7 @@ void MDICommand::command(int narg, char **arg)
|
||||
} else if (strcmp(arg[0], "connect") == 0) {
|
||||
|
||||
if (lmp->mdicomm != nullptr)
|
||||
error->all(FLERR,"MDI cannot connect to already connected engine");
|
||||
error->all(FLERR, "MDI cannot connect to already connected engine");
|
||||
|
||||
MDI_Comm mdicomm;
|
||||
MDI_Get_communicator(&mdicomm, 0);
|
||||
@ -53,23 +53,23 @@ 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");
|
||||
memcpy(ptrcomm,&mdicomm,nbytes);
|
||||
char *ptrcomm = (char *) memory->smalloc(nbytes, "mdi:mdicomm");
|
||||
memcpy(ptrcomm, &mdicomm, nbytes);
|
||||
|
||||
lmp->mdicomm = (void *) ptrcomm;
|
||||
|
||||
} 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);
|
||||
char *ptrcomm = (char *) lmp->mdicomm;
|
||||
memcpy(&mdicomm,ptrcomm,nbytes);
|
||||
memcpy(&mdicomm, ptrcomm, nbytes);
|
||||
|
||||
int ierr = MDI_Send_command("EXIT", mdicomm);
|
||||
if (ierr) error->all(FLERR, "MDI: EXIT command");
|
||||
@ -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");
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ enum { DEFAULT, MD, OPT }; // top-level MDI engine modes
|
||||
|
||||
enum { TYPE, CHARGE, MASS, COORD, VELOCITY, FORCE, ADDFORCE };
|
||||
|
||||
#define MAXELEMENT 103 // used elsewhere in MDI package
|
||||
#define MAXELEMENT 103 // used elsewhere in MDI package
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
trigger LAMMPS to start acting as an MDI engine
|
||||
@ -65,7 +65,7 @@ enum { TYPE, CHARGE, MASS, COORD, VELOCITY, FORCE, ADDFORCE };
|
||||
when EXIT command is received, mdi engine command exits
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char ** arg) : Pointers(_lmp)
|
||||
MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char **arg) : Pointers(_lmp)
|
||||
{
|
||||
// check requirements for LAMMPS to work with MDI as an engine
|
||||
|
||||
@ -80,18 +80,19 @@ MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char ** arg) : Pointers(_lmp)
|
||||
|
||||
int iarg = 0;
|
||||
while (iarg < narg) {
|
||||
if (strcmp(arg[iarg],"elements") == 0) {
|
||||
if (strcmp(arg[iarg], "elements") == 0) {
|
||||
int ntypes = atom->ntypes;
|
||||
delete [] elements;
|
||||
elements = new int[ntypes+1];
|
||||
if (iarg+ntypes+1 > narg) error->all(FLERR,"Illegal mdi engine command");
|
||||
delete[] elements;
|
||||
elements = new int[ntypes + 1];
|
||||
if (iarg + ntypes + 1 > narg) error->all(FLERR, "Illegal mdi engine command");
|
||||
for (int i = 1; i <= ntypes; i++) {
|
||||
elements[i] = utils::inumeric(FLERR,arg[iarg+i],false,lmp);
|
||||
elements[i] = utils::inumeric(FLERR, arg[iarg + i], false, lmp);
|
||||
if (elements[i] < 0 || elements[i] > MAXELEMENT)
|
||||
error->all(FLERR,"Illegal mdi engine command");
|
||||
error->all(FLERR, "Illegal mdi engine command");
|
||||
}
|
||||
iarg += ntypes+1;
|
||||
} else error->all(FLERR,"Illegal mdi engine command");
|
||||
iarg += ntypes + 1;
|
||||
} else
|
||||
error->all(FLERR, "Illegal mdi engine command");
|
||||
}
|
||||
|
||||
// error check an MDI element does not map to multiple atom types
|
||||
@ -99,10 +100,10 @@ MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char ** arg) : Pointers(_lmp)
|
||||
if (elements) {
|
||||
int ntypes = atom->ntypes;
|
||||
for (int i = 1; i < ntypes; i++)
|
||||
for (int j = i+1; j <= ntypes; j++) {
|
||||
for (int j = i + 1; j <= ntypes; j++) {
|
||||
if (elements[i] == 0 || elements[j] == 0) continue;
|
||||
if (elements[i] == elements[j])
|
||||
error->all(FLERR,"MDI engine element cannot map to multiple types");
|
||||
error->all(FLERR, "MDI engine element cannot map to multiple types");
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,7 +168,7 @@ MDIEngine::MDIEngine(LAMMPS *_lmp, int narg, char ** arg) : Pointers(_lmp)
|
||||
ibuf1 = ibuf1all = nullptr;
|
||||
|
||||
maxatom = 0;
|
||||
sys_natoms = static_cast<int> (atom->natoms);
|
||||
sys_natoms = static_cast<int>(atom->natoms);
|
||||
reallocate();
|
||||
|
||||
nsteps = 0;
|
||||
@ -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) {
|
||||
@ -362,7 +373,7 @@ int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
|
||||
else
|
||||
receive_double3(VELOCITY);
|
||||
|
||||
// -----------------------------------------------
|
||||
// -----------------------------------------------
|
||||
|
||||
} else if (strcmp(command, "<@") == 0) {
|
||||
ierr = MDI_Send(node_engine, MDI_NAME_LENGTH, MDI_CHAR, mdicomm);
|
||||
@ -411,9 +422,9 @@ int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
|
||||
} else if (strcmp(command, "<VELOCITIES") == 0) {
|
||||
send_double3(VELOCITY);
|
||||
|
||||
// -----------------------------------------------
|
||||
// -----------------------------------------------
|
||||
|
||||
// MDI action commands at @DEFAULT node
|
||||
// MDI action commands at @DEFAULT node
|
||||
|
||||
} else if (strcmp(command, "MD") == 0) {
|
||||
md();
|
||||
@ -421,9 +432,9 @@ int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
|
||||
} else if (strcmp(command, "OPTG") == 0) {
|
||||
optg();
|
||||
|
||||
// -----------------------------------------------
|
||||
// -----------------------------------------------
|
||||
|
||||
// MDI node commands
|
||||
// MDI node commands
|
||||
|
||||
} else if (strcmp(command, "@INIT_MD") == 0) {
|
||||
if (mode != DEFAULT) error->all(FLERR, "MDI: MDI engine is already performing a simulation");
|
||||
@ -458,14 +469,14 @@ int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
|
||||
strncpy(node_driver, command, MDI_COMMAND_LENGTH);
|
||||
node_match = false;
|
||||
|
||||
// exit command
|
||||
// exit command
|
||||
|
||||
} else if (strcmp(command, "EXIT") == 0) {
|
||||
exit_command = true;
|
||||
|
||||
// -------------------------------------------------------
|
||||
// custom LAMMPS commands
|
||||
// -------------------------------------------------------
|
||||
// -------------------------------------------------------
|
||||
// custom LAMMPS commands
|
||||
// -------------------------------------------------------
|
||||
|
||||
} else if (strcmp(command, "NBYTES") == 0) {
|
||||
nbytes_command();
|
||||
@ -478,9 +489,9 @@ int MDIEngine::execute_command(const char *command, MDI_Comm mdicomm)
|
||||
} else if (strcmp(command, "<KE") == 0) {
|
||||
send_ke();
|
||||
|
||||
// -------------------------------------------------------
|
||||
// unknown command
|
||||
// -------------------------------------------------------
|
||||
// -------------------------------------------------------
|
||||
// unknown command
|
||||
// -------------------------------------------------------
|
||||
|
||||
} else {
|
||||
error->all(FLERR, "MDI: Unknown command {} received from driver", command);
|
||||
@ -998,9 +1009,9 @@ void MDIEngine::create_system()
|
||||
// create list of 1 to sys_natoms IDs
|
||||
// optionally set charges if specified by ">CHARGES"
|
||||
|
||||
tagint* sys_ids;
|
||||
tagint *sys_ids;
|
||||
memory->create(sys_ids, sys_natoms, "mdi:sys_ids");
|
||||
for (int i = 0; i < sys_natoms; i++) sys_ids[i] = i+1;
|
||||
for (int i = 0; i < sys_natoms; i++) sys_ids[i] = i + 1;
|
||||
|
||||
if (flag_velocities)
|
||||
lammps_create_atoms(lmp, sys_natoms, sys_ids, sys_types, sys_coords, sys_velocities, nullptr,
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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, infile_arg);
|
||||
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)
|
||||
|
||||
@ -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 *);
|
||||
};
|
||||
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user