Internal energy result mismatch with comparison values at small cell sizes

I am using Abinit to help verify our real-space (finite-element) code development. I also benchmark against BigDFT.

During one of the tests, I have run into a problem. The test is not a case of physical interest — the important aspect is that the cell size is rather small. I am attaching relevant input files to describe the issue. These may not be in best format for proficient users, but I hope that they explain the setup.

In the inputs, k=(0.1,0.1,0.1) is employed. All examples invoke LDA on Lithium with the HGH pseudopotentials for test purposes (I used 3li.1.hgh with content psp.txt (811 Bytes)). I prepared complete input setups for both Abinit and BigDFT but was unable to upload them due to file extension limitations. Please let me know if further clarification is needed.

The Abinit output is obtained with an old version (8.2.1). However, we verified that the results are the same with a newer version (9.4.2). For BigDFT, I used version 1.8.3 (the latest version delivers the same results).

First set invokes the full nonlocal pseudopotential:

Abinit-01_nonlocal: Abinit input/output with an internal energy -0.150 068 146 lithium.in (1.7 KB)
BigDFT-01_nonlocal: same setup via Bigdft, with internal energy -0.150 220 263

Our real-space calculation agrees with BigDFT. The remaining gap with Abinit is puzzling.

After noticing that the problem is not as significant with Hydrogen which does not have a nonlocal part, a second test was set up.

Second set sets h11s and h11p in the pseudopotential file to zero in order to force a purely local calculation:

Abinit-02_forced-local: Abinit input/output with an internal energy -0.949 884 496
BigDFT-02_forced-local: same setup via Bigdft, with internal energy -0.949 884 598

Our real-space calculation again agrees with BigDFT. The mismatch with Abinit has significantly diminished but not entirely vanished.

This mismatch problem strictly appears only if the k-point is non-zero. For the gamma point, there is no problem. Also, it was observed that the problem diminishes with increasing cell size. So, the small cell size must be an issue but it is strange that this appears only for non-zero k.

I tried to hunt for “cutoff/accuracy” parameters in Abinit. For instance, a parameter such as mqgrid in setmqgrid.f90 clearly impacts the accuracy of the results but the current max value of 3001 is already very accurate. Moreover, this would again not explain why the issue appears only for non-zero k.

Any ideas or suggestions are welcome.

For the record: setting nysm=1 in this case, I was able to obtain a match for non-zero k-points as well.