I have used the modified Becke-Johnson (mBJ) exchange potential before, as it was developed and implemented in Wien2K by Fabien Tran and Peter Blaha (1). In 2013, Éric Germaneau et al. implemented mBJ in Quantum ESPRESSO, where it is called 'TB09' (2). Here, I will refer to this meta-GGA as TB09 as it is implemented in Quantum ESPRESSO.

As I understand it, once the Libxc library is installed, the TB09 potential can be called simply by input_dft= 'sla+pw+tb09+tb09' or input_dft = 'TB09'. Another note, is that the TB09 potential was defined with LDA correlation.

So, I have been trying to run an scf computation using TB09, with norm-conserving LDA scalar-relativistic pseudopotentials. I have not been successful with this computation, and I have tried before with GGA (PBE and PBEsol), norm-conserving and ultra-soft pseudopotentials. I have tried changing the diagonalization method, from the default Davidson to Conjugate-Gradient (cg). I have also tried changing the smearing, mixing mode, and other parameters.

I have had zero success with the TB09 potential in Quantum ESPRESSO.

Specifically, I get the good ol' problems computing cholesky error, although the structure was fully optimized previously with PBEsol.

I have modeled the band structure of a this given material with GGA using Quantum ESPRESSO, reproduced the results with the APW+lo method in Wien2K (PBEsol) and then modeled the band structure with mBJ in Wien2K without any issues.

Is there something I am failing to consider? Are there problems in general with the TB09 potential in Quantum ESPRESSO?

A benefit and motivation to get this right using QE is that it is open source as opposed to Wien2K and VASP.

Happy to share my input file if willing to help.


1 : F. Tran and P. Blaha. (2009). Phys. Rev. Lett. 102, 226401

2: É. Germaneau et al. (2013). Comput. Phys. Commun. 184 1697–1700

  • 2
    $\begingroup$ Is it not called mBJ in VASP? I tried searching for TB09 but couldn't find it. Also, what is the cholesky error in Quantum Espresso? Is that an SCF convergence issue? I only ask because, assuming this is a meta-GGA, a lot of codes can run into difficulties converging the SCF for meta-GGAs, and the success of the SCF convergence will depend heavily on the SCF algorithm used in the given program. $\endgroup$ Commented May 5, 2020 at 4:06
  • 2
    $\begingroup$ You know what, you made me double check the VASP Wiki and it is indeed MBJ! (I'll edit that) And yes, the MBJ is a meta-GGA. The Cholesky error is a convergence error, that I have seen appear if the unit cell is not properly defined or if there is an error with the k points. Don't think that's the case here, so a bit confused. As far as diagonalization, I am using davidson but have had the issue with conjugate gradient as well. $\endgroup$
    – epalos
    Commented May 5, 2020 at 4:47
  • 1
    $\begingroup$ I would be surprised if there's "problems" with every single TB09 calculation in QE. There seems to be a problem with your particular case. Maybe you do need to provide your input file in the question, especially since no one has come here and said "Me too! I've also experienced issues with TB09 for systems where all other potentials are working just fine!". $\endgroup$ Commented Jun 15, 2020 at 0:39
  • 1
    $\begingroup$ It's on twitter: twitter.com/StackMatter/status/1272711713373241345 re-tweet for more attention. Trying to clear up the un-answered queue. $\endgroup$ Commented Jun 16, 2020 at 2:05
  • 1
    $\begingroup$ Andrew is right, meta-GGA in general on QE, is unstable - encounters lots of convergence issues. You can tweak other parameters in your calculation though. In some cases, it is found to solve the problem. Please change the diagonalization method to 'cg' and try again... It is much slower but it can solve issues that typically arise when you use 'Davidson' diagonalization.. $\endgroup$
    – Xivi76
    Commented Jun 16, 2020 at 16:56

1 Answer 1


As many have mentioned in the comments, the problem may not just be me and it may not just be the TB09 / TB-mBJ meta-GGA (MGGA).

First, it seems that the main application and success of TB09 is in yielding band gaps of semiconductors and insulators with an accuracy reported to be close to that of HSE06 or even GW. One weakness that has been pointed out is that it while it improves on band gaps (compared to LDA, GGA), it underestimates bandwidths. For further reading on this, go here and here.

It seems like emphasis is made on using TB09 with caution and will be applicable to systems under very particular conditions. However, it seems that as far as the Meta-GGAs (MGGA) go, TB09 seems to be a very good option for modeling intrinsic semiconductors. For other systems, extensive parameter fitting may be required and at that point - value whether it is worth it for you and for that specific project. Two of many examples of the extension of TB09 are surfaces and hybrid halide perovskites.

In LIBXC, the TB09 functional is listed in the Meta-GGA Exchange section listed as "MGGA_X_TB09 (id=208): Tran & Blaha 09" and has been around for a while, in various LIBXC versions. As far as Quantum ESPRESSO, LIBXC itself should not be the root cause of any issues, especially for QE v.6.0 and newer.

As some have mentioned in the comments, converging MGGA in general is not an easy task and multiple factors need to be analyzed, such as the pseudopotentials and the kinetic energy density... one of my most recent errors was related precisely to this. Quantum ESPRESSO is no exception.

I asked this question here on May 5th, 2020. My 'war' with TB09-in-QE was around November 2019, and ultimately decided it would be easier and faster to get it done with Wien2K and that was done. However I didn't want to accept that defeat. Aside from TB09, I tried converging TPSS and I tried different sets of pseudopotentials, tried reading final GGA densities and wavefunctions as a starting point, among other things.

On May 7th, 2020 , two days after the question was posted here, another QE user encountered a similar challenge. The same challenge, to be exact.

I quote:

Hello, I know this was discussed here before, but I still haven’t found a satisfactory solution. Can someone share a nontrivial working example of an SCF calculation of a periodic solid with TB09? If I start “from scratch”, SCF diverges. Previously it was suggested to start from a density calculated with a different functional, but when I try to read in PBE density, it complains that it cannot read the kinetic energy file (which obviously cannot be there). Same problem with TPSS. I was using pseudo-dojo NC pseudos for PBE - could this be the source of the problem? Should TPSS or SCAN pseudos work better (and where do I get them from)?

Thanks, Michal Krompiec Merck KGaA

We might have well been trying to model the same system! Same pseudos, same errors, same alternative MGGA probed. MGGA convergence issues are well known in QE and unfortunately, the (quoting Paolo Gianozzi) "nasty numerical behavior of meta-GGAs" give us headaches. Paolo Gianozzi is one of the masterminds behind Quantum ESPRESSO, and even he had no more advice to give at one point during the thread.

I don't want to re-post the thread here, but I will summarize three possible solutions:

  1. Modify the source code! Didn't work for Michael, but maybe your luck will be different.
  2. Get in code mode and HACK the functional; i.e. gradually go from PBE to TB09 with some function.
  3. TB09 on top of SCAN on top of PBE. Literally, run a PBE scf, and use the data as starting point for SCAN. Once you get SCAN to converge, use that data for TB09. This was proposed by Reinaldo, who did this to study some semiconductors using QE v.6.5 and Michael found a happy ending, as it worked for them too.

Full thread is here.

Is TB-mBJ / TB09 problematic in Quantum ESPRESSO? YES, but so are other MGGAs.

Like everything, the TB09 seems to have its strengths and weaknesses, and at the end of the day one must evaluate whether it is in one's best interest to use TB09 in your project and if the answer is YES, then ask yourself if why and what for? In my honest opinion, this will determine whether it is worth-while to do extensive troubleshooting and coding. If I NEED to get SCAN working before I can get TB09, then maybe I no longer want TB09? Again, really depends on the project.

As many have mentioned in the comment section and in another post on the site related to TB09, it isn't the holy-grail of functionals and at the end of the day it won't beat (or look as good) as a result (or a line in the results section of your paper) as HSE06, GW, or maybe even other MGGAs. However, TB09 has had major success in the semiconductor physics community and that makes it very valuable.

My two cents on TB09: It's good. It's cool. I think it is genuinely interesting and amazing that a model exists that can yield (in many cases) bandgaps comparable to experimental values at low cost. It isn't perfect and that is why it, as well as any other functional, should be used with CAUTION. Moreover, I think it would be great to extend the potential to better fit complex systems like some authors have done. Gives it a nice classic theory feel to it. Also, I do think that learning to use multiple codes (e.g. Quantum ESPRESSO, VASP, Wien2K, Abinit, etc.) can actually save you time in the long run. While I was fighting with QE, I reproduced my GGA reuslts and had the TB09 results in Wien2K. Most of the papers I've read that employ TB09 are based on Wien2K. I gave it a try, and didn't really have any issues with it. Nobody would have cared one bit if I had managed to get the result in QE for a material that an undergrad was studying, even if I explained to them how hard it was for me and how it's important to me to stay as open-source as possible ... and that's kind of my point. I may have lost the battle, but the war continues.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .