Hi, I’ve tried to execute an scGW calculation for the AlP band structure, following the instructions at the end of tutorial GW1. After an initial GW0 convergence study and run, I starting using the output of each GW run to execute the next GW run. I did 5 iterations in this way, and it seemed to work–by the end, the Delta_E term in the !SigmaeeData block of the output file had dropped to nearly zero, and the QP gap from Gamma to X had increased from 2.50 eV (G0W0) to 2.54 eV, which is very close to experiment. However, trying to plot the band structure by interpolating the SIGRES.nc file for the 5th iteration, as per the abipy plotting gallery, gives data that are nearly indistinguishable from the original KS band structure, while the G0W0 run looks quite different. I suspect that I am inadvertently plotting the KS energies plus the QP change to the previous QP step, which is close to zero because the 5th iteration is converged. How would you go about plotting the band structure of an scGW calculation? Thanks!!
Hello,
Did you follow this abipy script?
https://abinit.github.io/abipy/gallery/plot_qpbands_with_interpolation.html#sphx-glr-gallery-plot-qpbands-with-interpolation-py
Could you please post your abi file?
Thanks!
Yes that’s the script I used. My input file is attached–the KS bands and QPS from the initial G0W0 run are what are referred to as input 99. thanks–
gs-scgw.in (2.5 KB)
You may need to have gw_qprange in your input file. Please see GW - abinit
Isn’t gw_qprange exclusive with nkptgw and related? I had set nkptgw, kptgw, and bdgw explicitly, doesn’t that do the same thing as gw_qprange? (that’s at least what the documentation says). Does gw_qprange trigger different output in the SIGRES file?
nkptgw and bdgw provide you with the qp energy in the exact kpoints. To get the band structure you need intermediate points. To have them, you need to use gw_qprange.
Well I think that’s what the interpolate step is for in abipy. Anyway, that’s the way I believe I’ve now solved the problem, the trick is in the abipy workup, to run the sigres.interpolate step iteratively, in the same way that the original files were generated. Thus sigres5 is interpolated from sigres4, which is interpolated from sigres3, and so forth. This method is showing the convergence of the band structure properly.
For the record, this what I’m doing to plot-
plot-scGW.py.tgz (990 Bytes)
There are probably cleverer and more pythonic ways of doing it with robots or something, but this is what I mean by generating the band structure iteratively from the corrections.
Thank you for the update!