Fix bond/create

I have three different types of atoms and three different types of bond types, which are used for each atom type. But the number of bonds attached is way less than the number of bonds that are broken, so by the end of the simulation I am left with only particles.
Could you help me with this?
The code:

units lj
dimension 2
boundary p p p

Specify atoms and bond attributes

atom_style bond
special_bonds lj 1 1 1 coul 1 1 1
newton on off

#Defining a lattice of atoms
lattice sq2 1.0

region rbound sphere 0 0 0 25 units box side in
region sbound sphere 0 0 0 20 units box side in

region boxsim block -30 30 -30 30 -0.1 0.1 units box

create_box 3 boxsim bond/types 3 extra/bond/per/atom 1000 extra/special/per/atom 1000

variable x equal 30
variable y equal 30
variable xx internal 0.0
variable yy internal 0.0
variable v equal “(v_xx)^2 + (v_yy)^2 < 400.0”
variable v2 equal “(v_xx)^2 + (v_yy)^2 > 431.0 && (v_xx)^2 + (v_yy)^2 < 610.0”
variable v1 equal “(v_xx)^2 + (v_yy)^2 > 625.0”

create_atoms 1 box var v set x xx set y yy
create_atoms 2 box var v1 set x xx set y yy
create_atoms 3 box var v2 set x xx set y yy

mass * 1.0
group 1 type 1
group 2 type 2
group 3 type 3

fix 3 3 rigid single reinit yes

pair_style yukawa 1.0 2.5
pair_coeff 1 1 0.3
pair_coeff 2 2 0.3
pair_coeff 3 3 0.3
pair_coeff 2 3 0.8
pair_coeff 1 3 0.5

bond_style harmonic
bond_coeff 1 2.0 1.0
bond_coeff 2 2.0 1.0
bond_coeff 3 2.0 1.0

neighbor 3.0 bin

compute nbond all nbond/atom
compute tbond all reduce sum c_nbond

compute 1 all property/local btype batom1 batom2
compute 2 all bond/local dist engpot

dump dump32 all custom 1000 rand.dump type id x y z
dump bondsdump all local 1000 rc.dump index c_1[] c_2[]

thermo_style custom step ke pe c_tbond
thermo 1000

run 10000

fix 1 all brownian 1.0 12908410 gamma_t 1.0 rng none

fix createbonds 1 bond/create 1 1 1 2.0 1 iparam 6 1 jparam 6 1 prob 1.0 1234
fix createbonds2 2 bond/create 1 2 2 2.0 2 iparam 6 1 jparam 6 1 prob 1.0 1234 #change the bond type to 2 when trying for bond types
fix createbonds3 3 bond/create 1 3 3 2.0 3 iparam 6 1 jparam 6 1 prob 1.0 1234

run 10000

pair_coeff * * 0.01
unfix createbonds
unfix createbonds2
unfix createbonds3

fix createbonds 1 bond/create 1000 1 1 2.0 1 iparam 6 1 jparam 6 1 prob 0.1 1234
fix breakbonds 1 bond/break 1000 1 0.0 prob 0.1 1234
fix createbonds1 all bond/create 1000 2 2 0.0 2 iparam 6 1 jparam 6 1 prob 0.1 1234
fix breakbonds1 all bond/break 1000 2 0.0 prob 0.1 12345
fix createbonds6 all bond/create 1000 3 3 0.0 3 iparam 6 1 jparam 6 1 prob 0.1 1234
fix breakbonds6 all bond/break 1000 3 0.0 prob 0.1 1234

run 250000

Three comments:

  • this input doesn’t run with a regular version of LAMMPS, since it uses a custom compute “nbond/atom”
  • there are lots of unusual settings in there that make it difficult to make sense of what your intentions are
  • using multiple instances of fix bond/create and fix bond/break at the same time (and with the same random seed to boot) is asking for trouble. Neither of those were designed with such complex situations in mind and will apply changes independent from each other without having updates of what changes the other fixes did. For complex bond change operations, it would be much better to use fix bond/react instead.