Edits to documentation files for consistency and math

This commit is contained in:
Karl Hammond
2022-08-19 23:49:44 -05:00
parent de0b7bf737
commit 2259947d52
12 changed files with 416 additions and 405 deletions

View File

@ -95,16 +95,16 @@ typically created via the :doc:`create_box <create_box>` command.
Before using this command, a lattice must also be defined using the
:doc:`lattice <lattice>` command, unless you specify the *single* style
with units = box or the *random* style. For the remainder of this doc
page, a created atom or molecule is referred to as a "particle".
page, a created atom or molecule is referred to as a "particle."
If created particles are individual atoms, they are assigned the
specified atom *type*, though this can be altered via the *basis*
keyword as discussed below. If molecules are being created, the type
of each atom in the created molecule is specified in the file read by
the :doc:`molecule <molecule>` command, and those values are added to
the specified atom *type*\ . E.g. if *type* = 2, and the file specifies
atom types 1,2,3, then each created molecule will have atom types
3,4,5.
the specified atom *type* (e.g., if *type* = 2 and the file specifies
atom types 1, 2, and 3, then each created molecule will have atom types
3, 4, and 5).
For the *box* style, the create_atoms command fills the entire
simulation box with particles on the lattice. If your simulation box
@ -204,7 +204,7 @@ all requested *N* particles, a warning will be output.
If the *region-ID* argument is specified as NULL, then the randomly
created particles will be anywhere in the simulation box. If a
*region-ID* is specified, a geometric volume is filled which is both
*region-ID* is specified, a geometric volume is filled that is both
inside the simulation box and is also consistent with the region
volume. See the :doc:`region <region>` command for details. Note
that a region can be specified so that its "volume" is either inside
@ -219,7 +219,7 @@ interleaving the create_atoms command with :doc:`lattice <lattice>`
commands specifying different orientations.
When this command is used, care should be taken to insure the
resulting system does not contain particles which are highly
resulting system does not contain particles that are highly
overlapped. Such overlaps will cause many interatomic potentials to
compute huge energies and forces, leading to bad dynamics. There are
several strategies to avoid this problem:
@ -291,7 +291,7 @@ and inserts all molecules at a specified orientation.
optional keywords allowed by the :doc:`create_box <create_box>` command
for extra bonds (angles,etc) or extra special neighbors. This is
because by default, the :doc:`create_box <create_box>` command sets up a
non-molecular system which does not allow molecules to be added.
non-molecular system that does not allow molecules to be added.
----------
@ -308,11 +308,11 @@ The *ratio* and *subset* keywords can be used in conjunction with the
*box* or *region* styles to limit the total number of particles
inserted. The lattice defines a set of *Nlatt* eligible sites for
inserting particles, which may be limited by the *region* style or the
*var* and *set* keywords. For the *ratio* keyword only the specified
fraction of them (0 <= *frac* <= 1) will be assigned particles. For
the *subset* keyword only the specified *Nsubset* of them will be
*var* and *set* keywords. For the *ratio* keyword, only the specified
fraction of them (:math:`0 \le f \le 1`) will be assigned particles.
For the *subset* keyword only the specified *Nsubset* of them will be
assigned particles. In both cases the assigned lattice sites are
chosen randomly. An iterative algorithm is used which insures the
chosen randomly. An iterative algorithm is used that insures the
correct number of particles are inserted, in a perfectly random
fashion. Which lattice sites are selected will change with the number
of processors used.
@ -327,23 +327,23 @@ The *var* and *set* keywords can be used together to provide a
criterion for accepting or rejecting the addition of an individual
atom, based on its coordinates. They apply to all styles except
*single*. The *name* specified for the *var* keyword is the name of
an :doc:`equal-style variable <variable>` which should evaluate to a
zero or non-zero value based on one or two or three variables which
will store the x, y, or z coordinates of an atom (one variable per
an :doc:`equal-style variable <variable>` that should evaluate to a
zero or non-zero value based on one or two or three variables that
will store the *x*, *y*, or *z* coordinates of an atom (one variable per
coordinate). If used, these other variables must be
:doc:`internal-style variables <variable>` defined in the input
script; their initial numeric value can be anything. They must be
internal-style variables, because this command resets their values
directly. The *set* keyword is used to identify the names of these
other variables, one variable for the x-coordinate of a created atom,
one for y, and one for z.
other variables, one variable for the *x*-coordinate of a created atom,
one for *y*, and one for *z*.
.. figure:: img/sinusoid.jpg
:figwidth: 50%
:align: right
:target: _images/sinusoid.jpg
When an atom is created, its x,y,z coordinates become the values for
When an atom is created, its :math:`(x,y,z)` coordinates become the values for
any *set* variable that is defined. The *var* variable is then
evaluated. If the returned value is 0.0, the atom is not created. If
it is non-zero, the atom is created.
@ -352,8 +352,8 @@ As an example, these commands can be used in a 2d simulation, to
create a sinusoidal surface. Note that the surface is "rough" due to
individual lattice points being "above" or "below" the mathematical
expression for the sinusoidal curve. If a finer lattice were used,
the sinusoid would appear to be "smoother". Also note the use of the
"xlat" and "ylat" :doc:`thermo_style <thermo_style>` keywords which
the sinusoid would appear to be "smoother." Also note the use of the
"xlat" and "ylat" :doc:`thermo_style <thermo_style>` keywords, which
converts lattice spacings to distance.
.. only:: html
@ -379,7 +379,7 @@ converts lattice spacings to distance.
The *rotate* keyword allows specification of the orientation
at which molecules are inserted. The axis of rotation is
determined by the rotation vector (Rx,Ry,Rz) that goes through the
determined by the rotation vector :math:`(R_x,R_y,R_z)` that goes through the
insertion point. The specified *theta* determines the angle of
rotation around that axis. Note that the direction of rotation for
the atoms around the rotation axis is consistent with the right-hand
@ -388,7 +388,7 @@ wrap around the axis in the direction of rotation.
The *radscale* keyword only applies to the *mesh* style and adjusts the
radius of created particles (see above), provided this is supported by
the atom style. Its value is a prefactor (must be > 0.0, default is
the atom style. Its value is a prefactor (must be :math:`>` 0.0, default is
1.0) that is applied to the atom radius inferred from the size of the
individual triangles in the triangle mesh that the particle corresponds
to.
@ -406,12 +406,12 @@ non-overlapping criterion.
.. note::
Checking for overlaps is a costly O(N(N+M)) operation for inserting
*N* new particles into a system with *M* existing particles. This
is because distances to all *M* existing particles are computed for
Checking for overlaps is a costly :math:`\mathcal{O}(N(N+M))` operation for
inserting *N* new particles into a system with *M* existing particles.
This is because distances to all *M* existing particles are computed for
each new particle that is added. Thus the intended use of this
keyword is to add relatively small numbers of particles to systems
which remain at a relatively low density even after the new
that remain at a relatively low density even after the new
particles are created. Careful use of the *maxtry* keyword in
combination with *overlap* is recommended. See the discussion
above about systems with overlapped particles for alternate
@ -422,7 +422,7 @@ the number of attempts to generate valid coordinates for a single new
particle that satisfy all requirements imposed by the *region*, *var*,
and *overlap* keywords. The default is 10 attempts per particle
before the loop over the requested *N* particles advances to the next
particle. Note that if insertion success is unlikely (e.g. inserting
particle. Note that if insertion success is unlikely (e.g., inserting
new particles into a dense system using the *overlap* keyword),
setting the *maxtry* keyword to a large value may result in this
command running for a long time.
@ -447,7 +447,7 @@ Here is an example for the *random* style using these commands
to produce a system as shown in the image with 1520 particles (out of
2000 requested) that are moderately dense and which have no overlaps
sufficient to prevent the LJ pair_style from running properly (because
the overlap criterion = 1.0). The create_atoms command ran for 0.3 s
the overlap criterion is 1.0). The create_atoms command ran for 0.3 s
on a single CPU core.
.. only:: html
@ -460,9 +460,9 @@ The *units* keyword determines the meaning of the distance units used
to specify the coordinates of the one particle created by the *single*
style, or the overlap distance *Doverlap* by the *overlap* keyword. A
*box* value selects standard distance units as defined by the
:doc:`units <units>` command, e.g. Angstroms for units = real or
metal. A *lattice* value means the distance units are in lattice
spacings.
: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.
----------
@ -471,15 +471,15 @@ collection of created atoms are assigned consecutive IDs that start
immediately following the largest atom ID existing before the
create_atoms command was invoked. This is done by the processor's
communicating the number of atoms they each own, the first processor
numbering its atoms from 1 to N1, the second processor from N1+1 to
N2, etc. Where N1 = number of atoms owned by the first processor, N2
= number owned by the second processor, etc. Thus when the same
simulation is performed on different numbers of processors, there is
no guarantee a particular created atom will be assigned the same ID in
both simulations. If molecules are being created, molecule IDs are
assigned to created molecules in a similar fashion.
numbering its atoms from :math:`1` to :math:`N_1`, the second processor from
:math:`N_1+1` to :math:`N_2`, and so on, where :math:`N_1` is the number of
atoms owned by the first processor, :math:`N_2` is the number owned by the
second processor, and so forth. Thus, when the same simulation is performed on
different numbers of processors, there is no guarantee a particular created
atom will be assigned the same ID in both simulations. If molecules are being
created, molecule IDs are assigned to created molecules in a similar fashion.
Aside from their ID, atom type, and xyz position, other properties of
Aside from their ID, atom type, and :math:`xyz` position, other properties of
created atoms are set to default values, depending on which quantities
are defined by the chosen :doc:`atom style <atom_style>`. See the
:doc:`atom style <atom_style>` command for more details. See the
@ -500,17 +500,17 @@ how to change these values.
If molecules are being created, these defaults can be overridden by
values specified in the file read by the :doc:`molecule <molecule>`
command. E.g. the file typically defines bonds (angles,etc) between
command. That is, the file typically defines bonds (angles, etc.) between
atoms in the molecule, and can optionally define charges on each atom.
Note that the *sphere* atom style sets the default particle diameter to
1.0 as well as the density. This means the mass for the particle is not
1.0, but is PI/6 \* diameter\^3 = 0.5236. When using the *mesh* style,
the particle diameter is adjusted from the size of the individual
triangles in the triangle mesh.
1.0, but is :math:`\frac{\pi}{6} d^3 = 0.5236`, where :math:`d` is the
diameter. When using the *mesh* style, the particle diameter is adjusted from
the size of the individual triangles in the triangle mesh.
Note that the *ellipsoid* atom style sets the default particle shape
to (0.0 0.0 0.0) and the density to 1.0 which means it is a point
to (0.0 0.0 0.0) and the density to 1.0, which means it is a point
particle, not an ellipsoid, and has a mass of 1.0.
Note that the *peri* style sets the default volume and density to 1.0
@ -533,8 +533,9 @@ the z-direction for a 2d model.
Related commands
""""""""""""""""
:doc:`lattice <lattice>`, :doc:`region <region>`, :doc:`create_box <create_box>`,
:doc:`read_data <read_data>`, :doc:`read_restart <read_restart>`
:doc:`lattice <lattice>`, :doc:`region <region>`,
:doc:`create_box <create_box>`, :doc:`read_data <read_data>`,
:doc:`read_restart <read_restart>`
Default
"""""""

View File

@ -67,20 +67,20 @@ the :doc:`bond_style <bond_style>`, :doc:`bond_coeff <bond_coeff>`,
:doc:`dihedral_coeff <dihedral_coeff>`, :doc:`improper_style <improper_style>`,
:doc:`improper_coeff <improper_coeff>` commands.
The *many* style is useful for adding bonds to a system, e.g. between
nearest neighbors in a lattice of atoms, without having to enumerate
The *many* style is useful for adding bonds to a system (e.g., between
nearest neighbors in a lattice of atoms) without having to enumerate
all the bonds in the data file read by the :doc:`read_data <read_data>`
command.
The *single* styles are useful for adding bonds, angles, dihedrals, impropers
to a system incrementally, then continuing a simulation.
The *single* styles are useful for adding bonds, angles, dihedrals, and
impropers to a system incrementally, then continuing a simulation.
Note that this command does not auto-create any angle, dihedral or improper
interactions when a bond is added. Nor does it auto-create any bonds
when an angle, dihedral or improper is added. Or auto-create any angles when a
dihedral or improper is added. Thus the flexibility of this command is limited.
It can be used several times to create different types of bond at
different distances. But it cannot typically auto-create all the
Note that this command does not auto-create any angle, dihedral, or improper
interactions when a bond is added, nor does it auto-create any bonds
when an angle, dihedral, or improper is added. It also will not auto-create
any angles when a dihedral or improper is added. Thus, the flexibility of this
command is limited. It can be used several times to create different types of
bond at different distances, but it cannot typically auto-create all the
bonds or angles or dihedrals or impropers that would normally be defined in a
data file for a complex system of molecules.
@ -88,36 +88,37 @@ data file for a complex system of molecules.
If the system has no bonds (angles, dihedrals, impropers) to begin with,
or if more bonds per atom are being added than currently exist, then you
must insure that the number of bond types and the maximum number of
bonds per atom are set to large enough values. And similarly for
angles, dihedrals and impropers. Otherwise an error may occur when too many
must ensure that the number of bond types and the maximum number of
bonds per atom are set to large enough values, and similarly for
angles, dihedrals, and impropers, otherwise an error may occur when too many
bonds (angles, dihedrals, impropers) are added to an atom. If the
:doc:`read_data <read_data>` command is used to define the system, these
parameters can be set via the "bond types" and "extra bond per atom"
fields in the header section of the data file. If the
:doc:`create_box <create_box>` command is used to define the system,
these 2 parameters can be set via its optional "bond/types" and
"extra/bond/per/atom" arguments. And similarly for angles, dihedrals and
impropers. See the doc pages for these 2 commands for details.
these two parameters can be set via its optional *bond/types* and
*extra/bond/per/atom* arguments, and similarly for angles, dihedrals, and
impropers. See the doc pages for these two commands for details.
----------
The *many* style will create bonds between pairs of atoms I,J where I
is in one of the two specified groups, and J is in the other. The two
groups can be the same, e.g. group "all". The created bonds will be
of bond type *btype*, where *btype* must be a value between 1 and the
The *many* style will create bonds between pairs of atoms :math:`I,J`,
where :math:`I` is in one of the two specified groups and :math:`J` is in the
other. The two groups can be the same (e.g., group "all"). The created bonds
will be of bond type *btype*, where *btype* must be a value between 1 and the
number of bond types defined.
For a bond to be created, an I,J pair of atoms must be a distance D
apart such that *rmin* <= D <= *rmax*\ .
For a bond to be created, an :math:`I,J` pair of atoms must be a distance
:math:`D` apart such that :math:`r_\text{min} \le D \le r_\text{max}`.
The following settings must have been made in an input script before
this style is used:
* special_bonds weight for 1-2 interactions must be 0.0
* special_bonds weight for 1--2 interactions must be 0.0
* a :doc:`pair_style <pair_style>` must be defined
* no :doc:`kspace_style <kspace_style>` defined
* minimum :doc:`pair_style <pair_style>` cutoff + :doc:`neighbor <neighbor>` skin >= *rmax*
* minimum :doc:`pair_style <pair_style>` cutoff + :doc:`neighbor <neighbor>`
skin :math:`\ge r_\text{max}`
These settings are required so that a neighbor list can be created to
search for nearby atoms. Pairs of atoms that are already bonded
@ -127,12 +128,12 @@ a distance that encompasses the *rmax* for new bonds to create.
.. note::
If you want to create bonds between pairs of 1-3 or 1-4 atoms in
If you want to create bonds between pairs of 1--3 or 1--4 atoms in
the current bond topology, then you need to use :doc:`special_bonds
lj 0 1 1 <special_bonds>` to insure those pairs appear in the
neighbor list. They will not appear with the default special_bonds
settings which are zero for 1-2, 1-3, and 1-4 atoms. 1-3 or 1-4
atoms are those which are 2 hops or 3 hops apart in the bond
settings, which are zero for 1--2, 1--3, and 1--4 atoms. 1--3 or 1--4
atoms are those which are two hops or three hops apart in the bond
topology.
An additional requirement for this style is that your system must be
@ -145,7 +146,7 @@ neighbor list requires initialization and setup of a simulation,
similar to what a :doc:`run <run>` command would require.
Note that you can change any of these settings after this command
executes, e.g. if you wish to use long-range Coulombic interactions
executes (e.g., if you wish to use long-range Coulombic interactions)
via the :doc:`kspace_style <kspace_style>` command for your subsequent
simulation.
@ -158,8 +159,8 @@ between 1 and the number of bond types defined.
The *single/angle* style creates a single angle of type *atype*
between three atoms with IDs *aatom1*, *aatom2*, and *aatom3*\ . The
ordering of the atoms is the same as in the *Angles* section of a data
file read by the :doc:`read_data <read_data>` command. I.e. the 3 atoms are
ordered linearly within the angle; the central atom is *aatom2*\ .
file read by the :doc:`read_data <read_data>` command (i.e., the three atoms
are ordered linearly within the angle; the central atom is *aatom2*).
*Atype* must be a value between 1 and the number of angle types
defined.
@ -180,14 +181,14 @@ the number of improper types defined.
----------
The keyword *special* controls whether an internal list of special
bonds is created after one or more bonds, or a single angle, dihedral or
bonds is created after one or more bonds, or a single angle, dihedral, or
improper is added to the system.
The default value is *yes*\ . A value of *no* cannot be used
with the *many* style.
This is an expensive operation since the bond topology for the system
must be walked to find all 1-2, 1-3, 1-4 interactions to store in an
must be walked to find all 1--2, 1--3, and 1--4 interactions to store in an
internal list, which is used when pairwise interactions are weighted;
see the :doc:`special_bonds <special_bonds>` command for details.
@ -204,10 +205,10 @@ bond (or angle, or dihedral, or improper) is added:
create_bonds single/bond 5 17 386 special no
create_bonds single/bond 4 112 183 special yes
Note that you MUST insure the internal list is re-built after the last
bond (angle, dihedral, improper) is added, before performing a simulation.
Otherwise pairwise interactions will not be properly excluded or
weighted. LAMMPS does NOT check that you have done this correctly.
Note that you **must** ensure the internal list is rebuilt after the last
bond (angle, dihedral, improper) is added, *before* performing a simulation.
Otherwise, pairwise interactions will not be properly excluded or
weighted. LAMMPS does **not** check that you have done this correctly.
----------

View File

@ -50,28 +50,33 @@ The argument N is the number of atom types that will be used in the
simulation.
If the region is not of style *prism*, then LAMMPS encloses the region
(block, sphere, etc) with an axis-aligned orthogonal bounding box
(block, sphere, etc.) with an axis-aligned orthogonal bounding box
which becomes the simulation domain.
If the region is of style *prism*, LAMMPS creates a non-orthogonal
simulation domain shaped as a parallelepiped with triclinic symmetry.
As defined by the :doc:`region prism <region>` command, the
parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by 3
edge vectors starting from the origin given by A = (xhi-xlo,0,0); B =
(xy,yhi-ylo,0); C = (xz,yz,zhi-zlo). *Xy,xz,yz* can be 0.0 or
parallelepiped has its "origin" at (xlo,ylo,zlo) and is defined by three
edge vectors starting from the origin given by
:math:`\vec a = (x_\text{hi}-x_\text{lo},0,0)`;
:math:`\vec b = (xy,y_\text{hi}-y_\text{lo},0)`; and
:math:`\vec c = (xz,yz,z_\text{hi}-z_\text{lo})`.
The parameters *xy*\ , *xz*\ , and *yz* can be 0.0 or
positive or negative values and are called "tilt factors" because they
are the amount of displacement applied to faces of an originally
orthogonal box to transform it into the parallelepiped.
By default, a *prism* region used with the create_box command must
have tilt factors (xy,xz,yz) that do not skew the box more than half
the distance of the parallel box length. For example, if xlo = 2 and
xhi = 12, then the x box length is 10 and the xy tilt factor must be
between -5 and 5. Similarly, both xz and yz must be between
-(xhi-xlo)/2 and +(yhi-ylo)/2. Note that this is not a limitation,
since if the maximum tilt factor is 5 (as in this example), then
configurations with tilt = ..., -15, -5, 5, 15, 25, ... are all
geometrically equivalent. If you wish to define a box with tilt
have tilt factors :math:`(xy,xz,yz)` that do not skew the box more than half
the distance of the parallel box length. For example, if
:math:`x_\text{lo} = 2` and :math:`x_\text{hi} = 12`, then the :math:`x`
box length is 10 and the :math:`xy` tilt factor must be between :math:`-5` and
:math:`5`. Similarly, both :math:`xz` and :math:`yz` must be between
:math:`-(x_\text{hi}-x_\text{lo})/2` and :math:`+(y_\text{hi}-y_\text{lo})/2`.
Note that this is not a limitation, since if the maximum tilt factor is 5 (as
in this example), then configurations with tilt :math:`= \dots, -15`,
:math:`-5`, :math:`5`, :math:`15`, :math:`25, \dots`
are all geometrically equivalent. If you wish to define a box with tilt
factors that exceed these limits, you can use the :doc:`box tilt <box>`
command, with a setting of *large*\ ; a setting of *small* is the
default.
@ -81,18 +86,19 @@ geometric description of triclinic boxes, as defined by LAMMPS, and
how to transform these parameters to and from other commonly used
triclinic representations.
When a prism region is used, the simulation domain should normally be
periodic in the dimension that the tilt is applied to, which is given
by the second dimension of the tilt factor (e.g. y for xy tilt). This
is so that pairs of atoms interacting across that boundary will have
one of them shifted by the tilt factor. Periodicity is set by the
:doc:`boundary <boundary>` command. For example, if the xy tilt factor
is non-zero, then the y dimension should be periodic. Similarly, the
z dimension should be periodic if xz or yz is non-zero. LAMMPS does
not require this periodicity, but you may lose atoms if this is not
When a prism region is used, the simulation domain should normally be periodic
in the dimension that the tilt is applied to, which is given by the second
dimension of the tilt factor (e.g., :math:`y` for :math:`xy` tilt). This is so
that pairs of atoms interacting across that boundary will have one of them
shifted by the tilt factor. Periodicity is set by the
:doc:`boundary <boundary>` command. For example, if the :math:`xy` tilt factor
is non-zero, then the :math:`y` dimension should be periodic. Similarly, the
:math:`z` dimension should be periodic if :math:`xz` or :math:`yz` is non-zero.
LAMMPS does not require this periodicity, but you may lose atoms if this is not
the case.
Also note that if your simulation will tilt the box, e.g. via the :doc:`fix deform <fix_deform>` command, the simulation box must be setup to
Note that if your simulation will tilt the box (e.g., via the
:doc:`fix deform <fix_deform>` command), the simulation box must be set up to
be triclinic, even if the tilt factors are initially 0.0. You can
also change an orthogonal box to a triclinic box or vice versa by
using the :doc:`change box <change_box>` command with its *ortho* and
@ -103,11 +109,11 @@ using the :doc:`change box <change_box>` command with its *ortho* and
If the system is non-periodic (in a dimension), then you should
not make the lo/hi box dimensions (as defined in your
:doc:`region <region>` command) radically smaller/larger than the extent
of the atoms you eventually plan to create, e.g. via the
:doc:`create_atoms <create_atoms>` command. For example, if your atoms
extend from 0 to 50, you should not specify the box bounds as -10000
and 10000. This is because as described above, LAMMPS uses the
specified box size to layout the 3d grid of processors. A huge
of the atoms you eventually plan to create (e.g., via the
:doc:`create_atoms <create_atoms>` command). For example, if your atoms
extend from 0 to 50, you should not specify the box bounds as :math:`-10000`
and :math:`10000`. This is because as described above, LAMMPS uses the
specified box size to lay out the 3d grid of processors. A huge
(mostly empty) box will be sub-optimal for performance when using
"fixed" boundary conditions (see the :doc:`boundary <boundary>`
command). When using "shrink-wrap" boundary conditions (see the
@ -119,23 +125,25 @@ using the :doc:`change box <change_box>` command with its *ortho* and
The optional keywords can be used to create a system that allows for
bond (angle, dihedral, improper) interactions, or for molecules with
special 1-2,1-3,1-4 neighbors to be added later. These optional
special 1--2, 1--3, or 1--4 neighbors to be added later. These optional
keywords serve the same purpose as the analogous keywords that can be
used in a data file which are recognized by the
:doc:`read_data <read_data>` command when it sets up a system.
Note that if these keywords are not used, then the create_box command
creates an atomic (non-molecular) simulation that does not allow bonds
between pairs of atoms to be defined, or a :doc:`bond potential <bond_style>` to be specified, or for molecules with
between pairs of atoms to be defined, or a
:doc:`bond potential <bond_style>` to be specified, or for molecules with
special neighbors to be added to the system by commands such as
:doc:`create_atoms mol <create_atoms>`, :doc:`fix deposit <fix_deposit>`
or :doc:`fix pour <fix_pour>`.
As an example, see the examples/deposit/in.deposit.molecule script,
which deposits molecules onto a substrate. Initially there are no
molecules in the system, but they are added later by the :doc:`fix deposit <fix_deposit>` command. The create_box command in the
molecules in the system, but they are added later by the
:doc:`fix deposit <fix_deposit>` command. The create_box command in the
script uses the bond/types and extra/bond/per/atom keywords to allow
this. If the added molecule contained more than 1 special bond
this. If the added molecule contained more than one special bond
(allowed by default), an extra/special/per/atom keyword would also
need to be specified.

View File

@ -62,7 +62,7 @@ Description
Delete the specified atoms. This command can be used, for example, to
carve out voids from a block of material or to delete created atoms
that are too close to each other (e.g. at a grain boundary).
that are too close to each other (e.g., at a grain boundary).
For style *group*, all atoms belonging to the group are deleted.
@ -78,7 +78,7 @@ first group specified and the other atom is in the second group are
considered. The atom that is in the first group is the one that is
deleted.
Note that it is OK for the two group IDs to be the same (e.g. group
Note that it is OK for the two group IDs to be the same (e.g., group
*all*\ ), or for some atoms to be members of both groups. In these
cases, either atom in the pair may be deleted. Also note that if
there are atoms which are members of both groups, the only guarantee
@ -147,7 +147,7 @@ interactions, is one where the topology of the interactions is
typically defined in the data file read by the :doc:`read_data
<read_data>` command, and where the interactions themselves are
defined with the :doc:`bond_style <bond_style>`, :doc:`angle_style
<angle_style>`, etc commands. If you delete atoms from such a system,
<angle_style>`, etc. commands. If you delete atoms from such a system,
you must be careful not to end up with bonded interactions that are
stored by remaining atoms but which include deleted atoms. This will
cause LAMMPS to generate a "missing atoms" error when the bonded
@ -158,7 +158,7 @@ It the *bond* keyword is set to *yes* then any bond or angle or
dihedral or improper interaction that includes a deleted atom is also
removed from the lists of such interactions stored by non-deleted
atoms. Note that simply deleting interactions due to dangling bonds
(e.g. at a surface) may result in a inaccurate or invalid model for
(e.g., at a surface) may result in a inaccurate or invalid model for
the remaining atoms.
It the *mol* keyword is set to *yes*, then for every atom that is
@ -182,17 +182,17 @@ Restrictions
The *overlap* styles requires inter-processor communication to acquire
ghost atoms and build a neighbor list. This means that your system
must be ready to perform a simulation before using this command (force
fields setup, atom masses set, etc). Since a neighbor list is used to
fields setup, atom masses set, etc.). Since a neighbor list is used to
find overlapping atom pairs, it also means that you must define a
:doc:`pair style <pair_style>` with the minimum force cutoff distance
between any pair of atoms types (plus the :doc:`neighbor <neighbor>`
skin) >= the specified overlap cutoff.
skin) :math:`\ge` the specified overlap cutoff.
If the :doc:`special_bonds <special_bonds>` command is used with a
setting of 0, then a pair of bonded atoms (1-2, 1-3, or 1-4) will not
setting of 0, then a pair of bonded atoms (1--2, 1--3, or 1--4) will not
appear in the neighbor list, and thus will not be considered for
deletion by the *overlap* styles. You probably don't want to be
deleting one atom in a bonded pair anyway.
deletion by the *overlap* styles. You probably do not want to
delete one atom in a bonded pair anyway.
The *bond yes* option cannot be used with molecular systems defined
using molecule template files via the :doc:`molecule <molecule>` and

View File

@ -39,8 +39,8 @@ Examples
Description
"""""""""""
Turn off (or on) molecular topology interactions, i.e. bonds, angles,
dihedrals, impropers. This command is useful for deleting
Turn off (or on) molecular topology interactions (i.e., bonds, angles,
dihedrals, and/or impropers). This command is useful for deleting
interactions that have been previously turned off by bond-breaking
potentials. It is also useful for turning off topology interactions
between frozen or rigid atoms. Pairwise interactions can be turned
@ -54,15 +54,15 @@ keyword to change the behavior.
Several of the styles (\ *atom*, *bond*, *angle*, *dihedral*,
*improper*\ ) take a *type* as an argument. The specified *type* should
be an integer from 0 to N, where N is the number of relevant types
(atom types, bond types, etc). A value of 0 is only relevant for
be an integer from 0 to :math:`N`, where :math:`N` is the number of relevant
types (atom types, bond types, etc.). A value of 0 is only relevant for
style *bond*\ ; see details below. In all cases, a wildcard asterisk
can be used in place of or in conjunction with the *type* argument to
specify a range of types. This takes the form "\*" or "\*n" or "n\*" or
"m\*n". If N = the number of types, then an asterisk with no numeric
values means all types from 0 to N. A leading asterisk means all
specify a range of types. This takes the form "\*" or "\*n" or "m\*" or
"m\*n". If :math:`N` is the number of types, then an asterisk with no numeric
values means all types from 0 to :math:`N`. A leading asterisk means all
types from 0 to n (inclusive). A trailing asterisk means all types
from n to N (inclusive). A middle asterisk means all types from m to
from m to N (inclusive). A middle asterisk means all types from m to
n (inclusive). Note that it is fine to include a type of 0 for
non-bond styles; it will simply be ignored.
@ -79,7 +79,8 @@ must also be of the specified type. Styles *angle*, *dihedral*, and
For style *bond*, you can set the type to 0 to delete bonds that have
been previously broken by a bond-breaking potential (which sets the
bond type to 0 when a bond is broken); e.g. see the :doc:`bond_style quartic <bond_style>` command.
bond type to 0 when a bond is broken); for example, see the
:doc:`bond_style quartic <bond_style>` command.
For style *stats* no interactions are turned off (or on); the status
of all interactions in the specified group is simply reported. This
@ -88,19 +89,19 @@ bond-breaking potential during a previous run.
The default behavior of the delete_bonds command is to turn off
interactions by toggling their type to a negative value, but not to
permanently remove the interaction. E.g. a bond_type of 2 is set to
-2. The neighbor list creation routines will not include such an
permanently remove the interaction. For example, a bond_type of 2 is set to
:math:`-2.` The neighbor list creation routines will not include such an
interaction in their interaction lists. The default is also to not
alter the list of 1-2, 1-3, 1-4 neighbors computed by the
alter the list of 1--2, 1--3, or 1--4 neighbors computed by the
:doc:`special_bonds <special_bonds>` command and used to weight pairwise
force and energy calculations. This means that pairwise computations
will proceed as if the bond (or angle, etc) were still turned on.
will proceed as if the bond (or angle, etc.) were still turned on.
Several keywords can be appended to the argument list to alter the
default behaviors.
The *any* keyword changes the requirement that all atoms in the bond
(angle, etc) must be in the specified group in order to turn-off the
(angle, etc) must be in the specified group in order to turn off the
interaction. Instead, if any of the atoms in the interaction are in
the specified group, it will be turned off (or on if the *undo*
keyword is used).
@ -109,42 +110,43 @@ The *undo* keyword inverts the delete_bonds command so that the
specified bonds, angles, etc are turned on if they are currently
turned off. This means a negative value is toggled to positive. For
example, for style *angle*, if *type* is specified as 2, then all
angles with current type = -2, are reset to type = 2. Note that the
:doc:`fix shake <fix_shake>` command also sets bond and angle types
negative, so this option should not be used on those interactions.
angles with current type = :math:`-2` are reset to type = :math:`2`.
Note that the :doc:`fix shake <fix_shake>` command also sets bond and angle
types negative, so this option should not be used on those interactions.
The *remove* keyword is invoked at the end of the delete_bonds
operation. It causes turned-off bonds (angles, etc) to be removed
operation. It causes turned-off bonds (angles, etc.) to be removed
from each atom's data structure and then adjusts the global bond
(angle, etc) counts accordingly. Removal is a permanent change;
(angle, etc.) counts accordingly. Removal is a permanent change;
removed bonds cannot be turned back on via the *undo* keyword.
Removal does not alter the pairwise 1-2, 1-3, 1-4 weighting list.
Removal does not alter the pairwise 1--2, 1--3, or 1--4 weighting list.
The *special* keyword is invoked at the end of the delete_bonds
operation, after (optional) removal. It re-computes the pairwise 1-2,
1-3, 1-4 weighting list. The weighting list computation treats
operation, after (optional) removal. It re-computes the pairwise 1--2,
1--3, 1--4 weighting list. The weighting list computation treats
turned-off bonds the same as turned-on. Thus, turned-off bonds must
be removed if you wish to change the weighting list.
Note that the choice of *remove* and *special* options affects how
1-2, 1-3, 1-4 pairwise interactions will be computed across bonds that
1--2, 1--3, 1--4 pairwise interactions will be computed across bonds that
have been modified by the delete_bonds command.
Restrictions
""""""""""""
This command requires inter-processor communication to acquire ghost
atoms, to coordinate the deleting of bonds, angles, etc between atoms
atoms, to coordinate the deleting of bonds, angles, etc. between atoms
shared by multiple processors. This means that your system must be
ready to perform a simulation before using this command (force fields
setup, atom masses set, etc). Just as would be needed to run
setup, atom masses set, etc.). Just as would be needed to run
dynamics, the force field you define should define a cutoff
(e.g. through a :doc:`pair_style <pair_style>` command) which is long
(e.g., through a :doc:`pair_style <pair_style>` command) which is long
enough for a processor to acquire the ghost atoms its needs to compute
bond, angle, etc interactions.
bond, angle, etc. interactions.
If deleted bonds (angles, etc) are removed but the 1-2, 1-3, 1-4
weighting list is not re-computed, this can cause a later :doc:`fix shake <fix_shake>` command to fail due to an atom's bonds being
If deleted bonds (or angles, etc.) are removed but the 1--2, 1--3, and 1--4
weighting list is not recomputed, this can cause a later
:doc:`fix shake <fix_shake>` command to fail due to an atom's bonds being
inconsistent with the weighting list. This should only happen if the
group used in the fix command includes both atoms in the bond, in
which case you probably should be recomputing the weighting list.

View File

@ -6,7 +6,7 @@ dielectric command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dielectric value
@ -25,9 +25,9 @@ Description
Set the dielectric constant for Coulombic interactions (pairwise and
long-range) to this value. The constant is unitless, since it is used
to reduce the strength of the interactions. The value is used in the
denominator of the formulas for Coulombic interactions - e.g. a value
denominator of the formulas for Coulombic interactions (e.g., a value
of 4.0 reduces the Coulombic interactions to 25% of their default
strength. See the :doc:`pair_style <pair_style>` command for more
strength). See the :doc:`pair_style <pair_style>` command for more
details.
Restrictions

View File

@ -33,10 +33,10 @@ Dihedral coefficients can also be set in the data file read by the
N can be specified in one of two ways. An explicit numeric value can
be used, as in the first example above. Or a wild-card asterisk can be
used to set the coefficients for multiple dihedral types. This takes the
form "\*" or "\*n" or "n\*" or "m\*n". If N = the number of dihedral 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
form "\*" or "\*n" or "m\*" or "m\*n". If :math:`N` is the number of dihedral
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 N (inclusive). A middle asterisk
means all types from m to n (inclusive).
Note that using a dihedral_coeff command can override a previous setting
@ -51,7 +51,7 @@ for all dihedral types, then overwrite the coeffs for just dihedral type 2:
A line in a data file that specifies dihedral coefficients uses the exact
same format as the arguments of the dihedral_coeff command in an input
script, except that wild-card asterisks should not be used since
coefficients for all N types must be listed in the file. For example,
coefficients for all :math:`N` types must be listed in the file. For example,
under the "Dihedral Coeffs" section of a data file, the line that
corresponds to the first example above would be listed as
@ -69,11 +69,11 @@ page for details.
When comparing the formulas and coefficients for various LAMMPS
dihedral styles with dihedral equations defined by other force fields,
note that some force field implementations divide/multiply the energy
prefactor *K* by the multiple number of torsions that contain the J-K
bond in an I-J-K-L torsion. LAMMPS does not do this, i.e. the listed
dihedral equation applies to each individual dihedral. Thus you need
to define *K* appropriately to account for this difference if
necessary.
prefactor *K* by the multiple number of torsions that contain the
*J*\ --\ *K* bond in an *I*\ -\ *J*\ -\ *K*\ -\ *L* torsion. LAMMPS does
not do this (i.e., the listed dihedral equation applies to each individual
dihedral). Thus, you need to define *K* appropriately to account for this
difference, if necessary.
----------

View File

@ -51,7 +51,7 @@ to be re-specified.
When both a dihedral and pair style is defined, the
:doc:`special_bonds <special_bonds>` command often needs to be used to
turn off (or weight) the pairwise interaction that would otherwise
exist between 4 bonded atoms.
exist between four bonded atoms.
In the formulas listed for each dihedral style, *phi* is the torsional
angle defined by the quadruplet of atoms. This angle has a sign
@ -60,11 +60,11 @@ convention as shown in this diagram:
.. image:: JPG/dihedral_sign.jpg
:align: center
where the I,J,K,L ordering of the 4 atoms that define the dihedral
where the :math:`I,J,K,L` ordering of the four atoms that define the dihedral
is from left to right.
This sign convention effects several of the dihedral styles listed
below (e.g. charmm, helix) in the sense that the energy formula
below (e.g., charmm, helix) in the sense that the energy formula
depends on the sign of phi, which may be reflected in the value of the
coefficients you specify.
@ -73,10 +73,10 @@ coefficients you specify.
When comparing the formulas and coefficients for various LAMMPS
dihedral styles with dihedral equations defined by other force fields,
note that some force field implementations divide/multiply the energy
prefactor *K* by the multiple number of torsions that contain the J-K
bond in an I-J-K-L torsion. LAMMPS does not do this, i.e. the listed
dihedral equation applies to each individual dihedral. Thus you need
to define *K* appropriately via the
prefactor *K* by the multiple number of torsions that contain the
*J*\ --\ *K* bond in an *I*\ --\ *J*\ --\ *K*\ --\ *L* torsion. LAMMPS does
not do this (i.e., the listed dihedral equation applies to each individual
dihedral). Thus, you need to define *K* appropriately via the
:doc:`dihedral_coeff <dihedral_coeff>` command to account for this
difference if necessary.
@ -93,8 +93,9 @@ command.
There are also additional accelerated pair styles included in the
LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs.
The individual style names on the :ref:`Commands dihedral <dihedral>` page are followed by one or
more of (g,i,k,o,t) to indicate which accelerated styles exist.
The individual style names on the :ref:`Commands dihedral <dihedral>` page are
followed by one or more of (g,i,k,o,t) to indicate which accelerated styles
exist.
* :doc:`none <dihedral_none>` - turn off dihedral interactions
* :doc:`zero <dihedral_zero>` - topology but no interactions

View File

@ -6,7 +6,7 @@ dimension command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
dimension N

View File

@ -56,7 +56,7 @@ can be imposed on the system. Or two groups of atoms can be brought
into closer proximity.
The *move* style displaces the group of atoms by the specified 3d
displacement vector. Any of the 3 quantities defining the vector
displacement vector. Any of the three quantities defining the vector
components 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,
@ -78,20 +78,20 @@ doc page for more details.
The *ramp* style displaces atoms a variable amount in one dimension
depending on the atom's coordinate in a (possibly) different
dimension. For example, the second example command displaces atoms in
the x-direction an amount between 0.0 and 5.0 distance units. Each
atom's displacement depends on the fractional distance its y
coordinate is between 2.0 and 20.5. Atoms with y-coordinates outside
the *x*\ -direction an amount between 0.0 and 5.0 distance units. Each
atom's displacement depends on the fractional distance its *y*
coordinate is between 2.0 and 20.5. Atoms with *y*\ -coordinates outside
those bounds will be moved the minimum (0.0) or maximum (5.0) amount.
The *random* style independently moves each atom in the group by a
random displacement, uniformly sampled from a value between -dx and
+dx in the x dimension, and similarly for y and z. Random numbers are
used in such a way that the displacement of a particular atom is the
same, regardless of how many processors are being used.
random displacement, uniformly sampled from a value between :math:`-dx` and
:math:`+dx` in the *x* dimension, and similarly for *y* and *z*.
Random numbers are used in such a way that the displacement of a particular
atom is the same, regardless of how many processors are being used.
The *rotate* style rotates each atom in the group by the angle *theta*
around a rotation axis *R* = (Rx,Ry,Rz) that goes through a point *P* =
(Px,Py,Pz). The direction of rotation for the atoms around the
around a rotation axis :math:`R = (R_x,R_y,R_z)` that goes through a point
:math:`P = (P_x,P_y,P_z)`. The direction of rotation for the atoms around the
rotation axis is consistent with the right-hand rule: if your
right-hand thumb points along *R*, then your fingers wrap around the
axis in the direction of positive theta.
@ -104,10 +104,10 @@ atom's rotation.
Distance units for displacements and the origin point of the *rotate*
style are determined by the setting of *box* or *lattice* for the
*units* keyword. *Box* means distance units as defined by the
:doc:`units <units>` command - e.g. Angstroms for *real* units.
*Lattice* means distance units are in lattice spacings. The
:doc:`lattice <lattice>` command must have been previously used to
define the lattice spacing.
:doc:`units <units>` command (e.g., :math:`\mathrm{\mathring A}` for
*real* or *metal* units). *Lattice* means distance units are in lattice
spacings. The :doc:`lattice <lattice>` command must have been previously used
to define the lattice spacing.
----------
@ -139,7 +139,7 @@ Restrictions
""""""""""""
For a 2d simulation, only rotations around the a vector parallel to
the z-axis are allowed.
the :math:`z`-axis are allowed.
Related commands
""""""""""""""""

View File

@ -176,10 +176,10 @@ 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 one of several styles. The *image* and *movie* styles are
the exception: the *image* style renders a JPG, PNG, or PPM image file
of the atom configuration every N timesteps while the *movie* style
of the atom configuration every :math:`N` timesteps while the *movie* style
combines and compresses them into a movie file; both are discussed in
detail on the :doc:`dump image <dump_image>` page. The timesteps on
which dump output is written can also be controlled by a variable.
@ -188,8 +188,7 @@ See the :doc:`dump_modify every <dump_modify>` command.
Only information for atoms in the specified group is dumped. The
:doc:`dump_modify thresh and region and refresh <dump_modify>` commands
can also alter what atoms are included. Not all styles support
these options; see details on the :doc:`dump_modify <dump_modify>` doc
page.
these options; see details on the :doc:`dump_modify <dump_modify>` doc page.
As described below, the filename determines the kind of output (text
or binary or gzipped, one big file or one per timestep, one big file
@ -231,7 +230,7 @@ by the regular dump styles, which may be required on clusters where
the interface to the high-speed network disallows using the fork()
library call (which is needed for a pipe). For the remainder of this
page, you should thus consider the *atom* and *atom/gz* styles
(etc) to be inter-changeable, with the exception of the required
(etc.) to be inter-changeable, with the exception of the required
filename suffix.
Similarly, the *atom/zstd*, *cfg/zstd*, *custom/zstd*, *local/zstd*,
@ -243,9 +242,9 @@ the compression level in both variants.
As explained below, the *atom/mpiio*, *cfg/mpiio*, *custom/mpiio*, and
*xyz/mpiio* styles are identical in command syntax and in the format
of the dump files they create, to the corresponding styles without
"mpiio", except the single dump file they produce is written in
"mpiio," except the single dump file they produce is written in
parallel via the MPI-IO library. For the remainder of this page,
you should thus consider the *atom* and *atom/mpiio* styles (etc) to
you should thus consider the *atom* and *atom/mpiio* styles (etc.) to
be inter-changeable. The one exception is how the filename is
specified for the MPI-IO styles, as explained below.
@ -285,16 +284,16 @@ For an orthogonal simulation box this information is formatted as:
zlo zhi
where xlo,xhi are the maximum extents of the simulation box in the
x-dimension, and similarly for y and z. The "xx yy zz" represent 6
characters that encode the style of boundary for each of the 6
simulation box boundaries (xlo,xhi and ylo,yhi and zlo,zhi). Each of
the 6 characters is either p = periodic, f = fixed, s = shrink wrap,
or m = shrink wrapped with a minimum value. See 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 sisx 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
: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 3 tilt factors (*xy*, *xz*, *yz*) of the triclinic box,
formatted as follows:
.. parsed-literal::
@ -305,15 +304,15 @@ formatted as follows:
zlo_bound zhi_bound yz
The presence of the text "xy xz yz" in the ITEM line indicates that
the 3 tilt factors will be included on each of the 3 following lines.
the three tilt factors will be included on each of the three following lines.
This bounding box is convenient for many visualization programs. The
meaning of the 6 character flags for "xx yy zz" is the same as above.
meaning of the six character flags for "xx yy zz" is the same as above.
Note that the first two numbers on each line are now xlo_bound instead
of xlo, etc, since they represent a bounding box. See the :doc:`Howto
of xlo, etc. because they represent a bounding box. See the :doc:`Howto
triclinic <Howto_triclinic>` page for a geometric description of
triclinic boxes, as defined by LAMMPS, simple formulas for how the 6
bounding box extents (xlo_bound,xhi_bound,etc) are calculated from the
triclinic boxes, as defined by LAMMPS, simple formulas for how the six
bounding box extents (xlo_bound, xhi_bound, etc.) are calculated from the
triclinic parameters, and how to transform those parameters to and
from other commonly used triclinic representations.
@ -324,8 +323,8 @@ attributes you specify in the dump command for the *custom* style.
For style *atom*, atom coordinates are written to the file, along with
the atom ID and atom type. By default, atom coords are written in a
scaled format (from 0 to 1). I.e. an x value of 0.25 means the atom
is at a location 1/4 of the distance from xlo to xhi of the box
scaled format (from 0 to 1). That is, an :math:`x` value of 0.25 means the
atom is at a location 1/4 of the distance from *xlo* to *xhi* of the box
boundaries. The format can be changed to unscaled coords via the
:doc:`dump_modify <dump_modify>` settings. Image flags can also be
added for each atom via dump_modify.
@ -344,11 +343,11 @@ For style *local*, local output generated by :doc:`computes <compute>`
and :doc:`fixes <fix>` is used to generate lines of output that is
written to the dump file. This local data is typically calculated by
each processor based on the atoms it owns, but there may be zero or
more entities per atom, e.g. a list of bond distances. An explanation
more entities per atom (e.g., a list of bond distances). An explanation
of the possible dump local attributes is given below. Note that by
using input from the :doc:`compute property/local
<compute_property_local>` command with dump local, it is possible to
generate information on bonds, angles, etc that can be cut and pasted
generate information on bonds, angles, etc. that can be cut and pasted
directly into a data file read by the :doc:`read_data <read_data>`
command.
@ -408,18 +407,17 @@ The *xyz* style writes XYZ files, which is a simple text-based
coordinate format that many codes can read. Specifically it has
a line with the number of atoms, then a comment line that is
usually ignored followed by one line per atom with the atom type
and the x-, y-, and z-coordinate of that atom. You can use the
:doc:`dump_modify element <dump_modify>` option to change the output
from using the (numerical) atom type to an element name (or some
other label). This will help many visualization programs to guess
bonds and colors.
and the :math:`x`-, :math:`y`-, and :math:`z`-coordinate of that atom.
You can use the :doc:`dump_modify element <dump_modify>` option to change the
output from using the (numerical) atom type to an element name (or some other
label). This will help many visualization programs to guess bonds and colors.
.. versionadded:: 4May2022
Dump style *yaml* has the same command syntax as style *custom* and
writes YAML format files that can be easily parsed by a variety of data
processing tools and programming languages. Each timestep will be
written as a YAML "document" (i.e. starts with "---" and ends with
written as a YAML "document" (i.e., starts with "---" and ends with
"..."). The style supports writing one file per timestep through the
"\*" wildcard but not multi-processor outputs with the "%" token in the
filename. In addition to per-atom data, :doc:`thermo <thermo>` data can
@ -435,14 +433,14 @@ Below is an example for a YAML format dump created by the following commands.
dump out all yaml 100 dump.yaml id type x y z vx vy vz ix iy iz
dump_modify out time yes units yes thermo yes format 1 %5d format "% 10.6e"
The tags "time", "units", and "thermo" are optional and enabled by the
dump_modify command. The list under the "box" tag has 3 lines for
orthogonal boxes and 4 lines with triclinic boxes, where the first 3 are
the box boundaries and the 4th the three tilt factors (xy, xz, yz). The
"thermo" data follows the format of the *yaml* thermo style. The
"keywords" tag lists the per-atom properties contained in the "data"
columns, which contain a list with one line per atom. The keywords may
be renamed using the dump_modify command same as for the *custom* dump
The tags "time," "units," and "thermo" are optional and enabled by the
dump_modify command. The list under the "box" tag has three lines for
orthogonal boxes and four lines for triclinic boxes, where the first three are
the box boundaries and the fourth the three tilt factors (:math:`xy`,
:math:`xz`, :math:`yz`). The "thermo" data follows the format of the *yaml*
thermo style. The "keywords" tag lists the per-atom properties contained in
the "data" columns, which contain a list with one line per atom. The keywords
may be renamed using the dump_modify command same as for the *custom* dump
style.
.. code-block:: yaml
@ -487,14 +485,14 @@ popular molecular viewing program.
----------
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 also 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 (not allowed
for *dcd* style). The :doc:`dump_modify every <dump_modify>` command
also allows a variable to be used to determine the sequence of
@ -515,19 +513,19 @@ For example, tmp.dump.\* becomes tmp.dump.0, tmp.dump.10000,
tmp.dump.20000, etc. This option is not available for the *dcd* and
*xtc* styles. 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 can make it easier to read a series of dump files
(e.g., 00010), which can make it easier to read a series of dump files
in order with some post-processing tools.
If a "%" character appears in the filename, then each of P processors
writes a portion of the dump file, and the "%" character is replaced
with the processor ID from 0 to P-1. For example, tmp.dump.% becomes
tmp.dump.0, tmp.dump.1, ... tmp.dump.P-1, etc. This creates smaller
files and can be a fast mode of output on parallel machines that support
parallel I/O for output. This option is **not** available for the *dcd*,
*xtc*, *xyz*, and *yaml* styles.
with the processor ID from :math:`0` to :math:`P-1`. For example, tmp.dump.%
becomes tmp.dump.0, tmp.dump.1, ... tmp.dump.:math:`P-1`, etc. This creates
smaller files and can be a fast mode of output on parallel machines that
support parallel I/O for output. This option is **not** available for the
*dcd*, *xtc*, *xyz*, and *yaml* styles.
By default, P = the number of processors meaning one file per
processor, but P can be set to a smaller value via the *nfile* or
By default, :math:`P` is the the number of processors, meaning one file per
processor, but :math:`P` can be set to a smaller value via the *nfile* or
*fileper* keywords of the :doc:`dump_modify <dump_modify>` command.
These options can be the most efficient way of writing out dump files
when running on large numbers of processors.
@ -539,15 +537,15 @@ For the *atom/mpiio*, *cfg/mpiio*, *custom/mpiio*, and *xyz/mpiio*
styles, a single dump file is written in parallel via the MPI-IO
library, which is part of the MPI standard for versions 2.0 and above.
Using MPI-IO requires two steps. First, build LAMMPS with its MPIIO
package installed, e.g.
package installed, viz.,
.. code-block:: bash
make yes-mpiio # installs the MPIIO package
make mpi # build LAMMPS for your platform
Second, use a dump filename which contains ".mpiio". Note that it
does not have to end in ".mpiio", just contain those characters.
Second, use a dump filename which contains ".mpiio." Note that it
does not have to end in ".mpiio," just contain those characters.
Unlike MPI-IO restart files, which must be both written and read using
MPI-IO, the dump files produced by these MPI-IO styles are identical
in format to the files produced by their non-MPI-IO style
@ -564,42 +562,41 @@ MPI-IO.
Note that MPI-IO dump files are one large file which all processors
write to. You thus cannot use the "%" wildcard character described
above in the filename since that specifies generation of multiple
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
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 "\*" or
"%" is also used) is written in binary format. A binary dump file
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
to convert it back to text format (see the :ref:`binary2txt tool <binary>`) or write your own code to read the binary
file. The format of the binary file can be understood by looking at
the tools/binary2txt.cpp file. This option is only available for the
*atom* and *custom* styles.
to convert it back to text format (see the :ref:`binary2txt tool <binary>`) or
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 "%"
is also used) is written in gzipped format. A gzipped dump file will
be about 3x smaller than the text version, but will also take longer
to write. This option is not available for the *dcd* and *xtc*
styles.
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.
----------
Note that in the discussion which follows, for styles which can
reference values from a compute or fix or custom atom property, like
the *custom*\ , *cfg*\ , or *local* styles, the bracketed index I can
the *custom*\ , *cfg*\ , or *local* styles, the bracketed index :math:`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 number of columns in the array, then an
asterisk with no numeric values means all column indices from 1 to N.
specify multiple values. This takes the form "\*" or "\*n" or "m\*"
or "m\*n." If :math:`N` is the number of columns in the array, then an
asterisk with no numeric values means all column 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 columns of the array
had been listed one by one. E.g. these 2 dump commands are
had been listed one by one. For example, these two dump 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
@ -614,13 +611,12 @@ This section explains the local attributes that can be specified as
part of the *local* style.
The *index* attribute can be used to generate an index number from 1
to N for each line written into the dump file, where N is the total
number of local datums from all processors, or lines of output that
to :math:`N` for each line written into the dump file, where :math:`N` is the
total number of local datums from all processors, or lines of output that
will appear in the snapshot. Note that because data from different
processors depend on what atoms they currently own, and atoms migrate
between processor, there is no guarantee that the same index will be
used for the same info (e.g. a particular bond) in successive
snapshots.
used for the same info (e.g., a particular bond) in successive snapshots.
The *c_ID* and *c_ID[I]* attributes allow local vectors or arrays
calculated by a :doc:`compute <compute>` to be output. The ID in the
@ -637,10 +633,10 @@ custom <thermo_style>` command, and per-atom quantities can be output
by the dump custom command.
If *c_ID* is used as a attribute, then the local vector calculated by
the compute is printed. If *c_ID[I]* is used, then I must be in the
range from 1-M, which will print the Ith column of the local array
with M columns calculated by the compute. See the discussion above
for how I can be specified with a wildcard asterisk to effectively
the compute is printed. If *c_ID[i]* is used, then :math:`i` must be in the
range from :math:`1-M`, which will print the Ith column of the local array
with :math:`M` columns calculated by the compute. See the discussion above
for how :math:`i` can be specified with a wildcard asterisk to effectively
specify multiple values.
The *f_ID* and *f_ID[I]* attributes allow local vectors or arrays
@ -649,11 +645,11 @@ should be replaced by the actual ID of the fix that has been defined
previously in the input script.
If *f_ID* is used as a attribute, then the local vector calculated by
the fix is printed. If *f_ID[I]* is used, then I must be in the
range from 1-M, which will print the Ith column of the local with M
columns calculated by the fix. See the discussion above for how I can
be specified with a wildcard asterisk to effectively specify multiple
values.
the fix is printed. If *f_ID[i]* is used, then :math:`i` must be in the
range :math:`1`--:math:`M`, which will print the :math:`i`\ th column of the
local 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.
Here is an example of how to dump bond info for a system, including
the distance and energy of each bond:
@ -674,46 +670,47 @@ The *id*, *mol*, *proc*, *procp1*, *type*, *element*, *mass*, *vx*,
*Id* is the atom ID. *Mol* is the molecule ID, included in the data
file for molecular systems. *Proc* is the ID of the processor (0 to
Nprocs-1) that currently owns the atom. *Procp1* is the proc ID+1,
which can be convenient in place of a *type* attribute (1 to Ntypes)
for coloring atoms in a visualization program. *Type* is the atom
type (1 to Ntypes). *Element* is typically the chemical name of an
element, which you must assign to each type via the :doc:`dump_modify
element <dump_modify>` command. More generally, it can be any string
you wish to associated with an atom type. *Mass* is the atom mass.
*Vx*, *vy*, *vz*, *fx*, *fy*, *fz*, and *q* are components of atom
velocity and force and atomic charge.
:math:`N_\text{procs}-1`) that currently owns the atom.
*Procp1* is the proc ID+1, which can be convenient in place of a *type*
attribute (1 to :math:`N_\text{types}`) for coloring atoms in a visualization
program. *Type* is the atom type (1 to :math:`N_\text{types}`). *Element* is
typically the chemical name of an element, which you must assign to each type
via the :doc:`dump_modify element <dump_modify>` command. More generally, it
can be any string you wish to associated with an atom type. *Mass* is the atom
mass. The quantities *vx*, *vy*, *vz*, *fx*, *fy*, *fz*, and *q* are components
of atom velocity and force and atomic charge.
There are several options for outputting atom coordinates. The *x*,
*y*, *z* attributes write atom coordinates "unscaled", in the
appropriate distance :doc:`units <units>` (Angstroms, 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 box is triclinic
(tilted), then all atom coords will still be between 0.0 and 1.0.
I.e. actual unscaled (x,y,z) = xs\*A + ys\*B + zs\*C, where (A,B,C) are
the non-orthogonal vectors of the simulation box edges, as discussed
on the :doc:`Howto triclinic <Howto_triclinic>` page.
*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
box is triclinic (tilted), then all atom coords will still be between 0.0 and
1.0. The actual unscaled :math:`(x,y,z)` coordinate is
:math:`x_s a + y_s b + z_s c`, where :math:`(a,b,c)` are the non-orthogonal
vectors of the simulation box edges, as discussed on the
:doc:`Howto triclinic <Howto_triclinic>` page.
Use *xu*, *yu*, *zu* if you want the coordinates "unwrapped" by the
Use *xu*, *yu*, and *zu* if you want the coordinates "unwrapped" by the
image flags for each atom. Unwrapped means that if the atom has
passed through a periodic boundary one or more times, the value is
printed for what the coordinate would be if it had not been wrapped
back into the periodic box. Note that using *xu*, *yu*, *zu* means
back into the periodic box. Note that using *xu*, *yu*, and *zu* means
that the coordinate values may be far outside the box bounds printed
with the snapshot. Using *xsu*, *ysu*, *zsu* is similar to using
*xu*, *yu*, *zu*, except that the unwrapped coordinates are scaled by
with the snapshot. Using *xsu*, *ysu*, and *zsu* is similar to using
*xu*, *yu*, and *zu*, except that the unwrapped coordinates are scaled by
the box size. Atoms that have passed through a periodic boundary will
have the corresponding coordinate increased or decreased by 1.0.
The image flags can be printed directly using the *ix*, *iy*, *iz*
The image flags can be printed directly using the *ix*, *iy*, and *iz*
attributes. For periodic dimensions, they specify which image of the
simulation box the atom is considered to be in. An image of 0 means
it is inside the box as defined. A value of 2 means add 2 box lengths
to get the true value. A value of -1 means subtract 1 box length to
to get the true value. A value of :math:`-1` means subtract 1 box length to
get the true value. LAMMPS updates these flags as atoms cross
periodic boundaries during the simulation.
The *mux*, *muy*, *muz* attributes are specific to dipolar systems
The *mux*, *muy*, and *muz* attributes are specific to dipolar systems
defined with an atom style of *dipole*\ . They give the orientation of
the atom's point dipole moment. The *mu* attribute gives the
magnitude of the atom's dipole moment.
@ -724,7 +721,7 @@ style of *sphere*\ .
The *omegax*, *omegay*, and *omegaz* attributes are specific to
finite-size spherical particles that have an angular velocity. Only
certain atom styles, such as *sphere* define this quantity.
certain atom styles, such as *sphere*, define this quantity.
The *angmomx*, *angmomy*, and *angmomz* attributes are specific to
finite-size aspherical particles that have an angular momentum. Only
@ -749,10 +746,10 @@ command. Instead, global quantities can be output by the
can be output by the dump local command.
If *c_ID* is used as a attribute, then the per-atom vector calculated
by the compute is printed. If *c_ID[I]* is used, then I must be in
the range from 1-M, which will print the Ith column of the per-atom
array with M columns calculated by the compute. See the discussion
above for how I can be specified with a wildcard asterisk to
by the compute is printed. If *c_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 compute. See the
discussion above for how :math:`i` can be specified with a wildcard asterisk to
effectively specify multiple values.
The *f_ID* and *f_ID[I]* attributes allow vector or array per-atom
@ -766,11 +763,11 @@ Since it can time-average per-atom quantities produced by any
be written to a dump file.
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 I must be in the
range from 1-M, which will print the Ith column of the per-atom array
with M columns calculated by the fix. See the discussion above for
how I can be specified with a wildcard asterisk to effectively specify
multiple values.
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.
The *v_name* attribute allows per-atom vectors calculated by a
:doc:`variable <variable>` to be output. The name in the attribute
@ -780,8 +777,7 @@ can be referenced, since it is the only style that generates per-atom
values. Variables of style *atom* can reference individual atom
attributes, per-atom attributes, thermodynamic keywords, or invoke
other computes, fixes, or variables when they are evaluated, so this
is a very general means of creating quantities to output to a dump
file.
is a very general means of creating quantities to output to a dump file.
The *i_name*, *d_name*, *i2_name*, *d2_name* attributes refer to
per-atom integer and floating-point vectors or arrays that have been
@ -789,10 +785,10 @@ added via the :doc:`fix property/atom <fix_property_atom>` command.
When that command is used specific names are given to each attribute
which are the "name" portion of these keywords. For arrays *i2_name*
and *d2_name*, the column of the array must also be included following
the name in brackets: e.g. d2_xyz[I], i2_mySpin[I], where I is in the
range from 1-M, where M is the number of columns in the custom array.
See the discussion above for how I can be specified with a wildcard
asterisk to effectively specify multiple values.
the name in brackets (e.g., d2_xyz[i], i2_mySpin[i], where :math:`i` is in the
range from 1 to :math:`M`, where :math:`M` is the number of columns in the
custom array). See the discussion above for how :math:`i` can be specified with
a wildcard asterisk to effectively specify multiple values.
See the :doc:`Modify <Modify>` page for information on how to add
new compute and fix styles to LAMMPS to calculate per-atom quantities
@ -807,9 +803,9 @@ To write gzipped dump files, you must either compile LAMMPS with the
-DLAMMPS_GZIP option or use the styles from the COMPRESS package.
See the :doc:`Build settings <Build_settings>` page for details.
While a dump command is active (i.e. has not been stopped by using
the undump command), no commands may be used that will change the
timestep (e.g. :doc:`reset_timestep <reset_timestep>`). LAMMPS
While a dump command is active (i.e., has not been stopped by using
the :doc:`undump command <undump>`), no commands may be used that will change
the timestep (e.g., :doc:`reset_timestep <reset_timestep>`). LAMMPS
will terminate with an error otherwise.
The *atom/gz*, *cfg/gz*, *custom/gz*, and *xyz/gz* styles are part of
@ -822,7 +818,7 @@ are part of the MPIIO package. They are only enabled if LAMMPS was
built with that package. See the :doc:`Build package <Build_package>`
page for more info.
The *xtc*, *dcd* and *yaml* styles are part of the EXTRA-DUMP package.
The *xtc*, *dcd*, and *yaml* styles are part of the EXTRA-DUMP package.
They are only enabled if LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info.
@ -832,7 +828,8 @@ Related commands
:doc:`dump atom/adios <dump_adios>`, :doc:`dump custom/adios <dump_adios>`,
:doc:`dump cfg/uef <dump_cfg_uef>`, :doc:`dump h5md <dump_h5md>`,
:doc:`dump image <dump_image>`, :doc:`dump molfile <dump_molfile>`,
:doc:`dump_modify <dump_modify>`, :doc:`undump <undump>`, :doc:`write_dump <write_dump>`
:doc:`dump_modify <dump_modify>`, :doc:`undump <undump>`,
:doc:`write_dump <write_dump>`
Default
"""""""

View File

@ -33,7 +33,7 @@ Syntax
*delay* arg = Dstep
Dstep = delay output until this timestep
*element* args = E1 E2 ... EN, where N = # of atom types
E1,...,EN = element name, e.g. C or Fe or Ga
E1,...,EN = element name (e.g., C or Fe or Ga)
*every* arg = N
N = dump every this many timesteps
N can be a variable (see below)
@ -53,7 +53,7 @@ Syntax
*no* to not write the header
*image* arg = *yes* or *no*
*label* arg = string
string = character string (e.g. BONDS) to use in header of dump local file
string = character string (e.g., BONDS) to use in header of dump local file
*maxfiles* arg = Fmax
Fmax = keep only the most recent *Fmax* snapshots (one snapshot per file)
*nfile* arg = Nf
@ -153,8 +153,8 @@ be used if the *append yes* keyword is also used. The *N* argument is
the index of which frame to append to. A negative value can be
specified for *N*, which means a frame counted from the end of the
file. The *at* keyword can only be used if the dump_modify command is
before the first command that causes dump snapshots to be output,
e.g. a :doc:`run <run>` or :doc:`minimize <minimize>` command. Once the
before the first command that causes dump snapshots to be output
(e.g., a :doc:`run <run>` or :doc:`minimize <minimize>` command). Once the
dump file has been opened, this keyword has no further effect.
----------
@ -185,7 +185,7 @@ during an equilibration phase.
----------
The *element* keyword applies only to the dump *cfg*, *xyz*, and
*image* styles. It associates element names (e.g. H, C, Fe) with
*image* styles. It associates element names (e.g., H, C, Fe) with
LAMMPS atom types. See the list of element names at the bottom of
this page.
@ -262,7 +262,7 @@ in file tmp.times:
When using a file-style variable with the *every* keyword, the
file of timesteps must list a first timestep that is beyond the
current timestep (e.g. it cannot be 0). And it must list one or more
current timestep (e.g., it cannot be 0). And it must list one or more
timesteps beyond the length of the run you perform. This is because
the dump command will generate an error if the next timestep it reads
from the file is not a value greater than the current timestep. Thus
@ -275,10 +275,10 @@ in file tmp.times:
The *every/time* keyword can be used with any dump style except the
*dcd* and *xtc* styles. It does two things. It specifies that the
interval between dump snapshots will be set in simulation time,
i.e. in time units of the :doc:`units <units>` command. This can be
useful when the timestep size varies during a simulation run, e.g. by
use of the :doc:`fix dt/reset <fix_dt_reset>` command. The default is
interval between dump snapshots will be set in simulation time
(i.e. in time units of the :doc:`units <units>` command). This can be
useful when the timestep size varies during a simulation run (e.g., by
use of the :doc:`fix dt/reset <fix_dt_reset>` command). The default is
to specify the interval in timesteps; see the *every* keyword. The
*every/time* command also sets the interval value.
@ -340,7 +340,7 @@ file tmp.times:
When using a file-style variable with the *every/time* keyword, the
file of timesteps must list a first time that is beyond the time
associated with the current timestep (e.g. it cannot be 0.0). And
associated with the current timestep (e.g., it cannot be 0.0). And
it must list one or more times beyond the length of the run you
perform. This is because the dump command will generate an error
if the next time it reads from the file is not a value greater than
@ -409,16 +409,16 @@ by the text-based dump styles: *atom*, *local*, *custom*, *cfg*, and
*xyz* styles, and their MPIIO variants. Only the *line* or *none*
options can be used with the *atom* and *xyz* styles.
All the specified format strings are C-style formats, e.g. as used by
All the specified format strings are C-style formats, such as used by
the C/C++ printf() command. The *line* keyword takes a single
argument which is the format string for an entire line of output for
each atom (do not include a trailing "\n"), with N fields, which you
must enclose in quotes if it is more than one field. The *int* and
each atom (do not include a trailing "\n"), with :math:`N` fields, which you
must enclose in quotes if there is more than one field. The *int* and
*float* keywords take a single format argument and are applied to all
integer or floating-point quantities output. The setting for *M
string* also takes a single format argument which is used for the Mth
value output in each line, e.g. the fifth column is output in high
precision for "format 5 %20.15g".
integer or floating-point quantities output. The setting for *M string*
also takes a single format argument which is used for the :math:`M`\ th
value output in each line (e.g., the fifth column is output in high
precision by "format 5 %20.15g").
.. note::
@ -442,7 +442,7 @@ settings, reverting all values to their default format.
corresponding 8-byte form if it is needed when outputting those
values. However, when specifying the *line* option or *format M
string* option for those values, you should specify a format string
appropriate for an 8-byte signed integer, e.g. one with "%ld", if
appropriate for an 8-byte signed integer (e.g., one with "%ld") if
LAMMPS was compiled with the -DLAMMPS_BIGBIG option for 8-byte IDs.
.. note::
@ -462,7 +462,7 @@ settings, reverting all values to their default format.
will output the two atom IDs for atoms in each bond as integers. If
the dump_modify command were omitted, they would appear as
floating-point values, assuming they were large integers (more than 6
floating-point values, assuming they were large integers (more than six
digits). The "index" keyword should use the "%d" format since it is
not generated by a compute or fix, and is stored internally as an
integer.
@ -482,43 +482,43 @@ information typically written to the header.
----------
The *image* keyword applies only to the dump *atom* style. If the
image value is *yes*, 3 flags are appended to each atom's coords which
image value is *yes*, three flags are appended to each atom's coords which
are the absolute box image of the atom in each dimension. For
example, an x image flag of -2 with a normalized coord of 0.5 means
the atom is in the center of the box, but has passed through the box
boundary 2 times and is really 2 box lengths to the left of its
example, an :math:`x` image flag of :math:`-2` with a normalized coord of 0.5
means the atom is in the center of the box, but has passed through the box
boundary twice and is really two box lengths to the left of its
current coordinate. Note that for dump style *custom* these various
values can be printed in the dump file by using the appropriate atom
attributes in the dump command itself.
----------
The *label* keyword applies only to the dump *local* style. When
it writes local information, such as bond or angle topology
to a dump file, it will use the specified *label* to format
the header. By default this includes 2 lines:
The *label* keyword applies only to the dump *local* style.
When it writes local information, such as bond or angle topology
to a dump file, it will use the specified *label* to format the header.
By default this includes two lines:
.. parsed-literal::
ITEM: NUMBER OF ENTRIES
ITEM: ENTRIES ...
The word "ENTRIES" will be replaced with the string specified,
e.g. BONDS or ANGLES.
The word "ENTRIES" will be replaced with the string specified
(e.g., BONDS or ANGLES).
----------
The *maxfiles* keyword can only be used when a '\*' wildcard is
included in the dump file name, i.e. when writing a new file(s) for
each snapshot. The specified *Fmax* is how many snapshots will be
included in the dump file name (i.e., when writing a new file(s) for
each snapshot). The specified *Fmax* is how many snapshots will be
kept. Once this number is reached, the file(s) containing the oldest
snapshot is deleted before a new dump file is written. If the
specified *Fmax* <= 0, then all files are retained.
specified :math:`\text{Fmax} \le 0`, then all files are retained.
This can be useful for debugging, especially if you don't know on what
timestep something bad will happen, e.g. when LAMMPS will exit with an
error. You can dump every timestep, and limit the number of dump
files produced, even if you run for 1000s of steps.
This can be useful for debugging, especially if you do not know on what
timestep something bad will happen (e.g., when LAMMPS will exit with an
error). You can dump every time step and limit the number of dump
files produced, even if you run for thousands of steps.
----------
@ -527,28 +527,29 @@ The *nfile* or *fileper* keywords can be used in conjunction with the
styles except the *dcd*, *image*, *movie*, *xtc*, and *xyz* styles
(for which "%" is not allowed). As explained on the :doc:`dump <dump>`
command doc page, the "%" character causes the dump file to be written
in pieces, one piece for each of P processors. By default P = the
number of processors the simulation is running on. The *nfile* or
*fileper* keyword can be used to set P to a smaller value, which can
in pieces, one piece for each of :math:`P` processors. By default, :math:`P`
is the number of processors the simulation is running on. The *nfile* or
*fileper* keyword can be used to set :math:`P` to a smaller value, which can
be more efficient when running on a large number of processors.
The *nfile* keyword sets P to the specified Nf value. For example, if
Nf = 4, and the simulation is running on 100 processors, 4 files will
be written, by processors 0,25,50,75. Each will collect information
from itself and the next 24 processors and write it to a dump file.
The *nfile* keyword sets :math:`P` to the specified :math:`N_f` value.
For example, if :math:`N_f = 4`, and the simulation is running on 100
processors, four files will be written by processors 0, 25, 50, and 75.
Each will collect information from itself and the next 24 processors and write
it to a dump file.
For the *fileper* keyword, the specified value of Np means write one
file for every Np processors. For example, if Np = 4, every fourth
processor (0,4,8,12,etc) will collect information from itself and the
next 3 processors and write it to a dump file.
For the *fileper* keyword, the specified value of :math:`N_p` means write one
file for every :math:`N_p` processors. For example, if :math:`N_p = 4`,
every fourth processor (0, 4, 8, 12, etc.) will collect information from itself
and the next three processors and write it to a dump file.
----------
The *pad* keyword only applies when the dump filename is specified
with a wildcard "\*" character which becomes the timestep. If *pad* is
0, which is the default, the timestep is converted into a string of
unpadded length, e.g. 100 or 12000 or 2000000. When *pad* is
specified with *Nchar* > 0, the string is padded with leading zeroes
unpadded length (e.g., 100 or 12000 or 2000000). When *pad* is
specified with *Nchar* :math:`>` 0, the string is padded with leading zeroes
so they are all the same length = *Nchar*\ . For example, pad 7 would
yield 0000100, 0012000, 2000000. This can be useful so that
post-processing programs can easily read the files in ascending
@ -570,9 +571,9 @@ because it requires no extra computation.
----------
The *precision* keyword only applies to the dump *xtc* style. A
specified value of N means that coordinates are stored to 1/N
nanometer accuracy, e.g. for N = 1000, the coordinates are written to
1/1000 nanometer accuracy.
specified value of :math:`N` means that coordinates are stored to :math:`1/N`
nanometer accuracy (e.g., for :math:`N = 1000`, the coordinates are written to
:math:`1/1000` nanometer accuracy).
----------
@ -582,7 +583,7 @@ be written, by refreshing a compute that is used as a threshold for
determining which atoms are included in a dump snapshot. The
specified *c_ID* gives the ID of the compute. It is prefixed by "c\_"
to indicate a compute, which is the only current option. At some
point, other options may be added, e.g. fixes or variables.
point, other options may be added (e.g., fixes or variables).
.. note::
@ -615,19 +616,19 @@ commands:
The :doc:`compute displace/atom <compute_displace_atom>` command
calculates the displacement of each atom from its reference position.
The "4" index is the scalar displacement; 1,2,3 are the xyz components
of the displacement. The :doc:`dump_modify thresh <dump_modify>`
command will cause only atoms that have displaced more than 0.6
Angstroms to be output on a given snapshot (assuming metal units).
However, note that when an atom is output, we also need to update the
reference position for that atom to its new coordinates. So that it
will not be output in every snapshot thereafter. That reference
position is stored by :doc:`compute displace/atom <compute_displace_atom>`. So the dump_modify
*refresh* option triggers a call to compute displace/atom at the end
of every dump to perform that update. The *refresh check* option
shown as part of the :doc:`compute displace/atom <compute_displace_atom>` command enables the compute
to respond to the call from the dump command, and update the
appropriate reference positions. This is done be defining an
The "4" index is the scalar displacement; 1, 2, and 3 are the :math:`xyz`
components of the displacement. The :doc:`dump_modify thresh <dump_modify>`
command will cause only atoms that have displaced more than
:math:`0.6~\mathrm{\mathring A}` to be output on a given snapshot (assuming
metal units). However, note that when an atom is output, we also need to
update the reference position for that atom to its new coordinates. So that it
will not be output in every snapshot thereafter. That reference position is
stored by :doc:`compute displace/atom <compute_displace_atom>`. So the
dump_modify *refresh* option triggers a call to compute displace/atom at the
end of every dump to perform that update. The *refresh check* option
shown as part of the :doc:`compute displace/atom <compute_displace_atom>`
command enables the compute to respond to the call from the dump command, and
update the appropriate reference positions. This is done be defining an
:doc:`atom-style variable <variable>`, *check* in this example, which
calculates a Boolean value (0 or 1) for each atom, based on the same
criterion used by dump_modify thresh.
@ -661,18 +662,18 @@ value of *yes* means atom coords are written in normalized units from
0.0 to 1.0 in each box dimension. If the simulation box is triclinic
(tilted), then all atom coords will still be between 0.0 and 1.0. A
value of *no* means they are written in absolute distance units
(e.g. Angstroms or sigma).
(e.g., :math:`\mathrm{\mathring A}` or :math:`\sigma`).
----------
The *sfactor* and *tfactor* keywords only apply to the dump *xtc*
style. They allow customization of the unit conversion factors used
when writing to XTC files. By default they are initialized for
when writing to XTC files. By default, they are initialized for
whatever :doc:`units <units>` style is being used, to write out
coordinates in nanometers and time in picoseconds. I.e. for *real*
coordinates in nanometers and time in picoseconds. For example, for *real*
units, LAMMPS defines *sfactor* = 0.1 and *tfactor* = 0.001, since the
Angstroms and fs used by *real* units are 0.1 nm and 0.001 ps
respectively. If you are using a units system with distance and time
:math:`\mathrm{\mathring A}}` and fs used by *real* units are 0.1 nm and
0.001 ps, respectively. If you are using a units system with distance and time
units far from nm and ps, you may wish to write XTC files with
different units, since the compression algorithm used in XTC files is
most effective when the typical magnitude of position data is between
@ -683,18 +684,19 @@ most effective when the typical magnitude of position data is between
The *sort* keyword determines whether lines of per-atom output in a
snapshot are sorted or not. A sort value of *off* means they will
typically be written in indeterminate order, either in serial or
parallel. This is the case even in serial if the :doc:`atom_modify sort <atom_modify>` option is turned on, which it is by default, to
improve performance. A sort value of *id* means sort the output by
atom ID. A sort value of N or -N means sort the output by the value
in the Nth column of per-atom info in either ascending or descending
order.
parallel. This is the case even in serial if the
:doc:`atom_modify sort <atom_modify>` option is turned on, which it is by
default, to improve performance. A sort value of *id* means sort the output by
atom ID. A sort value of :math:`N` or :math:`-N` means sort the output by the
value in the :math:`N`\ th column of per-atom info in either ascending or
descending order.
The dump *local* style cannot be sorted by atom ID, since there are
typically multiple lines of output per atom. Some dump styles, such
as *dcd* and *xtc*, require sorting by atom ID to format the output
file correctly. If multiple processors are writing the dump file, via
the "%" wildcard in the dump filename and the *nfile* or *fileper*
keywords are set to non-default values (i.e. the number of dump file
keywords are set to non-default values (i.e., the number of dump file
pieces is not equal to the number of procs), then sorting cannot be
performed.
@ -729,11 +731,12 @@ are written to the dump file or included in the image. The possible
attributes that can be tested for are the same as those that can be
specified in the :doc:`dump custom <dump>` command, with the exception
of the *element* attribute, since it is not a numeric value. Note
that a different attributes can be used than those output by the :doc:`dump custom <dump>` command. E.g. you can output the coordinates and
stress of atoms whose energy is above some threshold.
that a different attributes can be used than those output by the
:doc:`dump custom <dump>` command. For example, you can output the coordinates
and stress of atoms whose energy is above some threshold.
If an atom-style variable is used as the attribute, then it can
produce continuous numeric values or effective Boolean 0/1 values
produce continuous numeric values or effective Boolean 0/1 values,
which may be useful for the comparison operator. Boolean values can
be generated by variable formulas that use comparison or Boolean math
operators or special functions like gmask() and rmask() and grmask().
@ -749,7 +752,7 @@ Three examples follow.
dump_modify ... thresh ix != LAST
This will dump atoms which have crossed the periodic x boundary of the
This will dump atoms which have crossed the periodic :math:`x` boundary of the
simulation box since the last dump. (Note that atoms that crossed
once and then crossed back between the two dump timesteps would not be
included.)
@ -769,9 +772,8 @@ region since the last dump.
dump_modify ... thresh v_charge |^ LAST
This will dump atoms whose charge has changed from an absolute value
less than 1/2 to greater than 1/2 (or vice versa) since the last dump.
E.g. due to reactions and subsequent charge equilibration in a
reactive force field.
less than :math:`\frac12` to greater than :math:`\frac12` (or vice versa) since the last dump (e.g., due to reactions and subsequent charge equilibration in a
reactive force field).
The choice of operators listed above are the usual comparison
operators. The XOR operation (exclusive or) is also included as "\|\^".
@ -783,7 +785,7 @@ threshold criterion is met. Otherwise it is not met.
The *time* keyword only applies to the dump *atom*, *custom*, *local*,
and *xyz* styles (and their COMPRESS package versions *atom/gz*,
*custom/gz* and *local/gz*\ ). For the first 3 styles, if set to
*custom/gz* and *local/gz*\ ). For the first three styles, if set to
*yes*, each frame will will contain two extra lines before the "ITEM:
TIMESTEP" entry:
@ -798,7 +800,7 @@ as the timestep value.
This will output the current elapsed simulation time in current
time units equivalent to the :doc:`thermo keyword <thermo_style>` *time*\ .
This is to simplify post-processing of trajectories using a variable time
step, e.g. when using :doc:`fix dt/reset <fix_dt_reset>`.
step (e.g., when using :doc:`fix dt/reset <fix_dt_reset>`).
The default setting is *no*\ .
----------
@ -836,9 +838,8 @@ compression level can be controlled by the :code:`compression_level`
keyword. File names with these styles have to end in either
:code:`.gz` or :code:`.zst`.
GZ supports compression levels from -1 (default), 0 (no compression),
and 1 to
9. 9 being the best compression. The COMPRESS :code:`/gz` styles use 9
GZ supports compression levels from :math:`-1` (default), 0 (no compression),
and 1 to 9, 9 being the best compression. The COMPRESS :code:`/gz` styles use 9
as default compression level.
Zstd offers a wider range of compression levels, including negative