3.37 Response to atomic coordinate perturbations using DFPT for Hessian and phonon calculations
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 carbogno@fhi-berlin.mpg.de for any questions related to the response of atomic perturbations using DFPT in FHI-aims.
The user is warned that this driver routine is not well maintained and may not work as expected. Please contact the developers for further information.
Any interested user is directed to the main reference for this implementation:
-
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)
Lattice Dynamics
In order to get vibration/phonon frequencies, first we need to get dynamical matrix, Let’s define a lattice vector as
| (3.133) |
whereby denotes an arbitrary linear combination of , , and . And the dynamical matrix is a Fourier transform of harmonic Hessian matrix (Force constant) .
| (3.134) |
Since the finite () dynamical matrix would in principle have to be determined for an infinite number of -points in the Brillouin zone. Its diagonalization would produce a set of -dependent eigenfrequencies and -vectors .
In order to derive the second order derivatives for total energy analytically (which is the key idea for the DFPT approach), the ground state total energy and force is derived first and we could get this second order derivatives directly. It is should be noted that, here real-space DFPT method is used, so that we could get the real-space force constant directly.
In FHI-aims, the total energy is calculated by using band-energy, a derivation for cluster systems is a following, and the extending to extended systems is straightforward.
| (3.135) |
using
we have
| (3.136) |
| (3.137) |
| (3.138) |
| (3.139) |
| (3.140) |
Here Eq.(3.140) is exactly the one to calculate Kohn-Sham total energy. An extension expression to extended system is in Eq.3.141
| (3.141) | |||
Then we get the analytical force expression for cluster systems:
| (3.142) |
Here refers to density matrix and refers to energy density matrix. Here the first term is Hellmann-Feynman force using Hellmann-Feynman theorem ; The second term is Pulay term, it comes from basis set dependence of atomic coordinate; The third term is multipole force, it count the contribution from multipole expansion error for Hartree energy calculation (multipole Poisson solver).
Under periodic boundary conditions, we get the following expression for force for extended systems:
| (3.143) |
| (3.144) |
In our real-space DFPT method, this harmonic Hessian matrix is calculated directly, as explained in our paper. The Hessian can be split into two part
| (3.145) |
It can also be divided into three part: Hellmann-Feynman Hessian, Pulay Hessian, Multipole Hessian. In real calculation, we drop multipole Hessian due to its value is only times small compared with the other two.
Under periodic boundary conditions, we get the following expression for force constants:
| (3.146) |
in which denotes a multi-index Kronecker delta.
For the sake of readability, its total derivative is split into four terms:
| (3.148) |
The first term
| (3.149) |
accounts for the response of the density matrix . The second term
| (3.153) | |||||
accounts for the response of the Hamiltonian , while the third and fourth term
| (3.154) | |||||
| (3.155) |
for the response of the energy weighted density matrix and the overlap matrix , respectively, Please note that in all four contributions many terms vanish due to the fact that the localized atomic orbitals are associated with one specific atom/periodic image , which implies, e.g.,
| (3.156) |
In the above force constants, it is clear that the first order density matrix and the first order energy density matrix are needed. These first order qualtities are obtained in the DFPT cycle. The flowchart of our DFPT cycle for lattice dynamics is shown in Fig.3.8.
The atomic perturbation response calculation is triggered by setting the atomic_pert_response keyword to DFPT in the control.in file. The atomic_pert_serial keyword can be used to determine whether the CPSCF cycle is carried out for each atomic coordinate in serial, or for all atomic coordinates at the same time (i.e CPSCF cycles or 1 longer CPSCF cycle).
Tags for general section of control.in
Tag: atomic_pert_response(control.in)
Usage: atomic_pert_response type
Purpose:
type specifies the method to calculate response to atomic coordinate perturbations and triggers such a calculation.
Currently, only DFPT is a valid option.
Default: DFPT.
Hessian/Dynamical matrix part of the calculation is only calculated at the LDA level.
For periodic systems, only peturbations are supported.
Tag: atomic_pert_serial(control.in)
Usage: atomic_pert_serial boolean
Purpose:
Determines whether the DFPT cycle is carried out for each atomic coordinate in serial, or for all atomic coordinates at the same time.
Not much difference between the two. Generally no need to alter this.
Default: .true..