Research papers describing about Neighbor Search algorithms

Dear LAMMPS Developers & Users,
I am interested in understanding Neighbor Search being performed in LAMMPS and various algorithms used at various levels in LAMMPS. I know that Plimpton’s paper “Fast Parallel Algorithms for Short-Range Molecular Dynamics”, talks about basic algorithm employed. But before I start looking at code I would like to know if any papers have been published in this regard or any documentation is present that talks about algorithms used for Neighbor Search.

P.S.: This website: “https://sites.google.com/site/scienceuprising/code-packages/lammps/a-dissection-of-lammps-classes#TOC-MPI-like-Open-MPI-” talks about Neighbor lists at code level which definitely helps, but I am mostly interested in overall algorithm being employed for Neighbor Search (and some implementational details if possible).

Dear LAMMPS Developers & Users,
I am interested in understanding Neighbor Search being performed in LAMMPS
and various algorithms used at various levels in LAMMPS. I know that
Plimpton's paper "Fast Parallel Algorithms for Short-Range Molecular
Dynamics", talks about basic algorithm employed. But before I start looking
at code I would like to know if any papers have been published in this
regard or any documentation is present that talks about algorithms used for
Neighbor Search.

​if you want to know what is published in the literature, i suggest you do
a literature search. :wink: nobody will do it for you. people have a hard
enough time to stay on top of things.

but if you *really* want to understand, you are best​ off writing a little
toy code (lj/cut potential, only one atom type, cubic cell with PBC) and
implement an O(N**2) search, a cell list and verlet lists, and look up the
corresponding papers (you'll have to dig deep, since a lot of the stuff
goes back 20-30 years).
without properly understanding the fundamental constructs, you won't get
anywhere. most of what has been done since are variants of that and
performance
optimizations mostly for the *consumers* of the neighbor lists, less so for
the construction itself.

if you want to get into more complex and sophisticated proximity search
methods, you'll have to switch to cosmology, where systems have widely
varying particle densities and long-range interactions that are not
screened. in MD simulations, the majority of use cases are simulating dense
systems, with essentially short range interactions (as far as the pair-wise
part is concerned), where the typically used verlet lists are hard to beat.

P.S.: This website: "
https://sites.google.com/site/scienceuprising/code-packages/lammps/a-dissection-of-lammps-classes#TOC-MPI-like-Open-MPI-"
talks about Neighbor lists at code level which definitely helps, but I am
mostly interested in overall algorithm being employed for Neighbor Search
(and some implementational details if possible).

​this you can only get from reading papers. usually papers describing codes
or improving codes. you can go down the whole list of widely used classical
MD codes... as i wrote before, nobody has the time to pre-digest and spoon
feed it to anybody. if you want to know, you'll have to go digging yourself.

axel.

Thank you for your reply. I have a brief understanding of basic existing Neighbor Search Algorithms using Cell Lists and Verlet lists, etc. I was hoping if in some kind of documentation the developers could “confirm” about the algorithms they used for this step and how far the implementation has been optimised (in LAMMPS) similar to other MD software based papers. LAMMPS seems to have pretty good implementation for Neighbor Search phase. Either way I am already looking at Neighbor class and all its child class in LAMMPS to better understand the implementation directly.

And thanks for suggesting other areas to look into.