Ewald/disp in LAMMPS with a triclinic lattice

I took a look at the code, and it appears that there is a bug in pair_buck_coul_long.cpp in the table option. The values change with number of processors. As Rolf suggested, if you use pair_modify table 0, the code runs as expected. Maybe Paul can take a look.

The values are sensitive to the cutoff because they include both the LJ and Coulombic interactions. If you use separate cutoffs for LJ and Coulombic and keep the LJ cutoff constant but vary the Coulombic cutoff, then the results should be almost the same. For example, you can use: pair_style buck/coul/long 8.9 3.0 or pair_style buck/coul/long 8.9 7.0 and you should get about the same answer with Ewald/disp.

The buck/coul/long pair style just uses a cutoff for the dispersion interactions. If you used the buck/long/coul/long style then you should be able to use a single cutoff and get values that are nearly independent of cutoff with Ewald/disp.

As was mentioned by others, you can now use PPPM with triclinic systems. If you want to use long-range dispersion interactions with triclinic, you will still need to use Ewald/disp.


Use of the coulomb tabling does introduce more error than leaving it off. This in turn can cause trajectories to diverge faster when running on a different number of processors. Apparently your problem requires very high accuracy, so using Ewald with accuracy set to 1e-10 and turning tabling off, at least during minimization, sounds like a good idea to me.

I looked for a bug in the coulomb tabling for this pair style, but did not find one.