fix/bond create

Hello,

I am using the fix bond/create command to perform a crosslinking event in LAMMPS (lammps-9Dec2014. ). My system contains 100 linear chains of 80 beads each and 250 single/free beads that act as the crosslinker. In the polymer chains, terminal beads are type 2 and the other “mid-chain” beads are type 1. The free crosslinker beads are type 3. In my data file, the terminal beads have 1 bond, mid-chain beads have 2 bonds, and the crosslinker beads have none. I have added “extra” to the special bonds command to account for new 1-2, 1-3, 1-4 interactions, and included “2 extra bonds per atom” in the data file so that the crosslinker can connect two chains (max bonds = 2). I want terminal beads to form 1 bond with the crosslinker (max bonds =1 existing + 1 new = 2) and mid-chain beads to form 1 bond with the crosslinker (max bonds = 2 existing + 1 new = 3). Thus, if all 250 crosslinker beads have maximum bonds, I should expect 500 new bonds to form. Here is the relevant input script:

special_bonds lj 0.0 1.0 1.0 extra 50
pair_modify shift yes
neigh_modify delay 1 check yes

fix 1 all momentum 100 linear 1 1 1
fix 2 all npt temp {T} {T} 2.0 iso 0.0 0.0 2.0
fix 3 all bond/create 1000 1 3 1.3 1 iparam 3 4 jparam 2 5
fix 4 all bond/create 1000 2 3 1.3 1 iparam 2 4 jparam 2 5

thermo_style custom step temp press … f_3[1] f_3[2] f_4[1] f_4[2]
end of script

My thermo output is showing 500 total new bonds formed just from the fix 3 command (between mid-chain beads and crosslinker), and also 47 total new bonds from the fix 4 command (terminal beads and crosslinker). However, I do not understand how 547 bonds is possible. Have I made a mistake somewhere? Thank you for your any suggestions.

You can dump the list of bonds at any point in the simulation

via the dump local and compute bond/local commands. That

should tell you what bonds are being counted in the thermo output.

Steve

Hi Scott. I suggest searching the mail list, there are some other threads on using multiple fix bond create / break. An important point is that each fix bond create acts independently, so the parameters that are given for maxbond, etc apply to that particular fix.

Tim

Thank you Steve and Tim. After reading another thread, I realize that there is not a dynamic update of the bond counts on each atom during the run. I have 2 separate commands that are allowing atom type 3 to form 2 bonds, so it is likely forming 4 bonds total, thus surpassing the total bonds limit that I originally anticipated.

Hi Scott. I suggest searching the mail list, there are some other threads
on using multiple fix bond create / break. An important point is that each
fix bond create acts independently, so the parameters that are given for
maxbond, etc apply to that particular fix.

This is key. Your two fixes keep their own count of the new bonds. One solution
to this problem is to force the fix bond/create to re-count the bonds at each
iteration. Another is to share the bondcount data between fixes. These solutions
require a manual change in the source of the fix.

Regards,

Pierre

PS: alternatively, I have a patch for this
https://github.com/pdebuyl/lammps/tree/fbc_random