Instead of copying a U value from the literature, you can compute the U appropriate to your own system by linear response (DFPT). The tool is hp.x (Timrov, Cococcioni, Marzari, Comput. Phys. Commun. 2022, 279, 108455), and the result is easier to defend than a borrowed value.

The principle in one line

Hubbard U is defined by how strongly the system pushes back when the occupation of the localized manifold is perturbed. hp.x computes that response matrix χ with density-functional perturbation theory and returns the screened interaction

$$U = (\chi_0^{-1} - \chi^{-1})$$

with no empirical input.

Workflow

pw.x (scf with a tiny U, conv_thr 1e-12) → hp.x → prefix.Hubbard_parameters.dat

Step 1. Use the input of Example E11 with the U set to a negligible value. The HUBBARD card must be present so hp.x knows which atoms and manifolds to perturb.

HUBBARD (ortho-atomic)
U Fe1-3d 1.0d-8
U Fe2-3d 1.0d-8

Set conv_thr in &ELECTRONS to about 1.0d-12; linear response is sensitive to the quality of the ground-state density.

Step 2. The hp.x input (&INPUTHP):

&INPUTHP
  prefix       = 'FeO'
  outdir       = './tmp/'
  nq1 = 2, nq2 = 2, nq3 = 2
  conv_thr_chi = 1.0d-6
  iverbosity   = 2
/
pw.x -in feo_hp_scf.in > feo_hp_scf.out
hp.x -in feo.hp.in     > feo.hp.out
cat FeO.Hubbard_parameters.dat

The result file lists U per atom. The FeO numbers are in Example E12.

conv_thr_chi is the convergence threshold for the response function χ. In systems whose GGA ground state is metallic (FeO is one), the numerical noise floor of χ sits around 10⁻⁷, so 1.0d-8 may never be reached (see Example E12).

Cautions

  • Convergence testing over the nq grid is mandatory. A U from 1×1×1 cannot be trusted, and the k-grid of the underlying scf must be converged along with it.
  • hp.x is expensive. The number of perturbations scales with the number of inequivalent Hubbard atoms, and each perturbation runs a linear-response cycle per q-point. -nk pool parallelism applies, and q-points can be split across jobs with start_q/last_q.
  • Feeding the computed U back into the HUBBARD card and repeating scf → hp.x gives a self-consistent U; one or two rounds usually stabilize it.
  • If you split labels (Fe1/Fe2), hp.x recognizes symmetry-equivalent atoms and skips redundant perturbations.
Common mistakes

Transplanting an hp.x U into a run with a different projector or pseudopotential. U is meaningful only within the conditions it was computed for (projector, pseudopotential, magnetic order). Also, a loose conv_thr on the preceding scf injects noise into the response matrix and swings U by whole eV: keep the 1.0d-12.