Header Ads Widget

Ab initio Calculations Using Wien2k Code

Last Posts

10/recent/ticker-posts

The problem of the folding of the electronic bands in supercell calculations

Before talking about the ptoblem of the folding of the electronic bands which occurs when using supercell technique to do calculations for alloying, doping or distorsion we will talk about the problematic created in calculating structure of the supercell structures.

1- The problematic 

The electronic band structure is no doubt one of the most widely applied analysis tools in the first-principles electronic structure calculations of crystals, especially within the Kohn-Sham framework [1] of density functional theory [2].  It contains the basic ingredients to almost all the textbook descriptions of crystal properties (e.g. transport, optical and magnetic properties, and the semiclassical treatment [3]). Furthermore, the theoretical band structure, when formulated within the quasiparticle picture of the one-particle Green function, has a direct experimental connection with angular-resolved photoemission spectroscopy (ARPES).

However, the usefulness of the band structure, as well as the agreement with ARPES spectra, diminishes rapidly when a large “super cell” is involved. The use of super cells is a common practice in modern firstprinciples studies when the original periodicity of the system is modified via the introduction of “external” influences from impurities or lattice distortions. They are also widely applied in the presence of spontaneous translational symmetry breaking, say by a charge density wave, a spin density wave, or an orbital ordering.


As illustrated in Fig. 1, when the period of the super cell grows longer, the corresponding first Brillouin zone of the super cell (SBZ) shrinks its size. In turn, bands in the first Brillouin zone of the normal cell (NBZ) get “folded” into the SBZ. For a very large super cell, the resulting SBZ can be tiny in size but contain a large number of “horizontal” looking bands that no longer resemble the original band structure or the experimental ARPES spectra, and cease to be informative besides giving a rough visualization of the density of states (DOS). The information is now hidden in the Kohn-Sham orbitals, instead of the dispersion of the bands.

To learn more about the folding problem read the following article:

https://www.researchgate.net/publication/46423658_Unfolding_First-Principles_Band_Structures


2- Unfolding the bands


To study how to unfold the electronic bands using the wien2k code read the following article

https://arxiv.org/pdf/1405.4218.pdf



FIG. 4. Band structure of Ga64As64 (a) and Ga64As63Bi1 (b) supercells unfolded to the primitive Bloch representation. Bismuth incorporation leads to perturbations in the valence band, reduction of the band gap and enhanced spin-orbit splitting.

3- How to download , compile the "fold2bloch" package  

To do this unfolding we need to install "fold2bloch" package as follows:

  1. Download "fold2Block.F90", "util.F", and "fetcharg.h" files.
  2. Create a directory called fold2Bloch
$ mkdir fold2Bloch
  1. Put the 3 downloaded files into newly created directory:
$ mv fold2Bloch.F90 util.F fetcharg.h ~/fold2Bloch
  1. Compile the program:
$ ifort -warn all -traceback -free util.F fold2Bloch.F90 -o fold2Bloch
Note: use the same compiler as for WIEN2k


 Reference: https://github.com/rubel75/fold2Bloch-Wien2k/wiki/Installation

Check the following video about how to download the "fold2bloch" package


Check the following video about how to compile the "fold2bloch" package



3- Example of calculation  Bismuth in GaAs

Here we create a 16-atoms (2x2x2) supercell of GaAs and replace a single As with Bi. This corresponds to a Ga(AsBi) alloy with to approximately 12% of Bi. Then we compute the unfolded band structure and observe changes in the bands dispersion due to Bismuth incorporation. This tutorial should take roughly 60min to complete. The time was based on 4 thread processing.
The following is the corresponding Supercell:
  1. Create a working directory called /tutorial_2
mkdir tutorial_2
  1. Download Ga8As7Bi1.struct and Ga8As7Bi1.klist_band files from (https://github.com/rubel75/fold2Bloch/tree/master/Tutorials/Tutorial_2) into your working directory.
  2. Run initialization:
init_lapw -b -numk 100
  1. Run the calculations:
run_lapw
  1. Recalculate the vector file (Ga8As7Bi1.vector) for the list of k-points in Ga8As7Bi1.klist_band
x lapw1 -band
Please make sure that the SCRATCH variable points to your work directory. The list of k-points spans the path shown on the figure below.
  1. Once LAPW1 finishes, make sure that the vector file is created:
ls -l *.vector
The vector files are usually large. In this case the volume is only ... MB, but for 100 supercells can easily reach 20 GB.
  1. Create a sub-directory f2b:
mkdir f2b
  1. Copy Ga8As7Bi1.vectorGa8As7Bi1.struct and Ga8As7Bi1.klist_band files to the f2b directory and then go there:
cp Ga8As7Bi1.vector Ga8As7Bi1.struct Ga8As7Bi1.klist_band f2b
cd f2b
  1. Rename Ga8As7Bi1.klist_band to Ga8As7Bi1.klist:
mv Ga8As7Bi1.klist_band Ga8As7Bi1.klist
(Note: if the Ga8As7Bi1.klist has been tampered with or is missing, fold2Bloch will still run and perform all the calculations, but it will advise you if it's missing or the number of K-points is inconsistent with the Ga8As7Bi1.vector)
  1. Now that we have all the files we can run fold2Bloch:
~/fold2Bloch/fold2Bloch -c Ga8As7Bi1.vector 2:2:2
Here 2:2:2 refers to the supercell, which was constructed by repeating the primitive cell twice along Y-axis and three times along Z-axis. The option -c indicates complex calculation (default); for real calculation you do need to specify -r option. After running fold2Bloch, you should see the following output:
            ***********************
            ** Fold2Bloch V 1.05 **
            ** Build May 20, 2014 **
            ***********************
  Complex calculation indicated
  FILE TO PROCESS: Ga8As7Bi1.vector
  /\/\/\ UNFOLDING VECTOR FILE /\/\/\
  Processing K-Point: 0.500 0.000 0.000
  Processing K-Point: 0.444 0.000 0.000
  Processing K-Point: 0.389 0.000 0.000
  ...
  Processing K-Point:-0.455-0.455 0.000
  \/\/\/ UNFOLDING FINISHED SUCCESSFULLY \/\/\/
  Number of K points processed:          39
  Data was written to: Ga8As7Bi1.unfolded
  Data format: KX, KY, KZ, Eigenvalue(Ry), Weight
  Ga8As7Bi1.klist matches the vector file. 
Notice how it says "Ga8As7Bi1.klist matches the vector files", indicating that .klist and .vector files have the same number of k-points.
  1. Compare the data from Ga8As7Bi1.unfolded that was just created with the following file: Ga8As7Bi1.unfolded
[stud2@feynman f2b]$ head Ga8As7Bi1.unfolded
 0.250000   0.000000   0.000000  -2.202982   0.092030
 0.250000   0.000000   0.500000  -2.202982   0.142424
 0.250000   0.500000   0.000000  -2.202982   0.142421
 0.250000   0.500000   0.500000  -2.202982   0.123125
-0.250000   0.000000   0.000000  -2.202982   0.092030
-0.250000   0.000000   0.500000  -2.202982   0.142424
-0.250000   0.500000   0.000000  -2.202982   0.142421
-0.250000   0.500000   0.500000  -2.202982   0.123125
 0.250000   0.000000   0.000000  -2.202885   0.086495
 0.250000   0.000000   0.500000  -2.202885   0.12626
  1. You can plot the data in Ga8As7Bi1.unfolded using the ubs_dots.m script and you should have a graph similar to the one below:


Check the following video  for this example



Post a Comment

0 Comments