Very rare non-numeric pressure due to atom overlaps?

Hi all,

I am doing a lot of simulations right now and like 99.9% of my runs are just fine except for that 0.1% that fail with “non-numeric pressure”. I did not really estimate the percentages but I got 3 “non-numeric pressure” fails in like a month of running ~400 cores. I got the 3rd one this night so I am writing this now. Fails seem to be random in time - my runs are usually 24h and fails happened at ~2:59, ~7:40, and something like that. I included Fmax in my thermo_style in hopes of catching anything but I see no irregularities before a fail. I looked at existing “non-numeric pressure” threads but they all seem to have some systematic problem that occurs regularly, which does not seem to be the case here.

The only potential source of this I could think of was

  1. I have pair_style hybrid/overlay lj/cut R1 gauss R2, but not all pairs should physically have LJ repulsion so I set corresponding \epsilon_{i,j} = 0 and arbitrary \sigma_{i,j}=1. r_{c,i,j}=2^{1/6} \sigma_{i,j} for all pairs.
  2. The same pairs that do not have real LJ walls have strong and short-range Gauss attraction, so it is extra likely their centers would be close for a long time (this is supposed to mimic binding).

I am not sure how lammps works internally, so my question is:

Can an exact overlap of 2 atoms (float(r1) == float(r2)) which formally have an LJ potential but also have \epsilon=0 cause a “non-numeric pressure” crash or interactions with \epsilon=0 are excluded from evaluation?

This would explain very rare fails and no visible precursors to them.

If \epsilon=0 are not excluded, is there a way to tell lammps not to evaluate specific pair_style-s (from a hybrid style) for specific type-pairs?

This is not a terrible issue since I can just relaunch the failed ones but I need to check every time if all runs finished fine.

Since you are using hybrid/overlay, you could just not have the lj/cut pair style be applied to those pairs.

Yes, because you need to divide by this (squared) distance.

No they are included, if they are listed under pair_coeff.

Yes, with hybrid/overlay you can just not define pair_coeff for lj/cut for those pairs. With regular hybrid, you can use pair_coeff none and with plain lj/cut you can set the cutoff to 0 or you could use neigh_modify exclude.