[lammps-users] special_bonds command causes script to fail, but only in parallel


I using a LAMMPS script (reproduced below) to model freely-jointed polymer chains. Each chain is defined as a collection of atoms, with bonds connecting successive atoms. The pairwise interaction is purely repulsive L-J, and the bonded interactions are through a harmonic potential. The atom density in the simulation box is 0.9 atoms/volume

Since the simulation box contains both bonds and atoms, I add a special_bonds command in the script to ensure that 1-2, 1-3 and 1-4 neighbours do not overlap. (Not really necessary for 1-2 interactions, since they do not overlap anyway, because of the harmonic potential).

This script executes without a hitch on a single processor. When run on multiple processors, however, the script aborts. The error logs are also reproduced below. The aborting on multiple processors seems uncorrelated with the number of processors. No other jobs are hogging memory on the nodes.

Upon removing the special_bonds command, the script runs problem-free on any number of processors.

I’m really not sure if this is because something is fundamentally wrong with my script/data file, or some incompatibility between fixes, or the parameters used in the fixes. Does anyone have any suggestions on how this may be overcome?



P.S. I’ve tried this on the 21-May-2008 and 22-Jan-2009 versions of LAMMPS. I might also add that small systems, and systems with low polymer density run without any problems.

The error message occurs b/c the proc that owned that bond
could not find the other atom in the bond. That will only
happen if the atom was beyond the neighbor cutoff (force cutoff + skin).
So if you are using a short pairwise cutoff and a harmonic
bond can stretch beyond it, then that's a problem.

You can increase the neighbor skin, or use the communicate
cutoff command to increase the distance at which atoms
are communicated to a processor.