Developed by Pedro Brandimarte and A. R. Rocha

  • C
  • shell script
Key words
  • vibrational analysis
  • modes and frequencies
  • electron-phonon coupling
  • density functional theory

Introduction

This is a practical description of the code PhOnonS ITeratIVE VIBRATIONS, a tool for computing materials’ vibrational modes and frequencies and electron-phonon coupling matrices, from first principles calculations. It is based on code SIESTA [1, 2], a density functional theory (DFT) implementation.

With the purpose of calculating the vibrational modes and frequencies, the POSITIVE VIBRATIONS code uses the force constant (FC) matrix as calculated by SIESTA. In order to minimize the effects arising from the use of a discrete grid on FC calculation (such as the so-called egg-box effect [1]), the POSITIVE VIBRATIONS code applies some corrections by enforcing momentum conservation and the FC matrix symmetrization.

To compute the electron-phonon coupling matrices some modifications were performed on SIESTA code, following the methodology described in [3].

The POSITIVE VIBRATIONS source code is stored as a git repository and can be easily downloaded with the line command:

git clone https://github.com/brandimarte/vibrations.git

Compilation

The compilation of the program is done using a Makefile. Some examples of Makefile for different architectures are provided with the code. Basically, the user should set the C compiler and its options, and give the path for LAPACK libraries (Linear Algebra PACKage [4]).


Execution Steps and Options

Vibrational Modes and Frequencies

The first step is to execute a FC calculation with SIESTA code (for a detailed description on how to perform a force constant calculation in SIESTA and the required flags in input file, refer to the SIESTA user’s guide [2]). The usual FC calculation is enough if one is interested only in vibrational frequencies and modes, which then can be calculated with the following command:

vibrations ~/PathToFCdir input.fdf onlyPh

The first string (vibrations) is the POSITIVE VIBRATIONS executable. The second (~/PathToFCdir) is the path to the directory where the FC calculation was performed. The third argument (input.fdf) is the SIESTA fdf input file used in the FC calculation (refer to SIESTA user’s guide for details) and the last one (onlyPh) tells to the code that one is only looking for the vibrational frequencies and modes (i.e. the electron-phonon coupling computation will be neglected).

During the POSITIVE VIBRATIONS code execution the calculation progress is printed on screen. The computed vibrational frequencies are enumerated in ascending order and the corresponding modes follow the same enumeration (i.e. the last mode corresponds to the highest frequency).

One possibility to accelerate the FC calculation on SIESTA is to split over the atoms which are being moved, by performing a FC computation on each atom independently. An example of script for that (runFC.sh) is provided with the code. For each dynamic atom i (those who will be displaced), the script creates the folder FCi and submit for execution. In this case the total force constant matrix will be split over the individual directories and, in order to inform the POSITIVE VIBRATIONS code about that, one should include an additional splitFC option:

vibrations ~/PathToFCdir input.fdf onlyPh splitFC

The POSITIVE VIBRATIONS code can generate files for visualizing the vibrational modes according to Jmol viewer format [5]. For that, the file SystemLabel.xyz with non-displaced coordinates must be present on the directory where the FC calculation was performed. For each mode j a file SystemLabelJMOLj.xyz is generated, containing the system’s coordinates and the mode eigenvector. When opening this file with Jmol viewer one can visualize the corresponding vectors and an animation of the vibrational mode.

Electron-Phonon Coupling Matrices

In order to compute the electron-phonon coupling matrices one should include the following flag in the input.fdf file for FC calculation:

FCwriteHS (Boolean): When FCwriteHS is set to T, the modified SIESTA will write: a file SystemLabel_d.gHS for each displacement d containing the Hamiltonian and the overlap matrices, a file SystemLabel.ef containing the FC step and the corresponding computed Fermi energy, and a file SystemLabel.orb containing the last orbital index of each atom of the entire system (starting from 0).

Default value: F

The generated files will be used by the POSITIVE VIBRATIONS code for computing the derivative of the electronic Hamiltonian with respect to the atoms displacements, which is needed when calculating the electron-phonon coupling [3].

In addition to the FC calculation, one needs to execute the modified SIESTA one more time for computing matrix elements like ‹i‘|k› and ‹l|j‘›, where ‹i‘| represents the variation of the basis orbital with respect to the displacement of an atom in a given direction. These elements will be used by the POSITIVE VIBRATIONS code for correcting the electronic Hamiltonian derivatives. They can be obtained from the overlap matrix resulting from a SIESTA execution for a duplicated system, where the duplicated atoms are displaced in one of the directions (totaling six different runs: -x, +x, -y, +y, -z and +z).

To automate this procedure, a script runOS.sh was develop. It receives the SIESTA fdf input file (input.fdf), sets the flag FCwriteHS to F and include the following flag as T:

FConlyS (Boolean): When FConlyS is set to T, the modified SIESTA will write the overlap matrix (which happens at the beginning of the program) at the file SystemLabel.oS and finishes the execution.

Default value: F

The script runOS.sh then duplicates the system and displaces the duplicated atoms in each direction. At each displacement d the system label is modified to SystemLabel_d (where d goes from 1 to 6 meaning -x, +x, -y, +y, -z and +z, respectively) and the modified SIESTA is executed. This procedure is very fast, since the overlap matrix is built at the beginning of SIESTA and the execution is finished just after that.

Once this is done the electron-phonon coupling matrices can be computed (together with the vibrational frequencies and modes) with POSITIVE VIBRATIONS code with the following command:

vibrations ~/PathToFCdir input.fdf full

Here vibrations is the POSITIVE VIBRATIONS executable, ~/PathToFCdir is the path to the directory where the FC calculation was performed, input.fdf is the SIESTA fdf input file used in the FC calculation (refer to SIESTA user’s guide for details) and full tells to the code that the electron-phonon coupling matrices will be computed besides the vibrational frequencies and modes. Note that the overlap matrix files described above (SystemLabel_d.oS) should be in the FC folder.

If the FC calculation was split over the displaced atoms (see Vibrational Modes and Frequencies above) one should include an additional splitFC option:

vibrations ~/PathToFCdir input.fdf full splitFC

In addition to the output files described in Vibrational Modes and Frequencies above, the POSITIVE VIBRATIONS code generates the following file:

SystemLabel.Meph: The first line contains integer numbers separated by white spaces corresponding to the following information: the number of spin components, the number of dynamic atoms (those that were displaced on FC calculation), the number of dynamic orbitals, the first dynamic orbital index and the last dynamic orbital index. The next line contains the vibrational frequencies (in eV) in descending order separated by white spaces (if it was considered n atoms in the vibrational analysis, then there should have 3 n frequencies). The following lines contains the electron-phonon coupling matrices (in eV) in the same order as the frequencies (for each frequency there must have one electron-phonon coupling matrix).


Problem Handling

The users are encouraged to report problems and bugs to the POSITIVE VIBRATIONS’s developers at github. Patches and fixes will be uploaded to the web-site https://github.com/brandimarte/vibrations.


Acknowledgements

PBM thanks CNPq (National Council of Technological and Scientific Development) for financial support (grant 142792/2010-1).


References

[1] J. M. Soler, E. Artacho, J. D. Gale, A. García, J. Junquera, P. Ordejón and D. Sánchez-Portal, J. Phys. Cond. Mat. 14, 2745-2779 (2002).

[2] http://departments.icmab.es/leem/siesta/

[3] T. Frederiksen, M. Paulsson, M. Brandbyge and A.-P. Jauho, Phys. Rev. B 75, 205413 (2007).

[4] LAPACK - Linear Algebra PACKage. http://www.netlib.org/lapack/

[5] Jmol: an open-source Java viewer for chemical structures in 3D. http://jmol.sourceforge.net