Self-interaction correction schemes

It is well known that local and semilocal functionals suffer from the so-called self-interaction error. One possible way to improve upon this is to correct the DFT energy using some self-interaction correction (SIC) schemes, as proposed originally by Perdew and Zunger.1

In Octopus, we provide several levels of SIC , including the average-density SIC (ADSIC), the Amaldi SIC, and the Perdez-Zunger SIC. These schemes are available for unpolarized and spin-polarized calculations. For spinors, only ADSIC and Perdez-Zunger SIC are available, following the noncollinear extension of these schemes proposed in Ref. 2.

Average-density SIC

In this tutorial, we will see how to employ such a scheme, focusing on the ADSIC and PZ-SIC applied to a single atom. Here is the minimal input file needed to perform the calculation for ADSIC

CalculationMode = gs
FromScratch = yes

PseudopotentialSet = hgh_lda

  "Ar" | 0 | 0 | 0

Spacing = 0.3
radius = 10.0

SICCorrection = sic_adsic

Eigensolver = chebyshev_filter
ExtraStates = 5

The only input option that is used here that relates to the SIC correction is the variable SICCorrection. It is set to use here the ADSIC correction scheme. Running this example produces the following eigenvalues, written in the static/info file.

Eigenvalues [H]
 #st  Spin   Eigenvalue      Occupation
   1   --    -1.097222       2.000000
   2   --    -0.587371       2.000000
   3   --    -0.587371       2.000000
   4   --    -0.587371       2.000000
   5   --    -0.167078       0.000000
   6   --    -0.091885       0.000000
   7   --    -0.091867       0.000000
   8   --    -0.091188       0.000000
   9   --    -0.056291       0.000000

The highest occupied eigenvalue (here three times degenerate) leads to an ionization energy of 15.98 eV. Redoing the same calculation without SIC produces an ionization energy of 10.38 eV. The experimental value lies between 15.7 to 15.8 eV (see the NIST website), showing that the ADSIC can improve considerably the ionization energy obtained from local and semi-local functionals like LDA.

Perdew-Zunger SIC

If one wants to use Perdew-Zunger SIC, instead of ADSIC, one simply needs to change SICCorrection to sic_pz. However, it is important to note that the Perdew-Zunger SIC requires the solution of the OEP equations. By default, Octopus uses the KLI approximation to the full solution. The level of approximation for the OEP equation is controled by the variable OEPLevel. Finally, it is important to note that the Perdew-Zunger SIC depends on the individual Kohn-Sham orbitals. A unitary transformation of these orbitals therefore changes the result of the Perdew-Zunger SIC. Octopus implements the Wannierization scheme proposed by Lin and co-workers, the SCDM method 3, for transforming the Kohn-Sham to more localized orbitals. This can be done using the variable SCDMforPZSIC.


  1. J. P. Perdew and A. Zunger, Self-interaction correction to density-functional approximations for many-electron systems, Phys. Rev. B 23 5048 (1981); ↩︎

  2. N. Tancogne-Dejean, M. Lueders, C. A. Ullrich, Self-interaction correction schemes for non-collinear spin-density-functional theory, J. Chem. Phys. 159 224110 (2023); ↩︎

  3. A. Damle, L. Lin, L. Ying, Compressed Representation of Kohn–Sham Orbitals via Selected Columns of the Density Matrix, J. Chem. Theory Comput. 11 1463 (2015); ↩︎