I'm new to DFT+U and trying to understand how FeTiO3 works by looking at its electronic properties. But there's a big problem: when I use normal DFT, I can't get the w right band-gap value.

How can I find the perfect "U values" for Fe and Ti atoms in FeTiO3? Is there any method to choose those values?

  • 2
    $\begingroup$ If your expectation is perfect U values, then I am afraid you are looking for something which is not possible, in general. However, there are methods that can give you U value which will improve your band gap, i.e., your calculated band gap with U values will be close to experimental band gap than the one you calculated without U values. Could you state how much band gap are you getting now (without U, with U) and how much are you expecting (experimental)? $\endgroup$ Jan 31 at 19:18
  • 1
    $\begingroup$ could you please update these details as an edit to your question? And what functional did you use? Maybe add a link to the pseudopotential you used. DFT has a very well-known band gap problem. So, assuming you used PBE functional, 2.1 eV is a quite good result if the experimental band gap is 2.5~3.0 eV. With incorporating some U value, it will definitely improve. You may consider hybrid or meta-GGA functional (such as SCAN is available in QE) if you require further improvement. But in any case, I'd say 2.1 eV is a pretty good result. $\endgroup$ Feb 1 at 2:45

1 Answer 1


U values are in general non-transferable

the U-value found in the literature will not give you the same band gap in general unless you know the exact structure, pseudopotentials, DFT code and their version, etc used in the original paper. Note that the U value might change the structure and changing U value requires you to relax the structure again. Therefore, I strongly recommend you NOT to use those values given in the other answer. I will give you a general procedure using which you can find a self-consistent U value but please refer to this excellent answers by Kevin J. May.

Calculating U values using hp.x

Looking at the tags, I am assuming you are using Quantum ESPRESSO (QE). QE has a module hp.x which, among other things, can calculate U values. There are a few ways to do that: by running an expensive hp.x calculation (around 20 times expensive than an scf calculation) or by running inexpensive hp.x calculation followed by relaxing the structure with that U values, and continuing this until a self-consistency has been reached.

Both of these methods have been covered in this video lecture (see from around 01:02:40) in Advanced Quantum ESPRESSO tutorial: Hubbard and Koopmans functionals from linear response.

Very short summary of the expensive method: after you do your scf calculation, prepare a input file hp.in like this (change the prefix and outdir according to your scf calculation):

   prefix = 'FeTiO3'
   outdir = './tmp'
   nq1 = 2, nq2 = 2, nq3 = 2
   conv_thr_chi = 1.d-6

For the details of the syntax, check hp.x input description. After running this calculation by hp.x -in hp.in > hp.out, you will get an output file which will look like:

                                 Hubbard U parameters:
       site n.  type  label  spin  new_type  new_label  manifold  Hubbard U (eV)
         1        1    Co1     1      1         Co1        3d       6.7553
         2        2    Co2    -1      1         Co1        3d       6.7553

The above is for a spin-polarized Co atom. You can see that the suggested U value is 6.7553 eV in this case. The inexpensive method will give you faster result but you need to run vc-relax calculation using that value. And then with the relaxed structure and intermediate U values, you have to repeat the inexpensive calculation until your U values converged. In the tutorial, Iurii Timrov suggested that a $\Delta U \leq 0.1\, \mathrm{eV}$ is sufficient for majority of cases as the convergence threshold using this way.

  • $\begingroup$ thanks for the explanation, yes im using QE for my calculations. $\endgroup$
    – Prasad
    Feb 1 at 2:29

You must log in to answer this question.

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