Quasi Fermi level keeps crashing - Occopt 9

Hi all,

I was wondering if anyone has any general advice for getting quasi Fermi level calculations to run without crashing? I’ve done some calculations for various systems, usually geometry + cell relaxation with fixed nqfd, around 0.1-0.5 e/f.u. In general I have a large plane wave cutoff (~1000 eV), a fairly dense k-grid (8-12 in each direction). The smearing is something I’ve been treating as a physical parameter and fixing in calculations (it makes quite a big difference in the results), but is usually a few mHa.

My calculations always eventually crash, saying that a new Fermi level couldn’t be found in some number of bisections. I modified the code to increase the max number of bisections from 50, to 1000, but it doesn’t make any difference. Also I have tried increasing the number of bands, up to several hundred (for < 50 valence bands), and it still always eventually crashes.

I was wondering if anyone else had similar experiences, and any general advice for getting these calculations to run without crashing? It seems to happen regardless of the material.


Daniel Bennett

Hi Danny,

got an example input file? We are talking about a GS run, I presume. And you have the index set for the last valence band? No metallicity which could confuse the algorithm? And finally, as always, need to send along a description of your build, version, platform, compiler etc. There are a few automatic tests in the suite, which use occopt 9 and run through on 10 different buildbots, so it can’t be as general as you state on all machines.

Hi Matthieu,

here’s an example input file for tetragonal CsPbBr3 (sqrt(2)xsqrt(2) cell, 10 atoms):

cpb.in (6.7 KB)
cpb.out.txt (2.3 MB)

which crashes with the error:

— !BUG
src_file: m_occ.F90
src_line: 852
mpi_rank: 35
message: |
It was not possible to find Fermi energy in 1000 max bisections.
nelecthi: 1.50000000000624E-01, and nelectlo: 1.49999999999373E-01.

I wanted to run several relaxations as a function of n_qfd, and chain the calculations together with xred -1 and getcell -1 (I tried getwfk also, but the calculations crashed). Running the calculations like this, they would always eventually crash, and I wasn’t able to determine why.

Since the calculations wouldn’t run consistently, I split them all up into separate calculations, and ran them in loops, copying the geometry and cell from the previous calculation to start the next one. But some of the calculations still randomly crash and I have to manually rerun them and babysit them until they finish.

I would like to understand why some calculations crash and see if I can avoid it. I thought there could be a problem with small band gaps, but in the example I attach, the gap should be large enough. Is it possible that the relaxations can reach some configurations where it is difficult to find the Fermi levels for whatever reason?

here is some info about my build:

  • version: abinit-9.6.2
  • compilers: Intel 2021.2, with MPI and MKL
  • libxc-4.2.3
  • xmlf90-1.5.4
  • libpsml-1.1.8
  • fallbacks: hdf5, netcdf, netcdf_fortran, libxc

My cluster is having a big update next month, and I’m planning to make a new build of abinit, with a newer version, compilers, solvers etc, so any advice appreciated. Also, I will look into running the different tests and let you know how it goes