Skip to content

Unfolding the band structure of a supercell obtained with VASP

License

Notifications You must be signed in to change notification settings

jtsun/fold2Bloch-VASP

 
 

Repository files navigation

fold2Bloch

The fold2Bloch utility is designed to unfold the band structure of a supercell obtained with the Vienna Ab initio Simulation Package (VASP) and compute an effective band structure in a primitive representation. It facilitates interpretation of large-scale electronic structure calculations, where the Bloch character of electronic eigenstates is perturbed by a disorder (defects, alloy elements, etc). Reading of wavefunctions is adapted from the WaveTrans code.

Contributors:

  • Oleg Rubel (McMaster University oleg.v.rubel@gmail.com)
  • Michael Widom and Randall Feenstra (Carnegie Mellon University)
  • Anton Bokhanchuk (Confederation College)

Installation:

First clone the GitHub repository

$ git clone https://github.com/rubel75/fold2Bloch-VASP

The makefile is set up for Intel Fortran compiler ifort. To compile, simply execute

$ cd fold2Bloch-VASP; make

Execution

First, you need to perform the band structure calculation and generate WAVECAR file for the k-mesh of interest using standard VASP procedure (see VASP guidelines). (The folliwing Matlab script utils/fold.m is designed to assist with preparing a folded string of k-points that will unfold on a desired k-path.) It is advised to increase the number of empty bands (NBANDS=... in INCAR file) by a factor of 1.2-2 beyond a VASP-proposed defaul value to get a resonable description of higher energy states.

Once WAVECAR is ready, execute

/path/to/fold2Bloch WAVECAR FX:FY:FZ [-ncl]

Options:

WAVECAR -- name of the input VASP wavefunction file

FX:FY:FZ -- multiplicity of the primitive cell that was used to construct a supercell. Note: the supercell should be constracted on the basis of the primitive cell (not conventional).

-ncl -- optional switch that needs to be activated when the WAVECAR is produced by vasp_ncl code, which implies that the wavefunctions are spinors (default assumption is that WAVECAR comes from vasp_std or vasp_gam).

Output

Output is writen to WAVECAR_*.f2b file(s). There is one output file for non-spin-polarized calculation and two files for the spin-polarized or spinor (vasp_ncl) calculations. Below is a sample of an output file.

New K-values (x, y, z)       Eigenvalue (eV)  Weight
0.000000   0.000000   0.000000 -22.019998   1.000000
0.000000   0.200000   0.000000 -22.019998   0.000000
0.000000   0.400000   0.000000 -22.019998   0.000000
0.000000  -0.400000   0.000000 -22.019998   0.000000
0.000000  -0.200000   0.000000 -22.019998   0.000000
0.200000   0.000000   0.000000 -22.019998   0.000000
...

Plotting results

The Matlab code utils/ubs_dots_VASP.m is designed to assist with plotting the band structure and the Bloch weights. Please refer to its input section for description of user input variables. Below is a sample of the Matlab plot for the unfolded band structure of a dilute GaP:N alloy.

alt text

References

If you find the results usefull and publishable, we will appreciate citing the following papers:

License

fold2Bloch is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

fold2Bloch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

About

Unfolding the band structure of a supercell obtained with VASP

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Fortran 77.0%
  • MATLAB 20.9%
  • Makefile 2.1%