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.