[lammps-users] How to develop a new potential function

Hi, every, I am Jervis Chu.
I am trying to develop a new many-body potential for metal materials. Actually, the package MEAM used *listhalf, a lot of pair potentials used *list. But I am not sure about the difference of three list in pair.h, they are:
  class NeighList *list; // standard neighbor list used by most pairs
  class NeighList *listhalf; // half list used by some pairs
  class NeighList *listfull; // full list used by some pairs
  class NeighList *listgranhistory; // granular history list used by some pairs
  class NeighList *listinner; // rRESPA lists used by some pairs
Can anyone tell me the differences?

For a pairwise neighbor interaction of I and J,

listhalf stores it with either I or J
listfull stores it with both I and J
the other lists are specialized with extra info for
  other kinds of potentials
the standard list is listhalf

there is also some logic in the lists when I and J
are on different procs, but you don't typically need
to worry about this if you just use the lists as other
pair styles do