Choosing neighbor skin width

Hi all,
I wanted to understand the significance of neighbor skin width.

  1. What does it signify?
  2. Is there a way to choose an optimum value?
  3. I was running into a lost atom error with skin width 7A but reducing the skin width to 3.5 has my simulation running well. Was this because runnerCutoff+ neighbor skin width > box size in the first case or it can be attributed to some other things too?

I merely wish to understand the parameter better and any pointers towards resources more than the documentation of the command in LAMMPS doc will also be helpful.

Thanks in advance

Hi all,
I wanted to understand the significance of neighbor skin width.

  1. What does it signify?

it is primarily used in three places: 1) when constructing the neighbor lists, they are based on largest cutoff+skin, 2) when deciding how many “ghost” atoms to create, the communication cutoff is by default initialized to the neighborlist cutoff, i.e. the largest pairwise cutoff + skin 3) when enabling dynamic neighbor list rebuild (neigh_modify check yes) the rebuild of the neighborlists and thus redistribution of “local” atoms across the parallel subdomains is triggered when at least one atom has moved by more than half the skin distance from its position when the neighbor lists were built the last time.
I just checked, but this is essentially what is written in the documentation of the neighbor command.

  1. Is there a way to choose an optimum value?

yes. the skin value is essentially a tradeoff between rebuilding the neighbor lists less frequently (and thus saving time in the neighbor part of the LAMMPS run) when the skin distance is larger and having more atoms to check against when comparing their pairwise distance (and thus spending more time in the Pair part of the LAMMPS run). For a typical pair style, the optimal value is somewhere between 10% and 20% of the employed cutoff.

  1. I was running into a lost atom error with skin width 7A but reducing the skin width to 3.5 has my simulation running well. Was this because runnerCutoff+ neighbor skin width > box size in the first case or it can be attributed to some other things too?

that is impossible to answer without knowing more details about your simulations. a 7 \AA skin distance seems excessive, even 3.5 \AA. Lost atoms can have multiple causes.

I merely wish to understand the parameter better and any pointers towards resources more than the documentation of the command in LAMMPS doc will also be helpful.

more details should be in the LAMMPS paper and presentations about LAMMPS’ inner workings given at LAMMPS tutorials or workshops: https://lammps.sandia.gov/tutorials.html and https://lammps.sandia.gov/workshops.html

Axel.

Thanks Axel

It answers all of my questions except one. Is having runnercutoff+skin value > box length an issue ?

It answers all of my questions except one. Is having runnercutoff+skin value > box length an issue ?

as I already remarked, the skin values you quoted are very large and thus likely very inefficient. if they are required to resolve a problem, it is likely the wrong solution and only masking the real underlying problem. however, what are optimal and correct settings depends on the specifics of your system. and without knowing those, it is impossible to make any definite statement.

if you want to know for certain, make some tests.

axel.