some questions about computer() and neighbor list

Dear Lammps users,

Could anyone please tell me (and give a reference to) what exactly algorithm is used for the neigbor list in lammps. I have read everything on neigbor lists in such books as Tidesley and Rapaport but when looking into the source code of the compute function of any standard pair stype I get a feelling that the neighbor list implemented in LAMMPS is differen from the ones explained in the above mentioned books.

Could please also someone tell me what is the difference between
atom->nlocal and list->inum? In what case they might be different?

I though that each local atom has to have a corresponding neighbor list, am I right?

And the last question, why when I run lammps in serial (not in parallel) such functions as
pack_comm(), unpack_comm() and pack_reverse_comm() are still invoked though I don’t have any inter-processor communications?

Thanks a lot!

Anton

Dear Lammps users,

Could anyone please tell me (and give a reference to) what exactly algorithm
is used for the neigbor list in lammps. I have read everything on neigbor
lists in such books as Tidesley and Rapaport but when looking into the
source code of the compute function of any standard pair stype I get a
feelling that the neighbor list implemented in LAMMPS is differen from the
ones explained in the above mentioned books.

LAMMPS uses velocity verlet lists and the details are described in the
LAMMPS paper from 1995, IIRC.

Could please also someone tell me what is the difference between
atom->nlocal and list->inum? In what case they might be different?

it has been a long time since i looked into it, but they could be
different for certain kinds of "derived" neighbor lists, if i remember
correctly.

I though that each local atom has to have a corresponding neighbor list, am
I right?

And the last question, why when I run lammps in serial (not in parallel)
such functions as
pack_comm(), unpack_comm() and pack_reverse_comm() are still invoked though
I don't have any inter-processor communications?

you need them to update information on ghost atoms from the
corresponding local atoms and vice versa for the forward/reverse
communication. you can easily see it in the Comm::forward_comm() and
Comm::reverse_comm() methods in comm.cpp.

axel.