2008-05-16 05:21:50 +08:00
|
|
|
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
|
|
|
|
|
|
|
:link(lws,http://lammps.sandia.gov)
|
|
|
|
:link(ld,Manual.html)
|
|
|
|
:link(lc,Section_commands.html#comm)
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
fix bond/swap command :h3
|
|
|
|
|
|
|
|
[Syntax:]
|
|
|
|
|
|
|
|
fix ID group-ID bond/swap fraction cutoff seed :pre
|
|
|
|
|
|
|
|
ID, group-ID are documented in "fix"_fix.html command
|
|
|
|
bond/swap = style name of this fix command
|
|
|
|
fraction = fraction of group atoms to consider for swapping
|
|
|
|
cutoff = distance at which swapping will be considered (distance units)
|
|
|
|
seed = random # seed (positive integer) :ul
|
|
|
|
|
|
|
|
[Examples:]
|
|
|
|
|
2008-07-30 03:56:08 +08:00
|
|
|
fix 1 all bond/swap 0.5 1.3 598934 :pre
|
2008-05-16 05:21:50 +08:00
|
|
|
|
|
|
|
[Description:]
|
|
|
|
|
|
|
|
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
|
2008-07-02 22:18:18 +08:00
|
|
|
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
|
2009-04-02 22:09:47 +08:00
|
|
|
"FENE"_bond_fene.html or "harmonic"_bond_harmonic.html bead-spring
|
|
|
|
polymer chains where each polymer is a linear chain of monomers, but
|
|
|
|
LAMMPS does not enforce this requirement, i.e. any
|
|
|
|
"bond_style"_bond_style.html can be used.
|
2008-05-16 05:21:50 +08:00
|
|
|
|
|
|
|
A schematic of the kinds of bond swaps that can occur is shown here:
|
|
|
|
|
|
|
|
:c,image(JPG/bondswap.jpg)
|
|
|
|
|
|
|
|
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 provides
|
|
|
|
more details on how the algorithm works and its application:
|
|
|
|
"(Sides)"_#Sides.
|
|
|
|
|
|
|
|
The bond swapping operation is invoked each time neighbor lists are
|
|
|
|
built during a simulation, since it potentially alters the list of
|
|
|
|
which neighbors are considered for pairwise interaction. At each
|
|
|
|
reneighboring step, each processor considers a random specified
|
|
|
|
{fraction} of its atoms as potential swapping monomers for this
|
|
|
|
timestep. Choosing a small {fraction} value can reduce the likelihood
|
|
|
|
of a reverse swap occurring soon after an initial swap.
|
|
|
|
|
|
|
|
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 {cutoff}, 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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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 "read_data"_read_data.html comand.
|
|
|
|
Consider a system of 6-mer chains. You have 3 choices. If the
|
|
|
|
molecule IDs for monomers on each chain are set to 1,2,3,4,5,6 then
|
|
|
|
swaps will conserve 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 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. The third choice is to give all monomers
|
|
|
|
on all chains the same molecule ID, e.g. 0. This will allow a wide
|
|
|
|
variety of swaps to occur, but will NOT conserve chain lengths.
|
|
|
|
|
|
|
|
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 and will NOT conserve chain length. This is probably not what
|
|
|
|
you want for this fix.
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
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 {temp}, as if this command had been issued:
|
|
|
|
|
|
|
|
compute fix-ID_temp all temp :pre
|
|
|
|
|
|
|
|
See the "compute temp"_compute_temp.html 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.
|
|
|
|
|
|
|
|
Note that this is NOT the compute used by thermodynamic output (see
|
|
|
|
the "thermo_style"_thermo_style.html command) with ID = {thermo_temp}.
|
|
|
|
This means you can change the attributes of this fix's temperature
|
|
|
|
(e.g. its degrees-of-freedom) via the
|
|
|
|
"compute_modify"_compute_modify.html command or print this temperature
|
|
|
|
during thermodyanmic output via the "thermo_style
|
|
|
|
custom"_thermo_style.html command using the appropriate compute-ID.
|
|
|
|
It also means that changing attributes of {thermo_temp} will have no
|
|
|
|
effect on this fix.
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
[Restart, fix_modify, thermo output, run start/stop, minimize info:]
|
|
|
|
|
|
|
|
No information about this fix is written to "binary restart
|
|
|
|
files"_restart.html. 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.
|
|
|
|
|
|
|
|
The "fix_modify"_fix_modify.html {temp} option is supported by this
|
|
|
|
fix. You can use it to assign a "compute"_compute.html you have
|
|
|
|
defined to this fix which will be used to compute the temperature for
|
|
|
|
the Boltzmann criterion.
|
|
|
|
|
2010-04-03 00:51:06 +08:00
|
|
|
This fix computes two statistical quantities as a global 2-vector of
|
|
|
|
output, which can be accessed by various "output
|
2011-08-26 01:01:01 +08:00
|
|
|
commands"_Section_howto.html#howto_15. 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
|
2008-05-16 05:21:50 +08:00
|
|
|
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
|
2010-03-03 05:59:33 +08:00
|
|
|
this fix are "intensive".
|
2008-05-16 05:21:50 +08:00
|
|
|
|
|
|
|
No parameter of this fix can be used with the {start/stop} keywords of
|
|
|
|
the "run"_run.html command. This fix is not invoked during "energy
|
|
|
|
minimization"_minimize.html.
|
|
|
|
|
|
|
|
[Restrictions:]
|
|
|
|
|
2011-08-25 23:34:45 +08:00
|
|
|
This fix is part of the "mc" package. It is only enabled if LAMMPS
|
|
|
|
was built with that package. See the "Making
|
2011-08-26 00:46:23 +08:00
|
|
|
LAMMPS"_Section_start.html#start_3 section for more info.
|
2011-08-25 23:34:45 +08:00
|
|
|
|
2008-05-16 05:21:50 +08:00
|
|
|
The setings of the "special_bond" command must be 0,1,1 in order to
|
2009-04-02 22:09:47 +08:00
|
|
|
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.
|
2008-05-16 05:21:50 +08:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
[Related commands:] none
|
|
|
|
|
|
|
|
[Default:] none
|
|
|
|
|
|
|
|
:line
|
|
|
|
|
|
|
|
:link(Sides)
|
|
|
|
[(Sides)] Sides, Grest, Stevens, Plimpton, J Polymer Science B, 42,
|
|
|
|
199-208 (2004).
|