Sending only bonded particles

Good morning all,

I have a non-bonded potential which does not require the construction of a neighbor list and therefore I use pair_style none. However, I do still have a needed for sending some particles since there are bonds. However, it is slightly overkill to generate neighbor lists which includes many more particles than the ones it is directly bonded to and doing comm_modify cutoff 5.0 or so has the same drawback of generating a neighbor list, that is, sending more particles than those are actually necessary.

Is there a way to send only the particles which cross the processor’s boundary and those particles that are explicitly mentioned interactions with that particle (those particles that are directly bonded, in an angle/dihedral calculation)? If not, what would need to be modified in the comm structure to add such a functionality?

Thank you in advance.


All you should need to do is set the comm_modify cutoff long enough to
capture any stretched bond (or angle, etc) in your system. This has nothing
to do with neighbor lists. The LAMMPS output before your run
starts will tell you if any neighbor lists are defined.

I would only worry about the cost of communicating ghost
atoms if it’s significant. The timing output for a LAMMPS
run should tell you that. Note that load imbalance can make
some portions of the tilmestep look more expensive than
they are (e.g. comm). The timer sync command can give
you a truer number for the cost of comm.

There is a comm_modify group command which
will only communicate atoms in the group.

There is no option in LAMMPS to only communicate
atoms bonded to off-processor atoms. It would not
be easy to do, since bonds, angles, etc are typically
only stored once, not by each atom in the angle.