EXTFPMD SCF Convergence Suggestion


I have been trying out the new EXTFPMD method in abinit v9.6.2. I have noticed that the convergence of the SCF cycle can be difficult for the potential residual when using the method. I would usually converge the potential residual with tolvrs 1.0d-8 or 1.0d-9. But, with the method as implemented the convergence can take a very large number of steps (>100 sometimes), or sometimes the convergence fails. I implemented the Zhang 2016 method in my local copy of abinit v8.10.3 a couple of years ago (equivalent to useextfpmd 3). When testing it, I ran into similar convergence problems in the SCF cycle. However, I also found there was a simple solution by using a band buffer (bdbuff). One needs to set the occupation numbers of states with iband > nband - bdbuff to zero. The orbital-free integral contributions then pick up from the eigenenergy of nband - bdbuff. Both nband and bdbuff should be stated in the input file as the value of bdbuff for an easy convergence varies a bit depending on the situation, but it’s only be a few bands. If this change is made, then the testing I’ve done suggests the potential residual would converge down as far as it will in a regular crystal calculation (tolvrs<1.0d-12) in much fewer steps, which might be useful for some applications.

I’ve attached the log file and output files files for AE calculations of fcc Al at 200 eV with 100 bands.
log_100b.txt (618.3 KB)
al100b.abo (110.1 KB)
It compares the convergence (tolvrs 1.0d-8) with and without the buffer bands, with the same number of KS states contributing to the quantities. This is the input file for these simulations:
al_conv.in (1.7 KB)
I borrowed the input variable nbdbuf for bdbuff for my quick implementation in abi v9.

  • Without the buffer, the calculation does not actually converge to the desired degree within 100 steps. The deltaE(h) and residm also reach a limit on how well they can converge.
  • In contrast, with the band buffer the convergence is quick (11 steps). deltaE(h) and residm also converge very quickly too.

I also did a second calculation at 300 bands (
log_300b.txt (639.7 KB)
al300b.abo (222.4 KB)
This time without the band buffer, the calculation did converge in 48 steps. With the buffer, the calculation converged in 10 steps.

If this might be useful for you, I can provide the modified files. (E: thomas.gawne [AT] physics.ox.ac.uk)


  • For clarity, bdbuff is distinct from extfpmd_nbcut, if the latter were to be used.

Dear Thomas Gawne,

First of all, thank you very much for your feedback on the implementation of the extended FPMD method in ABINIT. Indeed, as you are pointing at, I already have been confronted to thit kind of SCF convergency issues in the past, even using toldfe convergence criteria.

I successfully implemented your very kind suggestion to bypass this problem, and this should be available with the release of ABINIT v9.10 (as v9.8 is already on its way to release in the next few days). I named the band buffer input variable extfpmd_nbdbuf, and added appropriate documentation.

Speaking about this convergence issue, I don’t really understand what is making fluctuating the electron density through successive SCF iterations. I can guess this is due to the U_0 residual potential (evaluated integrating local part of the KS potential) evaluation also fluctuating with iterations. Maybe we could bypass this issue by slightly modifying the density mixing but this is only a guess.

Finally, I found your proposition can also be useful when trying to simulate orbital free Fermi gas, just by setting extfpmd_nbdbuf = nband. This can be useful to get the high temperature limit where all electrons are ionized.

Thank you again for your suggestion.
Best wishes,
Augustin Blanchet

1 Like

Hello Augustin,

Thank you for looking into this! Sorry for the long wait for a reply, it’s been a very busy time. I would have to dig through my log books, but if I remember correctly the convergence problem was to due E_c and U_0 fluctuating. It’s only an issue when enough electrons are treated as a Fermi gas as the shifting U_0 will change the electron density and the functionals. That in turn affects the eigenvalues of the upper bands, which in turn affects E_c and U_0, etc. However, rather than converging like an SCF cycle, it seems to be unstable, hence the convergence of the calculation is very slow or not possible in some cases. By using this band buffer, the bands that are treated are much more stable. I think this is akin to why nbdbuf is necessary for certain calculations.

I’m glad this was useful and that you’ve managed to find another use for the method.
Best wishes,

1 Like