expand to angles, dihedrals, impropers

This commit is contained in:
Steve Plimpton
2023-05-02 13:39:37 -06:00
parent fae0ef6cde
commit aa4447413a
4 changed files with 335 additions and 104 deletions

View File

@ -1,9 +1,9 @@
Broken Bonds
============
Typically, bond interactions persist for the duration of a simulation
in LAMMPS. However, some commands allow bonds to break, including the
following:
Typically, molecular bond interactions persist for the duration of a
simulation in LAMMPS. However, some commands break bonds dynamically,
including the following:
* :doc:`bond_style quartic <bond_quartic>`
* :doc:`fix bond/break <fix_bond_break>`
@ -14,39 +14,40 @@ A bond can break if it is stretched beyond a user-defined threshold or
more generally if other criteria are met.
For the quartic bond style, when a bond is broken its bond type is set
to 0 and pairwise forces between the two atoms in the broken bond are
"turned on". Angles, dihedrals, etc cannot be defined for the system
when :doc:`bond_style quartic <bond_quartic>` is used.
to 0 to effectively break it and pairwise forces between the two atoms
in the broken bond are "turned on". Angles, dihedrals, etc cannot be
defined for a system when :doc:`bond_style quartic <bond_quartic>` is
used.
The :doc:`fix bond/break <fix_bond_break>` and :doc:`fix bond/react
<fix_bond_react>` commands allow breaking of bonds within a molecular
topology with also defines angles, dihedrals, etc. These fixes will
update internal topology data structures when bonds are broken, so
that the appropriate angle, dihederal, etc interactions are also
turned off. They will also trigger a rebuild of the neighbor list
topology with may also define angles, dihedrals, etc. These commands
update internal topology data structures to remove broken bonds, as
well as the appropriate angle, dihederal, etc interactions which
include the bond. They also trigger a rebuild of the neighbor list
when this occurs, to turn on the appropriate pairwise forces.
In the BPM package, one can either turn off all pair interactions
between bonded particles or leave them on, overlaying pair forces on
top of bond forces. To remove pair forces, the special bond list is
dynamically updated. More details can be found on the :doc:`Howto BPM
dynamically updated. More details can be found on the :doc:`Howto BPM
<Howto_bpm>` page.
Note that when bonds are dumped to a file via the :doc:`dump local
<dump>` command, bonds with type 0 are not included.
The :doc:`delete_bonds <delete_bonds>` command can also be used to
query the status of broken bonds (type = 0) or permanently delete
them, e.g.:
The :doc:`delete_bonds <delete_bonds>` command can be used to query
the status of broken bonds with type = 0 or permanently delete them,
e.g.:
.. code-block:: LAMMPS
delete_bonds all stats
delete_bonds all bond 0 remove
The compute :doc:`count/type bond <compute_count_type>` command
tallies the current number of bonds for each bond type. It also
tallies broken bonds with type = 0.
The compute :doc:`count/type <compute_count_type>` command tallies the
current number of bonds (or angles, etc) for each bond (angle, etc)
type. It also tallies broken bonds with type = 0.
The compute :doc:`nbond/atom <compute_nbond_atom>` command tallies the
current number of bonds each atom is part of, excluding broken bonds

View File

@ -12,7 +12,7 @@ Syntax
* ID, group-ID are documented in :doc:`compute <compute>` command
* count/type = style name of this compute command
* mode = {atom} or {bond}
* mode = {atom} or {bond} or {angle} or {dihedral} or {improper}
Examples
""""""""
@ -26,28 +26,46 @@ Description
"""""""""""
Define a computation that counts the current number of atoms for each
atom type or the number of bonds for each bond type. The former can
be useful if atoms are added to or deleted from the system in random
ways, e.g. via the :doc:`fix deposit <fix_deposit>`, :doc:`fix pour
<fix_pour>`, or :doc:`fix evaporate <fix_evaporate>` commands. The
latter can be useful in reactive simulations where molecular bonds are
broken or created.
atom type. Or the number of bonds (angles, dihedrals, impropers) for
each bond (angle, dihedral, improper) type.
Note that for this command, bonds are defined as the topological kind
enumerated in a data file, initially read by the :doc:`read_data
The former can be useful if atoms are added to or deleted from the
system in random ways, e.g. via the :doc:`fix deposit <fix_deposit>`,
:doc:`fix pour <fix_pour>`, or :doc:`fix evaporate <fix_evaporate>`
commands. The latter can be useful in reactive simulations where
molecular bonds are broken or created, as well as angles, dihedrals,
impropers.
Note that for this command, bonds (angles, etc) are the topological
kind enumerated in a data file, initially read by the :doc:`read_data
<read_data>` command or defined by the :doc:`molecule <molecule>`
command. They do not refer to implicit bonds defined on-the-fly by
bond-order or reactive pair styles based on the current conformation
of small clusters of atoms.
These commands can create and/or break topological bonds:
These commands can turn off topological bonds (angles, etc) by setting
their bond (angle, etc) types to negative values. This command
includes the turned-off bonds (angles, etc) in the count for each
type:
* :doc:`fix shake <fix_shake>`
* :doc:`delete_bonds <delete_bonds>`
These commands can create and/or break topological bonds (angles,
etc). In the case of breaking, they remove the bond (angle, etc) from
the system, so that they no longer exist (:doc:`bond_style quartic
<bond_quartic>` is the exception, see the discussion below). Thus
they are not included in the counts for each type:
* :doc:`delete_bonds remove <delete_bonds>`
* :doc:`bond_style quartic <bond_quartic>`
* :doc:`fix bond/react <fix_bond_react>`
* :doc:`fix bond/create <fix_bond_create>`
* :doc:`fix bond/break <fix_bond_break>`
* :doc:`bond_style quartic <bond_quartic>`
* :doc:`BPM package <Howto_bpm>` bond styles
----------
If the {mode} setting is {atom} then the count of atoms for each atom
type is tallied. Only atoms in the specified group are counted.
@ -56,11 +74,22 @@ type is tallied. Only bonds with both atoms in the specified group
are counted.
For {mode} = {bond}, broken bonds with a bond type of zero are also
counted. Some of the commands listed above which break bonds, do this
by setting their types to zero. See the :doc:`Howto broken bonds
<Howto_broken_bonds>` doc page for details. Note that the group
setting is ignored for broken bonds; all broken bonds in the system
are counted.
counted. The :doc:`bond_style quartic <bond_quartic>` breaks a bond
by doing this. See the :doc:`Howto broken bonds <Howto_broken_bonds>`
doc page for more details. Note that the group setting is ignored for
broken bonds; all broken bonds in the system are counted.
If the {mode} setting is {angle} then the count of angles for each
angle type is tallied. Only angles with all 3 atoms in the specified
group are counted.
If the {mode} setting is {dihedral} then the count of dihedrals for
each dihedral type is tallied. Only dihedrals with all 4 atoms in the
specified group are counted.
If the {mode} setting is {improper} then the count of impropers for
each improper type is tallied. Only impropers with all 4 atoms in the
specified group are counted.
----------
@ -68,11 +97,12 @@ Output info
"""""""""""
This compute calculates a global vector of counts. If the mode is
{atom}, the vector length is the number of atom types. If the mode is
{bond}, the vector length is the number of bond types.
{atom} or {bond} or {angle} or {dihedral} or {improper}, then the
vector length is the number of atom types or bond types or angle types
or dihedral types or improper types, respectively.
If the mode is {bond} this compute also calculates a global scalar
which is the number of broken bonds.
which is the number of broken bonds with type = 0, as explained above.
These values can be used by any command that uses global scalar or
vector values from a compute as input. See the :doc:`Howto output