Self-consistent GW on eigenvalues only with the Yambo code

Not working anymore in Yambo 4.5 but works in Yambo 5.x

yambo codeFor molecules and also for molecular solids, the G0W0 approach often gives poor results. The main reason of this failure is  the DFT  starting point. In fact 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 an exchange correlation functional that contains the exchange as the PBE0, B3LYP, M062X etc..   or to perform a self-consistent GW.
Today I will show how to perform self-consistent GW on the eigenvalues only with the Yambo code. This approximation works very well for molecular systems[1,2,3].
Generate an input file for a G0W0 calculation as explained in the tutorial “Basic concepts of the GW approximation” doing:  yambo -d -k hartree -g n -p p -V qp -F yambo_gw_input.in

Run your first GW calculation doing: yambo –F yambo_gw_input.in -J GW0
When the run ends you will get a quasi-particle file o-GW0.qp. Now you can read this new quasi-particle band structure and perform another GW step doing:

1) copy your gw input in a new file:
cp yambo_gw_input.in yambo_gw1_input.in

2) modifty the fileyambo_gw1_input.in to force Yambo to read the previous quasi-particle corrections

GfnQPdb= "E < ./GW0/ndb.QP"
and
XfnQPdb= "E < ./GW0/ndb.QP"

repeat point 1) and 2) for the GW1, GW2, etc… until the differences between o-GWn.qp and o-GWn+1.qp are small enough.

Usually self-consistent GW converges in about 4/5 iterations. Notice that in many molecular systems the self-consistency on the eigenvalues only (evGW) is a very good approximation because the error coming from the non-self consistent wave-functions is very small, see Ref. [3] for a discussion. Moreover evGW removes almost all dependency from the initial functional see figure 2 of Ref. [2].

Notice that if you want to perform self-consistency only on G and not on W you can comment the line:

#XfnQPdb= "E < ./GW0/ndb.QP"


References:
[1] Charge-transfer excitations in molecular donor-acceptor complexes within the many-body Bethe-Salpeter approach
X. Blase and C. Attaccalite, Appl. Phys. Lett. 99, 171909 (2011)
[2] Correlation effects in the optical spectra of porphyrin oligomer chains: Exciton confinement and length dependence
C. Hogan, M. Palummo, J. Gierschner and A. Rubio, J. Chem. Phys. 138, 024312 (2013)
[3] Many-body Green’s function GW and Bethe-Salpeter study of the optical excitations in a paradigmatic model dipeptide
C. Faber, P. Boulanger, I. Duchemin, C. Attaccalite and X. Blase
J. Chem. Phys. 139, 194308 (2013)

2 thoughts on “Self-consistent GW on eigenvalues only with the Yambo code

  1. Ulrich

    Hello Im a little confused by your iteration instruction:
    So you do the initial GW0 calculation and then you move the ndb.QP file so that the next iteration doesnt use it? Or to you move it so that the next iteration does use it? Because when it does use it I start getting the same values from GW1 onwards.

    Reply
    1. attacc Post author

      Hi Ulrich
      you are right probably this page was not too clear.
      Anyway you want use the old file ndb.QP to recalculate the new quasiparticle.
      I changed the page to explain it better

      best
      Claudio

      Reply

Leave a Reply to Ulrich Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.