diff --git a/doc/JPG/bondswap.jpg b/doc/JPG/bondswap.jpg new file mode 100644 index 0000000000..24b6028caf Binary files /dev/null and b/doc/JPG/bondswap.jpg differ diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt index da06a35161..0defe6f31a 100644 --- a/doc/Section_commands.txt +++ b/doc/Section_commands.txt @@ -380,6 +380,7 @@ of each style or click on the style itself for a full description: "ave/atom"_fix_ave_atom.html, "ave/spatial"_fix_ave_spatial.html, "ave/time"_fix_ave_time.html, +"bond/swap"_fix_bond_swap.html, "com"_fix_com.html, "coord/original"_fix_coord_original.html, "deform"_fix_deform.html, diff --git a/doc/fix.txt b/doc/fix.txt index 258846fba4..7b84ab4c0c 100644 --- a/doc/fix.txt +++ b/doc/fix.txt @@ -105,6 +105,7 @@ list of fix styles available in LAMMPS: "ave/atom"_fix_ave_atom.html - compute per-atom time-averaged quantities "ave/spatial"_fix_ave_spatial.html - output per-atom quantities by layer "ave/time"_fix_ave_time.html - output time-averaged compute quantities +"bond/swap"_fix_bond_swap.html - Monte Carlo bond swapping "com"_fix_com.html - compute a center-of-mass "coord/original"_fix_coord_original.html - store original coords of each atom "deform"_fix_deform.html - change the simulation box size/shape diff --git a/doc/fix_bond_swap.html b/doc/fix_bond_swap.html new file mode 100644 index 0000000000..91209fc495 --- /dev/null +++ b/doc/fix_bond_swap.html @@ -0,0 +1,182 @@ + +
LAMMPS WWW Site - LAMMPS Documentation - LAMMPS Commands +
+ + + + + + +
+ +

fix bond/swap command +

+

Syntax: +

+
fix ID group-ID bond/swap fraction cutoff seed 
+
+ +

Examples: +

+
fix 1 all bond/swap 0.5 1.5 598934 
+
+

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 +lower the energy of the system more rapidly than dynamics alone would +do it, by enabling instantaneous large conformational changes in a +dense polymer melt. It is designed for use with systems of +FENE bead-spring polymer chains where each polymer is +a linear chain of monomers, but LAMMPS does not enforce this +requirement. +

+

A schematic of the kinds of bond swaps that can occur is shown here: +

+
+
+

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). +

+

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 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. +

+
+ +

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 
+
+

See the compute temp 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 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 command or print this temperature +during thermodyanmic output via the thermo_style +custom command using the appropriate compute-ID. +It also means that changing attributes of thermo_temp will have no +effect on this fix. +

+
+ +

Restart, fix_modify, thermo output, run start/stop, minimize info: +

+

No information about this fix is written to binary restart +files. 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 temp option is supported by this +fix. You can use it to assign a compute you have +defined to this fix which will be used to compute the temperature for +the Boltzmann criterion. +

+

This fix computes two statistical quantities as a 2-vector of output, +which can be accessed by various output +commands. 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 "extensive", meaning they scale with the number of atoms +in the simulation. +

+

No parameter of this fix can be used with the start/stop keywords of +the run command. This fix is not invoked during energy +minimization. +

+

Restrictions: +

+

The setings of the "special_bond" command must be 0,1,1 in order to +use this fix, which is typical of FENE bead-spring chains. +I.e. pairwise interactions between bonded atoms are turned off, but +are turned on between atoms two or three hops away along the chain +backbone. +

+

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 +

+
+ + + +

(Sides) Sides, Grest, Stevens, Plimpton, J Polymer Science B, 42, +199-208 (2004). +

+ diff --git a/doc/fix_bond_swap.txt b/doc/fix_bond_swap.txt new file mode 100755 index 0000000000..8ec804f599 --- /dev/null +++ b/doc/fix_bond_swap.txt @@ -0,0 +1,176 @@ +"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:] + +fix 1 all bond/swap 0.5 1.5 598934 :pre + +[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 +lower the energy of the system more rapidly than dynamics alone would +do it, by enabling instantaneous large conformational changes in a +dense polymer melt. It is designed for use with systems of +"FENE"_bond_fene.html bead-spring polymer chains where each polymer is +a linear chain of monomers, but LAMMPS does not enforce this +requirement. + +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. + +This fix computes two statistical quantities as a 2-vector of output, +which can be accessed by various "output +commands"_Section_howto.html#4_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 +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 "extensive", meaning they scale with the number of atoms +in the simulation. + +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:] + +The setings of the "special_bond" command must be 0,1,1 in order to +use this fix, which is typical of FENE bead-spring chains. +I.e. pairwise interactions between bonded atoms are turned off, but +are turned on between atoms two or three hops away along the chain +backbone. + +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).