Self-consistent GW on eigenvalues only: Difference between revisions
No edit summary |
No edit summary |
||
Line 8: | Line 8: | ||
# Generate an input file for a G<sub>0</sub>W<sub>0</sub> calculation as explained in the [http://www.yambo-code.org/wiki/index.php?title=How_to_obtain_the_quasi-particle_band_structure_of_a_bulk_material:_h-BN GW basics tutorial] doing: <br><code> yambo -X p -g n -p p -V qp -F yambo_g0w0_input.in </code> | # Generate an input file for a G<sub>0</sub>W<sub>0</sub> calculation as explained in the [http://www.yambo-code.org/wiki/index.php?title=How_to_obtain_the_quasi-particle_band_structure_of_a_bulk_material:_h-BN GW basics tutorial] doing: <br><code> yambo -X p -g n -p p -V qp -F yambo_g0w0_input.in </code> | ||
# run your first GW calculation doing: <br><code>yambo –F yambo_g0w0_input.in -J G0W0</code> | # run your first GW calculation doing: <br><code>yambo –F yambo_g0w0_input.in -J G0W0</code> | ||
# at the end of the run you will get a quasi-particle file o-G0W0.qp.<br> Now you can read this new quasi-particle band structure and perform another GW.<br> | # at the end of the run you will get a quasi-particle file <span style="color:green">o-G0W0.qp</span>.<br> Now you can read this new quasi-particle band structure and perform another GW.<br> | ||
# copy your gw input in a new file: <span style="color:blue"> cp yambo_g0w0_input.in yambo_g1w1_input.in </span> | # copy your gw input in a new file: <span style="color:blue"> cp yambo_g0w0_input.in yambo_g1w1_input.in </span> | ||
# modify the <code>yambo_g1w1_input.in</code> to force Yambo to read the previous quasi-particle corrections<br> <code> GfnQPdb= "E < ./G0W0/ndb.QP"</code><br> and<br> <code>XfnQPdb= "E < ./G0W0/ndb.QP" </code><br> | # modify the <code>yambo_g1w1_input.in</code> to force Yambo to read the previous quasi-particle corrections<br> <code> GfnQPdb= "E < ./G0W0/ndb.QP"</code><br> and<br> <code>XfnQPdb= "E < ./G0W0/ndb.QP" </code><br> | ||
# repeat point 1) and 2) for the G1W1, G2W2, etc… until the differences between < | # repeat point 1) and 2) for the G1W1, G2W2, etc… until the differences between <span style="color:green">o-GnWn.qp</span> and <span style="color:green">o-Gn+1Wn+1.qp</span> are small enough. | ||
Usually self-consistent GW converges in about 3/4 iterations. Notice that in many molecular systems the self-consistency on the eigenvalues only (evGW) can modify the level orders. | Usually self-consistent GW converges in about 3/4 iterations. Notice that in many molecular systems the self-consistency on the eigenvalues only (evGW) can modify the level orders. |
Revision as of 21:20, 19 February 2021
In this tutorial you will learn how to perform self-consistent GW on eigenvalues only for G or both G and W. For molecules systems and also for many solids, the G0W0 approach often gives poor results. The main reason of this failure is that the DFT starting point with local or semi-local exchange correlation functionals give a too small gap compared with the experimental one, and a single shot GW is not able to correct this error. In order to overcome this problem a possible solution is to use as starting point a hybrid functional like PBE0, B3LYP,HSE etc.. or to perform a self-consistent GW. In general in self-consistent GW also the wave-function should be updated, but for many systems DFT wave-functions are already quite good and a self-consistency on eigenvalues only can be sufficient, for a discussion see for example ref.[1]
In this tutorial we will show how to perform self-consistent GW on the eigenvalues only with the Yambo code.
- Generate an input file for a G0W0 calculation as explained in the GW basics tutorial doing:
yambo -X p -g n -p p -V qp -F yambo_g0w0_input.in
- run your first GW calculation doing:
yambo –F yambo_g0w0_input.in -J G0W0
- at the end of the run you will get a quasi-particle file o-G0W0.qp.
Now you can read this new quasi-particle band structure and perform another GW. - copy your gw input in a new file: cp yambo_g0w0_input.in yambo_g1w1_input.in
- modify the
yambo_g1w1_input.in
to force Yambo to read the previous quasi-particle corrections
GfnQPdb= "E < ./G0W0/ndb.QP"
and
XfnQPdb= "E < ./G0W0/ndb.QP"
- repeat point 1) and 2) for the G1W1, G2W2, etc… until the differences between o-GnWn.qp and o-Gn+1Wn+1.qp are small enough.
Usually self-consistent GW converges in about 3/4 iterations. Notice that in many molecular systems the self-consistency on the eigenvalues only (evGW) can modify the level orders. Moreover evGW removes large part of initial dependency of the GW from the DFT functional.
Convergence issues:
Internal and external self-consistency in Yambo:
Ff you want to perform self-consistency only on G and not on W you can comment the line:
#XfnQPdb= "E < ./GW0/ndb.QP"
As example you can consider the results on hexgonal-Boron Nitride in ref.[2]