3.36 DFPT - density functional perturbation theory module
This code has recently been reorganised by Connor Box, the original DFPT implementation in FHI-aims was written by Honghui Shang and coworkers at FHI. Please contact connor.box@warwick.ac.uk for any questions related to the current implementation of DFPT in FHI-aims.
To compute vibrational frequencies, phonon band-structures, or molecular polarizabilities accurately, we need to understand how the electronic structure responds to external influences, such as nuclear displacements () or applied electric fields (). This response can be obtained through density-functional perturbation theory (DFPT), which assumes a linear response to external perturbations like lattice displacement or electric fields. While different perturbations require specific integrals, DFPT provides a general framework applicable to various response properties. A DFT calculation is carried out to obtain the ground-state electron density before initiating the general DFPT computation. Similar to the SCF algorithm in DFT, DFPT requires self-consistent convergence of response properties via the Coupled Perturbed SCF algorithm (CPSCF), including density response , first-order response Hamiltonian , and wave function expansion coefficients, . This process is universal, with the only property-specific aspects involving integrations over the relevant perturbation operator (e.g., during the construction of ). Once the first order density matrix is converged, various response properties such as phonon band-structures, phonon linewidth, or polarizability can be accurately determined.
We support DFPT calculations for:
-
•
For vibrations in non-periodic systems and phonons in periodic systems. See 3.37.
-
•
For homogeneous electric fields in non-periodic systems (polarizability) and in periodic systems (dielectric constant). See 3.38.
-
•
For electron-phonon coupling and electronic friction in non-periodic systems and periodic systems. See 3.40.
-
•
A different DFPT implementation allows calculations based on the response to magnetic fields. This implementation shares a few keywords, but is otherwise completely separate currently. See 3.46.
There are two key references that provide the technical background for this implementation of DFPT within FHI-aims:
-
1.
Lattice dynamics calculations based on density-functional perturbation theory in real space
Honghui Shang, Christian Carbogno, Patrick Rinke, Matthias Scheffler
Comp. Phys. Comm., 215, 26 (2017) -
2.
All-Electron, Real-Space Perturbation Theory for Homogeneous Electric Fields: Theory, Implementation, and Application within DFT
Honghui Shang, Nathaniel Raimbault, Patrick Rinke, Matthias Scheffler, Mariana Rossi, Christian Carbogno
New J. Phys., 20, 073040 (2018)
Some Technical details
Screened Method
In periodic systems, the Coulomb potential is long range, e.g. in a H atom as shown in Fig. 3.6, both and are (separately) never zero (they decay as 1/ but the number of atoms which they interact with in a periodic system grows as with distance). If we use the neutral free atom potential instead, the potential will approach zero at the radius where the electron charge integrates to exactly 1, which is a finite radius determined by the confinement potential in FHI-aims.
The general idea of screened scheme is to use free part of electronic Coulomb potential to screening the ion charge Coulomb potential and get short-range neutral potential:
| (3.128) | |||
So the total electrostatic potential can be written as[36]
| (3.129) | |||
| (3.130) |
We follow the line of screened scheme, the first order total electrostatic potential can be written as
| (3.131) | |||
| (3.132) |
In this way, the first order total electrostatic is divided into two parts: a free part and residual part , as shown in Eq. (3.132).
Tags for general section of control.in
Tag: dfpt_mixer(control.in)
Usage: dfpt_mixer type
Purpose: Specifies the electron density mixing algorithm used to
achieve fast and stable convergence towards the self-consistent
solution.
type specifies the density mixing algorithm used and can
be set to either linear, pulay.
Default: pulay.
Tag: dfpt_mixing(control.in)
Usage: dfpt_mixing value
Purpose: Sets the mixing parameter, an additional
linear factor that is multiplied with the output first order
density change of the Pulay mixer.
Default is .
Tag: dfpt_pulay_steps(control.in)
Usage: dfpt_pulay_steps number
Purpose: For this algorithm, dfpt_pulay_steps
determines the number of past iterations (=1,…,) to be
mixed with the first order density of iteration
.
Default is .
Tag: dfpt_sc_accuracy_dm(control.in)
Usage: dfpt_sc_accuracy_dm value
Purpose: Sets the accuracy threshold for the first order density matrix in the DFPT cycle.
Default is d.
Dimensions differ depending on the response type, atomic units are used for both response to atomic coordinate and electric field perturbations.
Tag: dfpt_find_lumo_by_occupation(control.in)
Usage: dfpt_find_lumo_by_occupation boolean
Purpose: In order to perform the sums over occupied and unoccpied states within the DFPT code, the highest occupied state (HOMO) and lowest unoccpied state (LUMO) need to be found. This is done by labelling the states according to whether their occupation is higher or lower than some small threshold. By setting this keyword to .false., the LUMO is instead assumed to be the HOMO+1 state. This keyword is included for legacy/testing purposes and should not need to be adjusted.
Default .true.
Tag: dfpt_width(control.in)
Usage: dfpt_width width
Purpose: Removes the divergence that can arise in case of small eigenvalue differences and/or fractional occupation numbers.
width is a real number that corresponds to the width of the smearing function (in eV).
The usual expressions employed to calculate the
first-order quantities fail when tiny eigenvalue differences are present and/or when the system under study has some fractional occupation numbers,
potentially leading to divergences when calculating the polarizability and dielectric constant.
In order to circumvent this, we use a similar scheme as the one proposed by de Gironcoli [70], which makes use of smearing functions to convolute the density of states.
WARNING: Currently not functional, expected to be implemented by end of 2024.
Default is eV
Tag: dfpt_centralised(control.in)
Usage: dfpt_centralised boolean
Purpose: Uses the 2021 unified interface for DFPT. Some further technical information is available at: https://www.overleaf.com/read/jxtnydzhhxtr. Set to False to use the original 2017 DFPT interfaces.
Default is .true.