Skip to main content

DFT+U calculation

Electronic structure for transition metals (with localized dd or ff electrons) is not accurately described by standard DFT, and therefore the need for DFT+U formulation.

lda_plus_u = .TRUE.
Hubbard_u(i) = 2.0

Here i refers to the atomic index in the &ATOMIC_SPECIES card corresponding to each ntyp. We can specify Hubbard_u(i) corresponding to more than one atom in separate lines.

There is also Ueff=UJU_{eff} = U - J implementation in QE. JJ represents on-site exchange interaction. Number of JJ terms depends on the manifold of localized electrons. For pp, we have 1; for dd, we have 2; and for ff, we have 3 terms.

lda_plus_u = .TRUE.
lda_plus_u_kind = 1
Hubbard_u(i) = U
Hubbard_J(k, i) = J_{ki}

If you add Hubbard_u for elements that is not implemented to have UU term in QE, you might see a "pseudopotential not yet inserted" error.

Changes to input syntax in v7.1

Starting from Quantum Espresso version 7.1, there are changes to input syntax for DFT+U calculations. In the new version, instead of defining the necessary DFT+U parameters, now there is a new Hubbard card.

- lda_plus_u = .true.,
- lda_plus_u_kind = 0,
- U_projection_type = 'atomic',
- Hubbard_U(1) = 4.6
- Hubbard_U(2) = 4.6

+ HUBBARD (ortho-atomic)
+ U Fe1-3d 4.6
+ U Fe2-3d 4.6

Please refer to the qe-x.x/Doc/Hubbard_input.pdf for details.

DFT calculation for FeO

We will first perform the standard DFT calculation.

  1. Perform the SCF calculation:
pw.x -in > feo_scf.out
  1. Perform NSCF calculation with denser k-grid:
pw.x -in > feo_nscf.out
  1. Perform P-DOS calculation:
projwfc.x -in > feo_projwfc.out

This gives us metallic density of states. In practice we get insulating FeO.

Calculating Hubbard U

prefix = 'FeO'
outdir = './tmp/'
nq1 = 1, nq2 = 1, nq3 = 1

Perform a linear-response calculation using hp.x program:

hp.x -in > feo_hp.out

Check the file FeO.Hubbard_parameters.dat.

  1. We need to check the convergence against q-mesh (as well as k-mesh in SCF calculation). Here 1×1×11\times 1\times 1 mesh is used. Important: lda_plus_u must be set to .true. during the SCF calculation, UU may be set to zero.

  2. We can update the obtained UU value in our SCF calculation, and repeat linear response calculation until we have reached self consistency in UU value.

  3. To go even further one can check the convergence of geometry during UU updates.

  4. There is also inter-site Hubbard correction DFT+U+V calculation. The results could be more closer to hybrid functionals like GW. The VV can also be calculated using Quantum Espresso hp.x code.

  5. Obtained value of UU depends on pseudopotential, Hubbard manifold (whether atomic, ortho-atomic etc.).


The above hp.x code is not suitable for closed cell systems (e.g., fully occupied d-shell element), in such cases this linear response method gives unrealistically large UU value.

DFT+U calculation

We repeat the calculation after setting in the &SYSTEM card:

Hubbard_U(1) = 4.6
Hubbard_U(2) = 4.6

We repeat the above calculation and plot the results. Now we find insulating ground state.


U_projection_type = 'ortho-atomic' might give more realistic result than the default 'atomic'.

When performing DFT+UDFT+U calculation, the ground state might get stuck in a local minimum, in such cases we need to provide starting_ns_eigenvalue to help calculation reach desired/actual ground state. Please see these slides by Dr. Iurii Timrov for a relevant example.


Here we have plotted the lpdos (local density of states). If we want to know the contribution of dz2,dyz,dx2z2d_{z^2}, d_{yz}, d_{x^2-z^2} ect., we can find them from the pdos columns. Also there arise important Lowdin charges information in the feo_projwfc.out file.