Hi everybody! Hope you’re all doing well
I am trying to equilibrate semiflexible Kremer-Grest-like melts using the DBH method [Auhl et. al, J. Chem. Phys., 119, 12718 (2003)] and am experiencing reproducible “Angle atoms 74952 74953 74965 missing” crashes.
I’m using the 16Mar18 version of LAMMPS. My input script is below. It’s rather long, but I think the problem is probably quite simple.
DBH equilibration for Nch = 522 N = 200 kb = 9 Kremer-Grest chains
combine the gradual hardening of the pair and bond potentials with DBH
units lj
atom_style angle
special_bonds lj 1 1 1
read_restart pushoff.res.1250
reset_timestep 0
neighbor 0.3 bin
neigh_modify every 1 delay 0 check yes
comm_modify mode single cutoff 5
pair_style nm/split 1.12246
pair_coeff * * 1.0 1.1246 12 6
pair_modify shift yes
bond_style fene
bond_coeff 1 30 1.5 0 1
angle_style cosine
angle_coeff 1 8
fix 1 all nve/limit .009375
fix 2 all langevin 2.0 2.0 1 4528641 zero yes
compute msd1 all msd com yes
fix 3 all ave/time 1 1 125 c_msd1[4] file diffusion
DBH bond swapping
fix 4 all bond/swap 25 0.5 1.3 598298
dump 1 all custom 1250000 configs.DBH id mol type x y z ix iy iz
rem need dump bondlist so can reoorder into correct chains
compute 2 all property/local btype batom1 batom2
dump 2 all local 1250000 bonds.DBH index c_2[1] c_2[2] c_2[3]
output double-bridging statistics
variable 1 equal f_1
variable accept equal f_4[1]
variable attempt equal f_4[2]
timestep .001
thermo 125
thermo_style custom step temp etotal epair ebond eangle press vol v_accept v_attempt
restart 1250000 equilib.res
run 25000
increase timestep, go to softer pair and bond interactions
unfix 1
fix 1 all nve/limit .01875
pair_coeff * * 1 1.12246 7 6
bond_coeff 1 11.4582 1.5 0.0 1.0
timestep .002
run 25000
increase timestep
unfix 1
fix 1 all nve/limit .028125
timestep .003
run 25000
increase timestep
unfix 1
fix 1 all nve/limit .0375
timestep .004
run 25000
increase timestep
unfix 1
fix 1 all nve/limit .046875
timestep .005
run 3650000
In the above, the “nm/split” pair potential is a simple modification of pair_style nm/cut. “pair_coeff 1.0 1.12246 12 6” gives the standard Lennard-Jones potential, while “pair_coeff 1.0 1.12246 7 6” gives a 7-6 potential for r < 1.12246 and standard LJ for r > 1.12246. “bond_coeff 1 11.4582 1.5 0.0 1.0” gives FENE bonds that have the same equilibrium length as the usual K-G model, i.e. l_eq = .961. I’m doing this to combine DBH with a DPD-like softening of the pair potential. It would equilibrate systems very quickly if it didn’t crash. I’ve run a lot of similar simulations without DBH in the past, and had only occasional crashes.
Unfortunately, the above job always crashes after a few hundred thousand steps when run in parallel. The thermodynamics don’t blow up and I see no indication that there are huge forces causing atoms to get blown out of the cell and cause the crash.
The initial version of the above script lacked the
neigh_modify every 1 delay 0 check yes
comm_modify mode single cutoff 5
commands. I added these after looking up the “Angle atoms %d %d %d missing on proc %d at step %ld” section of the doc pages, which states “One or more of 3 atoms needed to compute a particular angle are missing on this processor. Typically this is because the pairwise cutoff is set too short or the angle has blown apart and an atom is too far away.”
Doing more frequent reneighborings does seem to help some, and the “comm_modify” command also seems to help some, but “Angle atoms missing” crashes still occur every time IF I run in parallel. Single-processor jobs don’t seem to crash, so it appears the problem is with the MPI communication rather than the physics.
The other possibility mentioned above is that “the pairwise cutoff is set too short”. Doubling the cutoff radius to 2.24492 allows parallel jobs to run without crashing! However, I don’t want to use this larger cutoff. Besides greatly slowing down the simulations, it adds attractive LJ interactions I don’t need or want.
So, what should I do here? Would increasing the skin depth help? Or is my “comm_modify” command not the right one to use here? Or is there some other strategy you’d suggest to stop these crashes?
Thanks,
Rob