Defininition of two distinctive cutoff distances with comm_modify group

Hi There,

I have a specific question about the communication cutoff distance for the parallel implementation of my simulation.

The question is the following: Is there a way of specifying a small communication cutoff and including some special cases in the ghost atom list?

Here is my general motivation to do this:

Lets say I have a two-dimensional evenly spaced square grid of atoms that are a distance of 1 apart from each other. These atoms are then connected by bonds to their neighbors (forming a ckeckerboard pattern). These bonds would now all have the length 1. Let’s now say that i want to connect two of the atoms in the grid that are far away from each other (let’s say a distance of 50) by another bond.

This would result in two bond types, bond type 1 with length 1 and bond type 2 with length 50.

I have many bonds of type 1 but only very few of type 2. However, because I have a large difference in the bondlength between type 1 and 2, I need to set the communication cutoff distance for parallel computation to a value of 50. This results in the communication of many atoms that are only bonded with bond type 1 that wouldn’t need to become ghost atoms (because they are not direct neighbors).

Let’s now say that in the group “atoms_btype_2” I store all atoms that take part in a bond of type 2. I now hoped that I could set the communication cutoff to 1 (length of bond type 1) and by using the “comm_modify group atoms_btype_2” command, including the atoms that take part in bonds of type 2 in the ghost atom list. However, I realized that this does not work.

I realized that by this way, the communication cutoff of 1 is only applied on the group specified in the “comm_modify group” command. Therefore, this would result in a ghost atom list with no atoms.

From this I again restate my question: Is there a way of specifying a small communication cutoff and including some special cases in the ghost atom list?

Would this require a modification of the source code? I am fairly new to C++ and the modification of the LAMMPS source code and I saw that the comm.cpp file is quite intricate.

I am grateful for any input.


You want to use comm_modify mode multi cutoff/multi ... cutoff/multi ....
Note that this requires the neigh multi setting, so you need to read that documentation carefully, too.

Thank you so much for your swift reply and your dedication to LAMMPS in general.

I will look into it and am positive that I will find the solution.