23: Silicon \(G_0W_0\) bands structure interpolation¶
Note: This tutorial requires a recent version of the ypp
post-processing code of yambo
.
-
Outline: Interpolate the bands structure of silicon obtained from many-body perturbation theory at the \(G_0W_0\) level. Using the
yambo
code, the quasi-particle corrections (QP) are summed to Kohn-Sham eigenvalues, while the wavefunctions remain the same. -
Directory:
tutorials/tutorial23/
Files can be downloaded from here -
Input Files
-
silicon.scf
Thepwscf
input file for the ground state calculation -
silicon.nscf
Thepwscf
input file to obtain Bloch states on a uniform grid -
silicon.gw.nscf
Thepwscf
input file to obtain Bloch states on a reduced grid with many empty bands -
silicon.pw2wan
The input file forpw2wannier90
-
silicon.win
Thewannier90
input file -
silicon.gw.win
Thewannier90
input file (for the \(G_0W_0\) step) -
yambo.in
Theyambo
input file -
ypp.in
Theypp
input file
-
-
Copy the input files from the
INPUT directory
into a working directory (e.g.WORK
) -
Run
pwscf
to obtain the ground state charge of silicon -
Run
pwscf
to obtain the Bloch states reduced grid. We use a 8x8x8 with many bands (many empty bands are needed to perform a \(G_0W_0\) withyambo
) -
Use the
k_mapper.py
utility to find the indexes of a 4x4x4 uniform grid into the 8x8x8 reduced gridUse the output to complete the
yambo.in
input file (you also need to specify how many bands you want to compute the QP corrections, here you can use all the bands from 1 to 14). Then, you should have obtained something like: -
Enter the
si.save
directory and runp2y
. ASAVE
folder is created, you can move it up in the/WORK/
directory. -
Run a \(G_0W_0\) calculation from the
/WORK/
directory (remember, we are using a 8x8x8 grid but computing QP corrections only on a 4x4x4 grid) -
Run
pwscf
to obtain the Bloch states on a uniform k-point grid -
Run
wannier90
to generate a list of the required overlaps (written into thesilicon.nnkp
file). -
Run
pw2wannier90
to compute the overlap between Bloch states, the projections for the starting guess (written in thesilicon.mmn
andsilicon.amn
respectively). -
Run
wannier90
to compute the MLWFs.At this point, you should have obtained the interpolated valence bands for silicon at the DFT level.
-
Run a
ypp
calculation (just typeypp
)You should obtain a file
silicon.gw.unsorted.eig
which contains the QP corrections on a uniform 4x4x4 grid. -
Run the gw2wannier90.py script to reorder, align and correct all matrices and files using the QP corrections
-
Run
wannier90
to compute the MLWFs.At this point, you should have obtained the interpolated valence bands for silicon at the \(G_0W_0\) level.
After you completed the tutorial for the valence bands only, you can repeat the final steps to interpolate also some conduction bands using disentanglement (the code is already present as comments in the input files).