Hello,
I’m currently trying to redesign the local neighbor listing in pair_style mesocnt to use the bond topology rather than relying on consecutive numbering of atoms in each molecule. This would allow for the simulation of nanotube rings or periodic nanotubes where the ends of the nanotube are bonded to each other.
The pair_style uses LAMMPS neighbor lists to set up connected chains of bonded atoms which are then used as single neighbor entities for the energy and force calculation. In the current implementation, this is done by looking at consecutive atom IDs, but as mentioned above, this requires consecutive labelling of the atoms. Clearly, this doesn’t support connecting two nanotube ends as their IDs differ by more than one.
Instead, I would like to use the bond topology to trace out bonded chains of atoms and use them as neighbor chains. The crucial element in this is the pointer **bond_atom, which stores bond information, but only for local atoms, and not ghost atoms. The method therefore only works for serial simulations and breaks when parallelized.
Is there a way to access global molecule topology information locally in a pair_style?
Alternatively, would it be possible to also communicate ghost atom information (similar to atom->tag)? If performance would take a hit, maybe this could be toggled by an additional comm_modify flag.
Thanks,
Philipp