"Neighbor history overflow" when switching to JKR

Hi, I’m trying to use the JKR contact model after initially using Hertz, but have run into the following error: “ERROR on proc 1: Neighbor history overflow, boost neigh_modify one (src/fix_neigh_history.cpp:392)”

The script is as such:

variable        file_data string "./test.txt"

atom_modify     map yes
units               lj
dimension       3
atom_style      sphere
read_data       ${file_data}

change_box      all triclinic boundary p p p 


variable        E equal 5                     
variable        Pmin equal 1e-6
variable        Pdamp equal 1000
variable        stepsize equal 100

variable        v equal 0.15
variable        E_eff equal ${E}/(2*(1-${v}^2))
variable        en equal 0.5
variable        kn equal 4/3*${E_eff}
variable        delta_t equal 0.1

pair_style      granular
pair_coeff      1 1 hertz ${kn} ${en} tangential linear_nohistory 1 0.3 damping tsuji

variable        skin equal 1
neighbor        ${skin} multi
neigh_modify    delay 0 every 1 check yes collection/interval 3 10 22 40
comm_modify     mode multi vel yes reduce/multi

thermo_style    custom step press temp density 
thermo          100

fix             NVe all nve/sphere 

timestep        ${delta_t} 
run             5000

pair_coeff      1 1 jkr ${E} ${en} 0 0.01 tangential linear_nohistory 1 0.3 damping tsuji


run             25000
unfix           NVE

with the data file containing atom coordinates etc:

1 1 39.02512328776685 1 222.66724026475285 398 231.62420724005202 
2 1 38.68005173313877 1 306.83062506001045 413 175.5597411390237 
3 1 38.63948120928962 1 127.77157077968695 171 154.08893387407437 
4 1 38.63732009325187 1 118.34204470483316 380 193.5892879332805 
5 1 38.559038662172554 1 416.33239736872576 301 48.1063593905061 
6 1 38.222491146871754 1 129.89002558639098 299 354.4014029537014

I’d be very thankful for any advice.

As a first step, I would “boost neigh_modify one” as suggested by the error message, see neigh_modify command — LAMMPS documentation.

Hi, sadly that doesn’t seem to have any effect.

Did you make it big enough, e.g.

neigh_modify one 100000 page 1000000

Yeah, but to no effect.

JKR is an odd duck when it comes to neighbor lists, especially with the multi option. So if boosting one and page doesn’t work there may be something else going awry. Few questions:

  1. How many atoms are there in the system?
  2. What is the size distribution (power law, gaussian, etc)?
  3. How many processors are being used?
  4. When is the error showing up? During initialization or at a later timestep?

If you can share a data file that reproduces the error relatively quickly when running in serial, I may be able to take a look at it.

The simple script above, with 6 atoms reproduces the error i get. The size distribution otherwise is log-normal, running on 8 processors. The error shows up in the script above after changing the contact model to JKR.

Have you tried running in serial or on fewer processors?

6 atoms is a conveniently small number, hopefully that helps narrow down the issue. Can you share the actual data file though? I need box dimensions, etc. to try and diagnose the issue.

Yeah the error happens for serial execution as well. My LAMMPS version is 8 Feb 2023. Here is the data file:

LAMMPS file containing particle data

6 atoms
1 atom types
0 442.17652217373666 xlo xhi
0 442.17652217373666 ylo yhi
0 442.17652217373666 zlo zhi
0 0 0 xy xz yz

Atoms #sphere

1 1 39.02512328776685 1 222.66724026475285 398.6810902479703 231
2 1 38.68005173313877 1 306.83062506001045 413 175.5597411390237
3 1 38.63948120928962 1 127.77157077968695 171 154.08893387407437
4 1 38.63732009325187 1 118.34204470483316 380 193.5892879332805
5 1 38.559038662172554 1 416.33239736872576 301 48.1063593905061
6 1 38.222491146871754 1 129.89002558639098 299 354.4014029537014

With the current development version I get this error instead:

ERROR: Cannot use tsuji model with a cohesive normal model, jkr (src/GRANULAR/granular_model.cpp:257)
Last command: pair_coeff      1 1 jkr ${E} ${en} 0 0.01 tangential linear_nohistory 1 0.3 damping tsuji

This looks like older versions of LAMMPS were trying to access data that wasn’t there because of an incompatible setting and thus produce a bogus error message.

I think Axel is correct. Swapping to a different damping model, I see no errors in the current version of LAMMPS. This error message was likely fixed in a recent clean up of the GRANULAR package.

Please let me know if you see any other issues with JKR + multi. At some point in the future, I plan to revamp JKR’s neighbor lists.

Oh ok, thank you very much for the help!