forked from lijiext/lammps
198 lines
9.1 KiB
HTML
198 lines
9.1 KiB
HTML
<HTML>
|
|
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
|
</CENTER>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<HR>
|
|
|
|
<H3>fix bond/swap command
|
|
</H3>
|
|
<P><B>Syntax:</B>
|
|
</P>
|
|
<PRE>fix ID group-ID bond/swap Nevery fraction cutoff seed
|
|
</PRE>
|
|
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
|
|
<LI>bond/swap = style name of this fix command
|
|
<LI>Nevery = attempt bond swapping every this many steps
|
|
<LI>fraction = fraction of group atoms to consider for swapping
|
|
<LI>cutoff = distance at which swapping will be considered (distance units)
|
|
<LI>seed = random # seed (positive integer)
|
|
</UL>
|
|
<P><B>Examples:</B>
|
|
</P>
|
|
<PRE>fix 1 all bond/swap 50 0.5 1.3 598934
|
|
</PRE>
|
|
<P><B>Description:</B>
|
|
</P>
|
|
<P>In a simulation of polymer chains, this command attempts to swap bonds
|
|
between two different chains, effectively grafting the end of one
|
|
chain onto another chain and vice versa. This is done via Monte Carlo
|
|
rules using the Boltzmann acceptance criterion. The purpose is to
|
|
equilibrate the polymer chain conformations more rapidly than dynamics
|
|
alone would do it, by enabling instantaneous large conformational
|
|
changes in a dense polymer melt. The polymer chains should thus more
|
|
rapidly converge to the proper end-to-end distances and radii of
|
|
gyration. It is designed for use with systems of
|
|
<A HREF = "bond_fene.html">FENE</A> or <A HREF = "bond_harmonic.html">harmonic</A> bead-spring
|
|
polymer chains where each polymer is a linear chain of monomers, but
|
|
LAMMPS does not enforce this requirement, i.e. any
|
|
<A HREF = "bond_style.html">bond_style</A> can be used.
|
|
</P>
|
|
<P>A schematic of the kinds of bond swaps that can occur is shown here:
|
|
</P>
|
|
<CENTER><IMG SRC = "JPG/bondswap.jpg">
|
|
</CENTER>
|
|
<P>On the left, the red and blue chains have two monomers A1 and B1 close
|
|
to each other, which are currently bonded to monomers A2 and B2
|
|
respectively within their own chains. The bond swap operation will
|
|
attempt to delete the A1-A2 and B1-B2 bonds and replace them with
|
|
A1-B2 and B1-A2 bonds. If the swap is energetically favorable, the
|
|
two chains on the right are the result and each polymer chain has
|
|
undergone a dramatic conformational change. This reference,
|
|
<A HREF = "#Sides">(Sides)</A> provides more details on how the algorithm works and
|
|
its application:
|
|
</P>
|
|
<P>The bond swapping operation is invoked every <I>Nevery</I> timesteps. If
|
|
any bond is swapped, a re-build of the neighbor lists is triggered,
|
|
since a swap alters the list of which neighbors are considered for
|
|
pairwise interaction. At each invocation, each processor considers a
|
|
random specified <I>fraction</I> of its atoms as potential swapping
|
|
monomers for this timestep. Choosing a small <I>fraction</I> value can
|
|
reduce the likelihood of a reverse swap occurring soon after an
|
|
initial swap.
|
|
</P>
|
|
<P>For each monomer A1, its neighbors are examined to find a possible B1
|
|
monomer. Both A1 and B1 must be in the fix group, their separation
|
|
must be less than the specified <I>cutoff</I>, and the molecule IDs of A1
|
|
and B1 must be the same (see below). If a suitable partner is found,
|
|
the energy change due to swapping the 2 bonds is computed. This
|
|
includes changes in pairwise, bond, and angle energies due to the
|
|
altered connectivity of the 2 chains. Dihedral and improper
|
|
interactions are not allowed to be defined when this fix is used.
|
|
</P>
|
|
<P>If the energy decreases due to the swap operation, the bond swap is
|
|
accepted. If the energy increases it is accepted with probability
|
|
exp(-delta/kT) where delta is the increase in energy, k is the
|
|
Boltzmann constant, and T is the current temperature of the system.
|
|
Whether the swap is accepted or rejected, no other swaps are attempted
|
|
by this processor on this timestep.
|
|
</P>
|
|
<P>The criterion for matching molecule IDs is how bond swaps performed by
|
|
this fix conserve chain length. To use this features you must setup
|
|
the molecule IDs for your polymer chains in a certain way, typically
|
|
in the data file, read by the <A HREF = "read_data.html">read_data</A> comand.
|
|
Consider a system of 6-mer chains. You have 2 choices. If the
|
|
molecule IDs for monomers on each chain are set to 1,2,3,4,5,6 then
|
|
swaps will conserve chain length. For a particular momoner there will
|
|
be only one other monomer on another chain which is a potential swap
|
|
partner. If the molecule IDs for monomers on each chain are set to
|
|
1,2,3,3,2,1 then swaps will conserve chain length but swaps will be
|
|
able to occur at either end of a chain. Thus for a particular monomer
|
|
there will be 2 possible swap partners on another chain. In this
|
|
scenario, swaps can also occur within a single chain, i.e. the two
|
|
ends of a chain swap with each other.
|
|
</P>
|
|
<P>IMPORTANT NOTE: If your simulation uses molecule IDs in the usual way,
|
|
where all monomers on a single chain are assigned the same ID
|
|
(different for each chain), then swaps will only occur within the same
|
|
chain. If you assign the same molecule ID to all monomers in all
|
|
chains then inter-chain swaps will occur, but they will not conserve
|
|
chain length. Neither of these scenarios is probably what you want
|
|
for this fix.
|
|
</P>
|
|
<P>IMPORTANT NOTE: When a bond swap occurs the image flags of monomers in
|
|
the new polymer chains can become inconsistent. See the
|
|
<A HREF = "dump.html">dump</A> command for a discussion of image flags. This is not
|
|
an issue for running dynamics, but can affect calculation of some
|
|
diagnostic quantities or the printing of unwrapped coordinates to a
|
|
dump file.
|
|
</P>
|
|
<HR>
|
|
|
|
<P>This fix computes a temperature each time it is invoked for use by the
|
|
Boltzmann criterion. To do this, the fix creates its own compute of
|
|
style <I>temp</I>, as if this command had been issued:
|
|
</P>
|
|
<PRE>compute fix-ID_temp all temp
|
|
</PRE>
|
|
<P>See the <A HREF = "compute_temp.html">compute temp</A> command for details. Note
|
|
that the ID of the new compute is the fix-ID with underscore + "temp"
|
|
appended and the group for the new compute is "all", so that the
|
|
temperature of the entire system is used.
|
|
</P>
|
|
<P>Note that this is NOT the compute used by thermodynamic output (see
|
|
the <A HREF = "thermo_style.html">thermo_style</A> command) with ID = <I>thermo_temp</I>.
|
|
This means you can change the attributes of this fix's temperature
|
|
(e.g. its degrees-of-freedom) via the
|
|
<A HREF = "compute_modify.html">compute_modify</A> command or print this temperature
|
|
during thermodyanmic output via the <A HREF = "thermo_style.html">thermo_style
|
|
custom</A> command using the appropriate compute-ID.
|
|
It also means that changing attributes of <I>thermo_temp</I> will have no
|
|
effect on this fix.
|
|
</P>
|
|
<HR>
|
|
|
|
<P><B>Restart, fix_modify, thermo output, run start/stop, minimize info:</B>
|
|
</P>
|
|
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
|
|
files</A>. Because the state of the random number generator
|
|
is not saved in restart files, this means you cannot do "exact"
|
|
restarts with this fix, where the simulation continues on the same as
|
|
if no restart had taken place. However, in a statistical sense, a
|
|
restarted simulation should produce the same behavior. Also note that
|
|
each processor generates possible swaps independently of other
|
|
processors. Thus if you repeat the same simulation on a different number
|
|
of processors, the specific swaps performed will be different.
|
|
</P>
|
|
<P>The <A HREF = "fix_modify.html">fix_modify</A> <I>temp</I> option is supported by this
|
|
fix. You can use it to assign a <A HREF = "compute.html">compute</A> you have
|
|
defined to this fix which will be used to compute the temperature for
|
|
the Boltzmann criterion.
|
|
</P>
|
|
<P>This fix computes two statistical quantities as a global 2-vector of
|
|
output, which can be accessed by various <A HREF = "Section_howto.html#howto_15">output
|
|
commands</A>. The first component of the
|
|
vector is the cummulative number of swaps performed by all processors.
|
|
The second component of the vector is the cummulative number of swaps
|
|
attempted (whether accepted or rejected). Note that a swap "attempt"
|
|
only occurs when swap partners meeting the criteria described above
|
|
are found on a particular timestep. The vector values calculated by
|
|
this fix are "intensive".
|
|
</P>
|
|
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
|
|
the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy
|
|
minimization</A>.
|
|
</P>
|
|
<P><B>Restrictions:</B>
|
|
</P>
|
|
<P>This fix is part of the MC package. It is only enabled if LAMMPS was
|
|
built with that package. See the <A HREF = "Section_start.html#start_3">Making
|
|
LAMMPS</A> section for more info.
|
|
</P>
|
|
<P>The setings of the "special_bond" command must be 0,1,1 in order to
|
|
use this fix, which is typical of bead-spring chains with FENE or
|
|
harmonic bonds. This means that pairwise interactions between bonded
|
|
atoms are turned off, but are turned on between atoms two or three
|
|
hops away along the chain backbone.
|
|
</P>
|
|
<P>Currently, energy changes in dihedral and improper interactions due to
|
|
a bond swap are not considered. Thus a simulation that uses this fix
|
|
cannot use a dihedral or improper potential.
|
|
</P>
|
|
<P><B>Related commands:</B> none
|
|
</P>
|
|
<P><B>Default:</B> none
|
|
</P>
|
|
<HR>
|
|
|
|
<A NAME = "Sides"></A>
|
|
|
|
<P><B>(Sides)</B> Sides, Grest, Stevens, Plimpton, J Polymer Science B, 42,
|
|
199-208 (2004).
|
|
</P>
|
|
</HTML>
|