Merge branch 'lammps:develop' into mliappy_unified

This commit is contained in:
Steven Anaya
2022-09-22 02:14:54 -06:00
committed by GitHub
66 changed files with 6682 additions and 4795 deletions

View File

@ -15,7 +15,9 @@
General commands
================
An alphabetic list of general LAMMPS commands.
An alphabetic list of general LAMMPS commands. Note that style
commands with many variants, can be more easily accessed via the small
table above.
.. table_from_list::
:columns: 5

View File

@ -165,6 +165,7 @@ OPT.
* :doc:`orient/fcc <fix_orient>`
* :doc:`orient/eco <fix_orient_eco>`
* :doc:`pafi <fix_pafi>`
* :doc:`pair <fix_pair>`
* :doc:`phonon <fix_phonon>`
* :doc:`pimd <fix_pimd>`
* :doc:`planeforce <fix_planeforce>`

View File

@ -328,7 +328,7 @@ removed so this update is **required** to avoid compilation failure.
Split of fix STORE into fix STORE/GLOBAL and fix STORE/PERATOM
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: TBD
.. versionchanged:: 15Sep2022
This change splits the GLOBAL and PERATOM modes of fix STORE into two
separate fixes STORE/GLOBAL and STORE/PERATOM. There was very little
@ -387,7 +387,7 @@ This change is **required** or else the code will not compile.
Use Output::get_dump_by_id() instead of Output::find_dump()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionchanged:: TBD
.. versionchanged:: 15Sep2022
The accessor function to individual dump style instances has been changed
from ``Output::find_dump()`` returning the index of the dump instance in

View File

@ -33,46 +33,6 @@ reference state of a bond. Bonds that are created midway into a run,
such as those created by pouring grains using :doc:`fix pour
<fix_pour>`, are initialized on that timestep.
As bonds can be broken between neighbor list builds, the
:doc:`special_bonds <special_bonds>` command works differently for BPM
bond styles. There are two possible settings which determine how pair
interactions work between bonded particles. First, one can turn off
all pair interactions between bonded particles. Unlike :doc:`bond
quartic <bond_quartic>`, this is not done by subtracting pair forces
during the bond computation but rather by dynamically updating the
special bond list. This is the default behavior of BPM bond styles and
is done by updating the 1-2 special bond list as bonds break. To do
this, LAMMPS requires :doc:`newton <newton>` bond off such that all
processors containing an atom know when a bond breaks. Additionally,
one must do either (A) or (B).
A) Use the following special bond settings
.. code-block:: LAMMPS
special_bonds lj 0 1 1 coul 1 1 1
These settings accomplish two goals. First, they turn off 1-3 and 1-4
special bond lists, which are not currently supported for BPMs. As
BPMs often have dense bond networks, generating 1-3 and 1-4 special
bond lists is expensive. By setting the lj weight for 1-2 bonds to
zero, this turns off pairwise interactions. Even though there are no
charges in BPM models, setting a nonzero coul weight for 1-2 bonds
ensures all bonded neighbors are still included in the neighbor list
in case bonds break between neighbor list builds.
B) Alternatively, one can simply overlay pair interactions such that all
bonded particles also feel pair interactions. This can be
accomplished by using the *overlay/pair* keyword present in all bpm
bond styles and by using the following special bond settings
.. code-block:: LAMMPS
special_bonds lj/coul 1 1 1
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for
more information.
----------
Currently there are two types of bonds included in the BPM
@ -91,12 +51,6 @@ This also requires a unique integrator :doc:`fix nve/bpm/sphere
<fix_nve_bpm_sphere>` which numerically integrates orientation similar
to :doc:`fix nve/asphere <fix_nve_asphere>`.
To monitor the fracture of bonds in the system, all BPM bond styles
have the ability to record instances of bond breakage to output using
the :doc:`dump local <dump>` command. Additionally, one can use
:doc:`compute nbond/atom <compute_nbond_atom>` to tally the current
number of bonds per atom.
In addition to bond styles, a new pair style :doc:`pair bpm/spring
<pair_bpm_spring>` was added to accompany the bpm/spring bond
style. This pair style is simply a hookean repulsion with similar
@ -104,6 +58,73 @@ velocity damping as its sister bond style.
----------
Bond data can be output using a combination of standard LAMMPS commands.
A list of IDs for bonded atoms can be generated using the
:doc:`compute property/local <compute_property_local>` command.
Various properties of bonds can be computed using the
:doc:`compute bond/local <compute_bond_local>` command. This
command allows one to access data saved to the bond's history
such as the reference length of the bond. More information on
bond history data can be found on the documentation pages for the specific
BPM bond styles. Finally, this data can be output using a :doc:`dump local <dump>`
command. As one may output many columns from the same compute, the
:doc:`dump modify <dump_modify>` *colname* option may be used to provide
more helpful column names. An example of this procedure is found in
/examples/bpm/pour/. External software, such as OVITO, can read these dump
files to render bond data.
----------
As bonds can be broken between neighbor list builds, the
:doc:`special_bonds <special_bonds>` command works differently for BPM
bond styles. There are two possible settings which determine how pair
interactions work between bonded particles. First, one can overlay
pair forces with bond forces such that all bonded particles also
feel pair interactions. This can be accomplished by using the *overlay/pair*
keyword present in all bpm bond styles and by using the following special
bond settings
.. code-block:: LAMMPS
special_bonds lj/coul 1 1 1
Alternatively, one can turn off all pair interactions between bonded
particles. Unlike :doc:`bond quartic <bond_quartic>`, this is not done
by subtracting pair forces during the bond computation but rather by
dynamically updating the special bond list. This is the default behavior
of BPM bond styles and is done by updating the 1-2 special bond list as
bonds break. To do this, LAMMPS requires :doc:`newton <newton>` bond off
such that all processors containing an atom know when a bond breaks.
Additionally, one must use the following special bond settings
.. code-block:: LAMMPS
special_bonds lj 0 1 1 coul 1 1 1
These settings accomplish two goals. First, they turn off 1-3 and 1-4
special bond lists, which are not currently supported for BPMs. As
BPMs often have dense bond networks, generating 1-3 and 1-4 special
bond lists is expensive. By setting the lj weight for 1-2 bonds to
zero, this turns off pairwise interactions. Even though there are no
charges in BPM models, setting a nonzero coul weight for 1-2 bonds
ensures all bonded neighbors are still included in the neighbor list
in case bonds break between neighbor list builds.
To monitor the fracture of bonds in the system, all BPM bond styles
have the ability to record instances of bond breakage to output using
the :doc:`dump local <dump>` command. Since one may frequently output
a list of broken bonds and the time they broke, the
:doc:`dump modify <dump_modify>` option *header no* may be useful to
avoid repeatedly printing the header of the dump file. An example of
this procedure is found in /examples/bpm/impact/. Additionally,
one can use :doc:`compute nbond/atom <compute_nbond_atom>` to tally the
current number of bonds per atom.
See the :doc:`Howto <Howto_broken_bonds>` page on broken bonds for
more information.
----------
While LAMMPS has many utilities to create and delete bonds, *only*
the following are currently compatible with BPM bond styles:

View File

@ -1,7 +1,7 @@
Type labels
===========
.. versionadded:: TBD
.. versionadded:: 15Sep2022
Each atom in LAMMPS has an associated numeric atom type. Similarly,
each bond, angle, dihedral, and improper is assigned a bond type,

View File

@ -24,7 +24,7 @@ Examples
Description
"""""""""""
.. versionadded:: TBD
.. versionadded:: 15Sep2022
The *mesocnt* angle style uses the potential

View File

@ -138,15 +138,14 @@ the *overlay/pair* keyword. These settings require specific
restrictions. Further details can be found in the `:doc: how to
<Howto_BPM>` page on BPMs.
If the *store/local* keyword is used, this fix will track bonds that
If the *store/local* keyword is used, an internal fix will track bonds that
break during the simulation. Whenever a bond breaks, data is processed
and transferred to an internal fix labeled *fix_ID*. This allows the
local data to be accessed by other LAMMPS commands.
Following any optional keyword/value arguments, a list of one or more
attributes is specified. These include the IDs of the two atoms in
the bond. The other attributes for the two atoms include the timestep
during which the bond broke and the current/initial center of mass
position of the two atoms.
local data to be accessed by other LAMMPS commands. Following this optional
keyword, a list of one or more attributes is specified. These include the
IDs of the two atoms in the bond. The other attributes for the two atoms
include the timestep during which the bond broke and the current/initial
center of mass position of the two atoms.
Data is continuously accumulated over intervals of *N*
timesteps. At the end of each interval, all of the saved accumulated
@ -177,29 +176,38 @@ Restart and other info
This bond style writes the reference state of each bond to
:doc:`binary restart files <restart>`. Loading a restart file will
properly resume bonds.
properly resume bonds. However, the reference state is NOT
written to data files. Therefore reading a data file will not
restore bonds and will cause their reference states to be redefined.
The single() function of these pair styles returns 0.0 for the energy
of a pairwise interaction, since energy is not conserved in these
dissipative potentials. It also returns only the normal component of
the pairwise interaction force.
The accumulated data is not written to restart files and should be
output before a restart file is written to avoid missing data.
The internal fix calculates a local vector or local array depending on the
number of input values. The length of the vector or number of rows in
the array is the number of recorded, lost interactions. If a single
input is specified, a local vector is produced. If two or more inputs
are specified, a local array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses local values from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS
output options.
If the *store/local* option is used, an internal fix will calculate
a local vector or local array depending on the number of input values.
The length of the vector or number of rows in the array is the number
of recorded, broken bonds. If a single input is specified, a local
vector is produced. If two or more inputs are specified, a local array
is produced where the number of columns = the number of inputs. The
vector or array can be accessed by any command that uses local values
from a compute as input. See the :doc:`Howto output <Howto_output>` page
for an overview of LAMMPS output options.
The vector or array will be floating point values that correspond to
the specified attribute.
The single() function of this bond style returns 0.0 for the energy
of a bonded interaction, since energy is not conserved in these
dissipative potentials. It also returns only the normal component of
the bonded interaction force. However, the single() function also
calculates 7 extra bond quantities. The first 4 are data from the
reference state of the bond including the initial distance between particles
:math:`r_0` followed by the :math:`x`, :math:`y`, and :math:`z` components
of the initial unit vector pointing to particle I from particle J. The next 3
quantities (5-7) are the :math:`x`, :math:`y`, and :math:`z` components
of the total force, including normal and tangential contributions, acting
on particle I.
These extra quantities can be accessed by the :doc:`compute bond/local <compute_bond_local>`
command, as *b1*, *b2*, ..., *b7*\ .
Restrictions
""""""""""""

View File

@ -103,15 +103,14 @@ the *overlay/pair* keyword. These settings require specific
restrictions. Further details can be found in the `:doc: how to
<Howto_BPM>` page on BPMs.
If the *store/local* keyword is used, this fix will track bonds that
If the *store/local* keyword is used, an internal fix will track bonds that
break during the simulation. Whenever a bond breaks, data is processed
and transferred to an internal fix labeled *fix_ID*. This allows the
local data to be accessed by other LAMMPS commands.
Following any optional keyword/value arguments, a list of one or more
attributes is specified. These include the IDs of the two atoms in
the bond. The other attributes for the two atoms include the timestep
during which the bond broke and the current/initial center of mass
position of the two atoms.
local data to be accessed by other LAMMPS commands. Following this optional
keyword, a list of one or more attributes is specified. These include the
IDs of the two atoms in the bond. The other attributes for the two atoms
include the timestep during which the bond broke and the current/initial
center of mass position of the two atoms.
Data is continuously accumulated over intervals of *N*
timesteps. At the end of each interval, all of the saved accumulated
@ -141,28 +140,30 @@ Restart and other info
This bond style writes the reference state of each bond to
:doc:`binary restart files <restart>`. Loading a restart
file will properly resume bonds.
file will properly restore bonds. However, the reference state is NOT
written to data files. Therefore reading a data file will not
restore bonds and will cause their reference states to be redefined.
The single() function of these pair styles returns 0.0 for the energy
of a pairwise interaction, since energy is not conserved in these
dissipative potentials.
The accumulated data is not written to restart files and should be
output before a restart file is written to avoid missing data.
The internal fix calculates a local vector or local array depending on the
number of input values. The length of the vector or number of rows in
the array is the number of recorded, lost interactions. If a single
input is specified, a local vector is produced. If two or more inputs
are specified, a local array is produced where the number of columns =
the number of inputs. The vector or array can be accessed by any
command that uses local values from a compute as input. See the
:doc:`Howto output <Howto_output>` page for an overview of LAMMPS
output options.
If the *store/local* option is used, an internal fix will calculate
a local vector or local array depending on the number of input values.
The length of the vector or number of rows in the array is the number
of recorded, broken bonds. If a single input is specified, a local
vector is produced. If two or more inputs are specified, a local array
is produced where the number of columns = the number of inputs. The
vector or array can be accessed by any command that uses local values
from a compute as input. See the :doc:`Howto output <Howto_output>` page
for an overview of LAMMPS output options.
The vector or array will be floating point values that correspond to
the specified attribute.
The single() function of this bond style returns 0.0 for the energy
of a bonded interaction, since energy is not conserved in these
dissipative potentials. The single() function also calculates an
extra bond quantity, the initial distance :math:`r_0`. This
extra quantity can be accessed by the
:doc:`compute bond/local <compute_bond_local>` command as *b1*\ .
Restrictions
""""""""""""

View File

@ -22,7 +22,7 @@ Examples
Description
"""""""""""
.. versionadded:: TBD
.. versionadded:: 15Sep2022
The *mesocnt* bond style is a wrapper for the :doc:`harmonic
<bond_harmonic>` style, and uses the potential

View File

@ -13,7 +13,7 @@ Syntax
* ID, group-ID are documented in :doc:`compute <compute>` command
* bond/local = style name of this compute command
* one or more values may be appended
* value = *dist* or *dx* or *dy* or *dz* or *engpot* or *force* or *fx* or *fy* or *fz* or *engvib* or *engrot* or *engtrans* or *omega* or *velvib* or *v_name*
* value = *dist* or *dx* or *dy* or *dz* or *engpot* or *force* or *fx* or *fy* or *fz* or *engvib* or *engrot* or *engtrans* or *omega* or *velvib* or *v_name* or *bN*
.. parsed-literal::
@ -29,6 +29,7 @@ Syntax
*omega* = magnitude of bond angular velocity
*velvib* = vibrational velocity along the bond length
*v_name* = equal-style variable with name (see below)
*bN* = bond style specific quantities for allowed N values
* zero or more keyword/args pairs may be appended
* keyword = *set*
@ -47,7 +48,7 @@ Examples
compute 1 all bond/local engpot
compute 1 all bond/local dist engpot force
compute 1 all bond/local dist fx fy fz
compute 1 all bond/local dist fx fy fz b1 b2
compute 1 all bond/local dist v_distsq set dist d
@ -147,6 +148,19 @@ those quantities via the :doc:`compute reduce <compute_reduce>` command
with thermo output, and the :doc:`fix ave/histo <fix_ave_histo>`
command will histogram the length\ :math:`^2` values and write them to a file.
A bond style may define additional bond quantities which can be
accessed as *b1* to *bN*, where N is defined by the bond style. Most
bond styles do not define any additional quantities, so N = 0. An
example of ones that do are the :doc:`BPM bond styles <Howto_bpm>`
which store the reference state between two particles. See
individual bond styles for details.
When using *bN* with bond style *hybrid*, the output will be the Nth
quantity from the sub-style that computes the bonded interaction
(based on bond type). If that sub-style does not define a *bN*,
the output will be 0.0. The maximum allowed N is the maximum number
of quantities provided by any sub-style.
----------
The local data stored by this command is generated by looping over all

View File

@ -93,7 +93,9 @@ Restrictions
Related commands
""""""""""""""""
:doc:`compute pe <compute_pe>`, :doc:`compute bond <compute_bond>`
:doc:`compute pe <compute_pe>`, :doc:`compute bond <compute_bond>`,
:doc:`fix pair <fix_pair>`
Default
"""""""

View File

@ -167,7 +167,7 @@ triangular particles and define the corner points of each triangle.
In addition, the various per-atom quantities listed above for specific
packages are only accessible by this command.
.. versionchanged:: TBD
.. versionchanged:: 15Sep2022
The *espin* property was previously called *spin*.

View File

@ -17,7 +17,7 @@ Syntax
* one or more keyword/value pairs may be appended
* these keywords apply to various dump styles
* keyword = *append* or *at* or *balance* or *buffer* or *delay* or *element* or *every* or *every/time* or *fileper* or *first* or *flush* or *format* or *header* or *image* or *label* or *maxfiles* or *nfile* or *pad* or *pbc* or *precision* or *region* or *refresh* or *scale* or *sfactor* or *sort* or *tfactor* or *thermo* or *thresh* or *time* or *units* or *unwrap*
* keyword = *append* or *at* or *balance* or *buffer* or *colname* or *delay* or *element* or *every* or *every/time* or *fileper* or *first* or *flush* or *format* or *header* or *image* or *label* or *maxfiles* or *nfile* or *pad* or *pbc* or *precision* or *region* or *refresh* or *scale* or *sfactor* or *skip* or *sort* or *tfactor* or *thermo* or *thresh* or *time* or *units* or *unwrap*
.. parsed-literal::
@ -65,6 +65,8 @@ Syntax
*refresh* arg = c_ID = compute ID that supports a refresh operation
*scale* arg = *yes* or *no*
*sfactor* arg = coordinate scaling factor (> 0.0)
*skip* arg = v_name
v_name = variable with name which evaluates to non-zero (skip) or 0
*sort* arg = *off* or *id* or N or -N
off = no sorting of per-atom lines within a snapshot
id = sort per-atom lines by atom ID
@ -179,8 +181,8 @@ extra buffering.
.. versionadded:: 4May2022
The *colname* keyword can be used to change the default header keyword
for dump styles: *atom*, *custom*, and *cfg* and their compressed, ADIOS,
and MPIIO variants. The setting for *ID string* replaces the default
for dump styles: *atom*, *custom*, *cfg*, and *local* and their compressed,
ADIOS, and MPIIO variants. The setting for *ID string* replaces the default
text with the provided string. *ID* can be a positive integer when it
represents the column number counting from the left, a negative integer
when it represents the column number from the right (i.e. -1 is the last
@ -694,14 +696,33 @@ most effective when the typical magnitude of position data is between
----------
.. versionadded:: 15Sep2022
The *skip* keyword can be used with all dump styles. It allows a dump
snapshot to be skipped (not written to the dump file), if a condition
is met. The condition is computed by an :doc:`equal-style variable
<variable>`, which should be specified as v_name, where name is the
variable name. If the variable evaluation returns a non-zero value,
then the dump snapshot is skipped. If it returns zero, the dump
proceeds as usual. Note that :doc:`equal-style variable <variable>`
can contain Boolean operators which effectively evaluate as a true
(non-zero) or false (zero) result.
The *skip* keyword can be useful for debugging purposes, e.g. to dump
only on a particular timestep. Or to limit output to conditions of
interest, e.g. only when the force on some atom exceeds a threshold
value.
----------
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 :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
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
@ -745,8 +766,8 @@ 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. For example, you can output the coordinates
and stress of atoms whose energy is above some threshold.
: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,

View File

@ -312,6 +312,7 @@ accelerated styles exist.
* :doc:`orient/fcc <fix_orient>` - add grain boundary migration force for FCC
* :doc:`orient/eco <fix_orient_eco>` - add generalized grain boundary migration force
* :doc:`pafi <fix_pafi>` - constrained force averages on hyper-planes to compute free energies (PAFI)
* :doc:`pair <fix_pair>` - access per-atom info from pair styles
* :doc:`phonon <fix_phonon>` - calculate dynamical matrix from MD simulations
* :doc:`pimd <fix_pimd>` - Feynman path integral molecular dynamics
* :doc:`planeforce <fix_planeforce>` - constrain atoms to move in a plane

View File

@ -71,6 +71,15 @@ the polymer chains all become interconnected. For this use case, if
angles are defined they should not include bonds between sticker
sites.
.. note::
For the sticker site model, you should set the newton flag for
bonds to "off", via the :doc:`newton on off<newton>` command ("on"
is the default for the 2nd argument). This is to ensure
appropriate randomness in bond selection because the I,J bond will
be stored by both atom I and atom J. LAMMPS cannot check for this,
because it is not aware that a sticker site model is being used.
----------
The bond swapping operation is invoked once every *Nevery* timesteps.
@ -114,11 +123,11 @@ Boltzmann constant, and T is the current temperature of the system.
.. note::
IMPORTANT: Whether the swap is accepted or rejected, no other swaps
are attempted by this processor on this timestep. No other
eligible 4-tuples of atoms are considered. This means that each
processor will perform either a single swap or none on timesteps
this fix is invoked.
Whether the swap is accepted or rejected, no other swaps are
attempted by this processor on this timestep. No other eligible
4-tuples of atoms are considered. This means that each processor
will perform either a single swap or none on timesteps this fix is
invoked.
----------

110
doc/src/fix_pair.rst Normal file
View File

@ -0,0 +1,110 @@
.. index:: fix pair
fix pair command
=======================
Syntax
""""""
.. parsed-literal::
fix ID group-ID pair N pstyle name flag ...
* ID, group-ID are documented in :doc:`fix <fix>` command
* pair = style name of this fix command
* N = invoke this fix once every N timesteps
* pstyle = name of pair style to extract info from (e.g. eam)
* one or more name/flag pairs can be listed
* name = name of quantity the pair style allows extraction of
* flag = 1 if pair style needs to be triggered to produce data for name, 0 if not
Examples
""""""""
.. code-block:: LAMMPS
fix request all pair 100 eam rho 0
fix request all pair 100 amoeba uind 0 uinp 0
Description
"""""""""""
.. versionadded:: 15Sep2022
Extract per-atom quantities from a pair style and store them in this
fix so they can be accessed by other LAMMPS commands, e.g. by a
:doc:`dump <dump>` command or by another :doc:`fix <fix>`,
:doc:`compute <compute>`, or :doc:`variable <variable>` command.
These are example use cases:
* extract per-atom density from :doc:`pair_style eam <pair_eam>` to a dump file
* extract induced dipoles from :doc:`pair_style amoeba <pair_amoeba>` to a dump file
* extract accuracy metrics from a machine-learned potential to trigger output when
a condition is met (see the :doc:`dump_modify skip <dump_modify>` command)
The *N* argument determines how often the fix is invoked.
The *pstyle* argument is the name of the pair style. It can be a
sub-style used in a :doc:`pair_style hybrid <pair_hybrid>` command.
One or more *name/flag* pairs of arguments follow. Each *name* is a
per-atom quantity which the pair style must recognize as an extraction
request. See the doc pages for individual :doc:`pair_styles
<pair_style>` to see what fix pair requests (if any) they support.
The *flag* setting determines whether this fix will also trigger the
pair style to compute the named quantity so it can be extracted. If the
quantity is always computed by the pair style, no trigger is needed;
specify *flag* = 0. If the quantity is not always computed
(e.g. because it is expensive to calculate), then specify *flag* = 1.
This will trigger the quantity to be calculated only on timesteps it is
needed. Again, see the doc pages for individual :doc:`pair_styles
<pair_style>` to determine which fix pair requests (if any) need to be
triggered with a *flag* = 1 setting.
The per-atom data extracted from the pair style is stored by this fix
as either a per-atom vector or array. If there is only one *name*
argument specified and the pair style computes a single value for each
atom, then this fix stores it as a per-atom vector. Otherwise a
per-atom array is created, with its data in the order of the *name*
arguments.
For example, :doc:`pair_style amoeba <pair_amoeba>` allows extraction of
two named quantities: "uind" and "uinp", both of which are 3-vectors for
each atom, i.e. dipole moments. In the example below a 6-column per-atom
array will be created. Columns 1-3 will store the "uind" values;
columns 4-6 will store the "uinp" values.
.. code-block:: LAMMPS
pair_style amoeba
fix ex all pair amoeba 10 uind 0 uinp 0
Restart, fix_modify, output, run start/stop, minimize info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
No information about this fix is written to :doc:`binary restart files
<restart>`. None of the :doc:`fix_modify <fix_modify>` options are
relevant to this fix.
As explained above, this fix produces a per-atom vector or array which
can be accessed by various :doc:`output commands <Howto_output>`. If
an array is produced, the number of columns is the sum of the number
of per-atom quantities produced by each *name* argument requested from
the pair style.
Restrictions
""""""""""""
none
Related commands
""""""""""""""""
:doc:`compute pair <compute_pair>`
Default
"""""""
none

View File

@ -33,7 +33,7 @@ Examples
Description
"""""""""""
.. versionadded:: TBD
.. versionadded:: 15Sep2022
Define alphanumeric type labels to associate with one or more numeric
atom, bond, angle, dihedral or improper types. A collection of type

View File

@ -156,6 +156,20 @@ settings.
----------
.. versionadded:: TBD
The *amoeba* and *hippo* pair styles support extraction of two per-atom
quantities by the :doc:`fix pair <fix_pair>` command. This allows the
quantities to be output to files by the :doc:`dump <dump>` or otherwise
processed by other LAMMPS commands.
The names of the two quantities are "uind" and "uinp" for the induced
dipole moments for each atom. Neither quantity needs to be triggered by
the :doc:`fix pair <fix_pair>` command in order for these pair styles to
calculate it.
----------
Mixing, shift, table, tail correction, restart, rRESPA info
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

View File

@ -59,7 +59,7 @@ include this pair interaction and overlay the pair force over the bond
force or to exclude this pair interaction such that the two particles
only interact via the bond force. See discussion of the *overlay/pair*
option for BPM bond styles and the :doc:`special_bonds <special_bonds>`
command in the `:doc: how to <Howto_BPM>` page on BPMs for more details.
command in the :doc:`how to <Howto_bpm>` page on BPMs for more details.
The following coefficients must be defined for each pair of atom types
via the :doc:`pair_coeff <pair_coeff>` command as in the examples

View File

@ -56,8 +56,10 @@ field. This pairwise thermostat can be used in conjunction with any
:doc:`pair style <pair_style>`, and in leiu of per-particle thermostats
like :doc:`fix langevin <fix_langevin>` or ensemble thermostats like
Nose Hoover as implemented by :doc:`fix nvt <fix_nh>`. To use
*dpd/tstat* as a thermostat for another pair style, use the :doc:`pair_style hybrid/overlay <pair_hybrid>` command to compute both the desired
pair interaction and the thermostat for each pair of particles.
*dpd/tstat* as a thermostat for another pair style, use the
:doc:`pair_style hybrid/overlay <pair_hybrid>` command to compute both
the desired pair interaction and the thermostat for each pair of
particles.
For style *dpd*, the force on atom I due to atom J is given as a sum
of 3 terms
@ -68,29 +70,30 @@ of 3 terms
F^C = & A w(r) \\
F^D = & - \gamma w^2(r) (\hat{r_{ij}} \bullet \vec{v_{ij}}) \\
F^R = & \sigma w(r) \alpha (\Delta t)^{-1/2} \\
w(r) = & 1 - r/r_c
w(r) = & 1 - \frac{r}{r_c}
where :math:`F^C` is a conservative force, :math:`F^D` is a dissipative
force, and :math:`F^R` is a random force. :math:`r_{ij}` is a unit
vector in the direction :math:`r_i - r_j`, :math:`v_{ij}` is the vector
difference in velocities of the two atoms :math:`= \vec{v}_i -
\vec{v}_j`, :math:`\alpha` is a Gaussian random number with zero mean and
unit variance, dt is the timestep size, and w(r) is a weighting factor
that varies between 0 and 1. :math:`r_c` is the cutoff. :math:`\sigma`
is set equal to :math:`\sqrt{2 k_B T \gamma}`, where :math:`k_B` is the
Boltzmann constant and T is the temperature parameter in the pair_style
command.
force, and :math:`F^R` is a random force. :math:`\hat{r_{ij}}` is a
unit vector in the direction :math:`r_i - r_j`, :math:`\vec{v_{ij}}` is
the vector difference in velocities of the two atoms :math:`\vec{v}_i -
\vec{v}_j`, :math:`\alpha` is a Gaussian random number with zero mean
and unit variance, *dt* is the timestep size, and :math:`w(r)` is a
weighting factor that varies between 0 and 1. :math:`r_c` is the
pairwise cutoff. :math:`\sigma` is set equal to :math:`\sqrt{2 k_B T
\gamma}`, where :math:`k_B` is the Boltzmann constant and *T* is the
temperature parameter in the pair_style command.
For style *dpd/tstat*, the force on atom I due to atom J is the same
as the above equation, except that the conservative Fc term is
dropped. Also, during the run, T is set each timestep to a ramped
value from Tstart to Tstop.
For style *dpd/tstat*, the force on atom I due to atom J is the same as
the above equation, except that the conservative :math:`F^C` term is
dropped. Also, during the run, *T* is set each timestep to a ramped
value from *Tstart* to *Tstop*.
For style *dpd*, the pairwise energy associated with style *dpd* is
only due to the conservative force term Fc, and is shifted to be zero
at the cutoff distance Rc. The pairwise virial is calculated using
all 3 terms. For style *dpd/tstat* there is no pairwise energy, but
the last two terms of the formula make a contribution to the virial.
For style *dpd*, the pairwise energy associated with style *dpd* is only
due to the conservative force term :math:`F^C`, and is shifted to be
zero at the cutoff distance :math:`r_c`. The pairwise virial is
calculated using all 3 terms. For style *dpd/tstat* there is no
pairwise energy, but the last two terms of the formula make a
contribution to the virial.
For style *dpd*, the following coefficients must be defined for each
pair of atoms types via the :doc:`pair_coeff <pair_coeff>` command as in
@ -146,8 +149,8 @@ I,J pairs must be specified explicitly.
These pair styles do not support the :doc:`pair_modify <pair_modify>`
shift option for the energy of the pair interaction. Note that as
discussed above, the energy due to the conservative Fc term is already
shifted to be 0.0 at the cutoff distance Rc.
discussed above, the energy due to the conservative :math:`F^C` term is already
shifted to be 0.0 at the cutoff distance :math:`r_c`.
The :doc:`pair_modify <pair_modify>` table option is not relevant
for these pair styles.

View File

@ -58,32 +58,27 @@ given as a sum of 3 terms
F^C = & A w(r) \\
F^D = & - \gamma w^2(r) (\hat{r_{ij}} \bullet \vec{v_{ij}}) \\
F^R = & \sigma w(r) \alpha (\Delta t)^{-1/2} \\
w(r) = & 1 - r/r_c
w(r) = & 1 - \frac{r}{r_c}
where :math:`F^C` is a conservative force, :math:`F^D` is a dissipative
force, and :math:`F^R` is a random force. :math:`r_{ij}` is a unit
vector in the direction :math:`r_i - r_j`, :math:`V_{ij} is the vector
difference in velocities of the two atoms :math:`= \vec{v}_i -
\vec{v}_j, :math:`\alpha` is a Gaussian random number with zero mean and
unit variance, dt is the timestep size, and w(r) is a weighting factor
that varies between 0 and 1. Rc is the cutoff. The weighting factor,
:math:`\omega_{ij}`, varies between 0 and 1, and is chosen to have the
following functional form:
force, and :math:`F^R` is a random force. :math:`\hat{r_{ij}}` is a
unit vector in the direction :math:`r_i - r_j`, :math:`\vec{v_{ij}}` is
the vector difference in velocities of the two atoms, :math:`\vec{v}_i -
\vec{v}_j`, :math:`\alpha` is a Gaussian random number with zero mean
and unit variance, *dt* is the timestep size, and :math:`w(r)` is a
weighting factor that varies between 0 and 1, :math:`r_c` is the
pairwise cutoff. Note that alternative definitions of the weighting
function exist, but would have to be implemented as a separate pair
style command.
.. math::
\omega_{ij} = 1 - \frac{r_{ij}}{r_{c}}
Note that alternative definitions of the weighting function exist, but
would have to be implemented as a separate pair style command.
For style *dpd/fdt*, the fluctuation-dissipation theorem defines :math:`\gamma`
to be set equal to :math:`\sigma^2/(2 T)`, where T is the set point
temperature specified as a pair style parameter in the above examples.
The following coefficients must be defined for each pair of atoms types
via the :doc:`pair_coeff <pair_coeff>` command as in the examples above,
or in the data file or restart files read by the
:doc:`read_data <read_data>` or :doc:`read_restart <read_restart>` commands:
For style *dpd/fdt*, the fluctuation-dissipation theorem defines
:math:`\gamma` to be set equal to :math:`\sigma^2/(2 T)`, where *T* is the
set point temperature specified as a pair style parameter in the above
examples. The following coefficients must be defined for each pair of
atoms types via the :doc:`pair_coeff <pair_coeff>` command as in the
examples above, or in the data file or restart files read by the
:doc:`read_data <read_data>` or :doc:`read_restart <read_restart>`
commands:
* A (force units)
* :math:`\sigma` (force\*time\^(1/2) units)
@ -94,9 +89,9 @@ cutoff is used.
Style *dpd/fdt/energy* is used to perform DPD simulations under
isoenergetic and isoenthalpic conditions. The fluctuation-dissipation
theorem defines :math:`\gamma` to be set equal to :math:`sigma^2/(2
\theta)`, where :math:theta` is the average internal temperature for the
pair. The particle internal temperature is related to the particle
theorem defines :math:`\gamma` to be set equal to :math:`\sigma^2/(2
\theta)`, where :math:`\theta` is the average internal temperature for
the pair. The particle internal temperature is related to the particle
internal energy through a mesoparticle equation of state (see :doc:`fix
eos <fix>`). The differential internal conductive and mechanical
energies are computed within style *dpd/fdt/energy* as:
@ -116,15 +111,15 @@ where
\sigma^{2}_{ij} = & 2\gamma_{ij}k_{B}\Theta_{ij} \\
\Theta_{ij}^{-1} = & \frac{1}{2}(\frac{1}{\theta_{i}}+\frac{1}{\theta_{j}})
:math:`\zeta_ij^q` is a second Gaussian random number with zero mean and unit
variance that is used to compute the internal conductive energy. The
fluctuation-dissipation theorem defines :math:`alpha^2` to be set
equal to :math:2k_B\kappa`, where :math:`\kappa` is the mesoparticle thermal
conductivity parameter. The following coefficients must be defined for
each pair of atoms types via the :doc:`pair_coeff <pair_coeff>`
command as in the examples above, or in the data file or restart files
read by the :doc:`read_data <read_data>` or :doc:`read_restart <read_restart>`
commands:
:math:`\zeta_ij^q` is a second Gaussian random number with zero mean and
unit variance that is used to compute the internal conductive
energy. The fluctuation-dissipation theorem defines :math:`alpha^2` to
be set equal to :math:`2k_B\kappa`, where :math:`\kappa` is the
mesoparticle thermal conductivity parameter. The following coefficients
must be defined for each pair of atoms types via the :doc:`pair_coeff
<pair_coeff>` command as in the examples above, or in the data file or
restart files read by the :doc:`read_data <read_data>` or
:doc:`read_restart <read_restart>` commands:
* A (force units)
* :math:`\sigma` (force\*time\^(1/2) units)
@ -135,23 +130,23 @@ The last coefficient is optional. If not specified, the global DPD
cutoff is used.
The pairwise energy associated with styles *dpd/fdt* and
*dpd/fdt/energy* is only due to the conservative force term Fc, and is
shifted to be zero at the cutoff distance Rc. The pairwise virial is
calculated using only the conservative term.
*dpd/fdt/energy* is only due to the conservative force term :math:`F^C`,
and is shifted to be zero at the cutoff distance :math:`r_c`. The
pairwise virial is calculated using only the conservative term.
The forces computed through the *dpd/fdt* and *dpd/fdt/energy* styles
can be integrated with the velocity-Verlet integration scheme or the
Shardlow splitting integration scheme described by :ref:`(Lisal) <Lisal3>`.
In the cases when these pair styles are combined with the
Shardlow splitting integration scheme described by :ref:`(Lisal)
<Lisal3>`. In the cases when these pair styles are combined with the
:doc:`fix shardlow <fix_shardlow>`, these pair styles differ from the
other dpd styles in that the dissipative and random forces are split
from the force calculation and are not computed within the pair style.
Thus, only the conservative force is computed by the pair style,
while the stochastic integration of the dissipative and random forces
are handled through the Shardlow splitting algorithm approach. The
Shardlow splitting algorithm is advantageous, especially when
performing DPD under isoenergetic conditions, as it allows
significantly larger timesteps to be taken.
Thus, only the conservative force is computed by the pair style, while
the stochastic integration of the dissipative and random forces are
handled through the Shardlow splitting algorithm approach. The Shardlow
splitting algorithm is advantageous, especially when performing DPD
under isoenergetic conditions, as it allows significantly larger
timesteps to be taken.
----------
@ -162,8 +157,9 @@ significantly larger timesteps to be taken.
Restrictions
""""""""""""
These commands are part of the DPD-REACT package. They are only
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
These commands are part of the DPD-REACT package. They are only enabled
if LAMMPS was built with that package. See the :doc:`Build package
<Build_package>` page for more info.
Pair styles *dpd/fdt* and *dpd/fdt/energy* require use of the
:doc:`comm_modify vel yes <comm_modify>` option so that velocities are

View File

@ -444,6 +444,20 @@ identical to the FS EAM files (see above).
----------
.. versionadded:: TBD
The *eam*, *eam/alloy*, *eam/fs*, and *eam/he* pair styles support
extraction of two per-atom quantities by the :doc:`fix pair <fix_pair>`
command. This allows the quantities to be output to files by the
:doc:`dump <dump>` or otherwise processed by other LAMMPS commands.
The names of the two quantities are "rho" and "fp" for the density and
derivative of the embedding energy for each atom. Neither quantity
needs to be triggered by the :doc:`fix pair <fix_pair>` command in order
for these pair styles to calculate it.
----------
.. include:: accel_styles.rst
----------
@ -459,21 +473,26 @@ a pair_coeff command with I != J arguments for the eam styles.
This pair style does not support the :doc:`pair_modify <pair_modify>`
shift, table, and tail options.
The eam pair styles do not write their information to :doc:`binary restart files <restart>`, since it is stored in tabulated potential files.
Thus, you need to re-specify the pair_style and pair_coeff commands in
an input script that reads a restart file.
The eam pair styles do not write their information to :doc:`binary
restart files <restart>`, since it is stored in tabulated potential
files. Thus, you need to re-specify the pair_style and pair_coeff
commands in an input script that reads a restart file.
The eam pair styles can only be used via the *pair* keyword of the
:doc:`run_style respa <run_style>` command. They do not support the
*inner*, *middle*, *outer* keywords.
----------
Restrictions
""""""""""""
All of these styles are part of the MANYBODY package. They are only
enabled if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
enabled if LAMMPS was built with that package. See the :doc:`Build
package <Build_package>` page for more info.
Related commands
""""""""""""""""

View File

@ -48,7 +48,7 @@ in LAMMPS. For the exact functional form of the potential and
implementation details, the reader is referred to the original papers
:ref:`(Volkov1) <Volkov1>` and :ref:`(Volkov2) <Volkov2>`.
.. versionchanged:: TBD
.. versionchanged:: 15Sep2022
The potential supports two modes, *segment* and *chain*. By default,
*chain* mode is enabled. In *segment* mode, interactions are
@ -84,7 +84,7 @@ is faster and is enabled by default.
IDs. If this is not possible (e.g. in simulations of CNT rings),
*topology* mode needs to be enabled in the pair_style command.
.. versionadded:: TBD
.. versionadded:: 15Sep2022
In addition to the LJ interactions described above, style
*mesocnt/viscous* explicitly models friction between neighboring

View File

@ -282,25 +282,25 @@ the orientation of a particular atom is the same, regardless of how
many processors are being used. This keyword does not allow use of an
atom-style variable.
.. versionchanged:: TBD
.. versionchanged:: 15Sep2022
Keyword *spin/atom* uses the specified g value to set the magnitude of the
magnetic spin vectors, and the x,y,z values as components of a vector
to set as the orientation of the magnetic spin vectors of the selected
atoms. This keyword was previously called *spin*.
.. versionchanged:: TBD
.. versionchanged:: 15Sep2022
Keyword *spin/atom/random* randomizes the orientation of the magnetic spin
vectors for the selected atoms and sets the magnitude of each to the
specified *Dlen* value. This keyword was previously called *spin/random*.
.. versionadded:: TBD
.. versionadded:: 15Sep2022
Keyword *radius/electron* uses the specified value to set the radius of
electrons or fixed cores.
.. versionadded:: TBD
.. versionadded:: 15Sep2022
Keyword *spin/electron* sets the spin of an electron (+/- 1) or indicates
nuclei (=0), fixed-cores (=2), or pseudo-cores (= 3).