Here I show how to calculate GW correction for a generic k-point not included in the original grid used to perform a GW calculations using Yambo 4.2.
This method allows to obtain the GW correction without the need of recalculate the full dielectric constant used in the initial calculation.
As example I will take 2-dimensional hexagonal boron nitride, but the method is general and valid for solids of any dimension.
Notice that in yambo 4.2.0 there is a small bug so you have to overwrite the files
src/bz_ops/bz_samp_indexes.F and ypp/k-points/k_grids.F
with these two correct ones (k_grids.F and bz_samp_indexes.F).
This bug will be corrected in the new versions.
Here the steps for the calculation of GW correction on an arbitrary point of the BZ
- Start a standard GW calculation with Yambo with a give k-points grid, for example 6x6x1 in this case (DFT and Yambo inputs dft_inputs.tgz yambo_inputs.tgz)
- Generate a shifted grid that contains the point you are interested in with the command ypp -k k, for example the points (0.12345, 0.12345, 0.0), in this case ypp will generate a new grid with 28 points. (Notice that this grid contains the old one 7 k-points plus the shifted one 21 k-points)
- Recalculate wave-functions on this new k-points set, using the same number of bands of the initial calculation ( DFT_shifted.tgz )
- Read with the wave-functions and then using the command yambo -i -V kpt for the setup. In the input setup change the variable IkXLim to the number of k-points in the original grid, 7 in this case IkXLim = 7
- Copy the dielectric constant of the old calculation SAVE/ndb.pp* in the new SAVE/ folder
- Calculate the GW on the point we are interested in, for the example the point (0.12345, 0.12345, 0.0) corresponds to the k-point number 28.
I found this website very useful for me, thank you for your help
university of bejaia