Reasonable parameters for Yambo calculations

Here I report some advices to choose reasonable parameters in order to converge different kind of calculations with the Yambo code. The following parameters are a reasonable recommendation. However you have to remember that convergence can be different from system to system, so you should check your calculations and not use the following parameters blindly.

Choosing Pseudopotentials
Yambo works only with Norm-conserving pseudopotentials. In case of heavy atoms, or hard pseudo-potentials plane-waves convergence  can be tough. Fortunately in a recent paper Hammand proposed a new kind of norm-conserving pseudo-potentials the Optimized norm-conserving Vanderbilt pseudopotentials, PRB 88 085117(2013)  or Dojo Pseudopotentials that are as soft as the ultra-soft ones thanks to the use of more projects in the pseudo.
This is the best choice for calculations with Yambo, you can download this pseudo for QuantumEspresso Dojo PseudoPotentials or Abinit Dojo Psedopotentials .

Setup your calculations
Many-body calculations in general are less sensitive to the G-vectors than DFT ones. So at the beginning of your calculations you can reduce number of G-vectors in your wave-function. Once you created the SAVE folder do
yambo -D
to check how many G-vectors there are in your wave-function

Components       [wavefunctions]:  63494

Then do the setup with the command yambo -i -V RL and reduce the number of G-vetors to one-half or one-third of the previous value, or even less if you have memory problems (you have to check that results do not change).

In the simplest calculation of optics in the independent particle approximation (IPA), corresponding to yambo -o c you should converge only the number of bands that enter in the dielectric constant:

% BndsRnXd
 1 | 99 | # [Xd] Polarization function bands

Notice that the imaginary part of the dielectric constant converges much faster than the real one. If you are interested only in the absorption (imaginary part) you can start with a number of conduction bands equal to the number of valence one, and probably this is enough and often even too much. If you are interested in the real-part of the dielectric constant probably you should increase the number of conduction bands and carefully check convergence.
The same it is true when you want to converge optics in the RPA approximation  with the command  yambo -o c -k Hartree. But in this case you should converge the size of the dielectric constant too. I advice you to change units from RL to mHa in the input file and start with a reasonable value for the BlockSize:

NGsBlkXd= 2000 mHa # [Xd] Response block size

The cut-off in mHa respect to RL has the advantage to be independent from the cell size and shape. Then you can increase it by steps of 500 mHa and check when the result is converged,  usually around 5000 mHa.
Finally there is the convergence with the number of k-points. Optics requires more k-points than standard DFT. You should increase the k-points number until your spectra no longer changes. In general systems with a large gap or a large super-cell require less k-points while systems with small gaps are more demanding from the point of view of k-points. In Yambo it is also implemented an efficient technique to speed up convergence with k-points see Yambo double-grid and the paper PRB 86, 125203 (2012).

Once you converged the number of k-points, bands and G-vectors in optics you can start a GW calculation.
In a G0W0 calculation convergence is more complicated because you have to converge the dielectric constant that enters in W and the Green’s function G. For the convergence of the dielectric constant the parameters are:

1 | 400 | # [Xp] Polarization function bands
NGsBlkXp= 3012 mHa # [Xp] Response block size

You can find them by performing a simple calculation of optics in RPA (see previous section) for a couple of frequencies and converging the real-part of the dielectric constant. Usually you need a number of conduction bands equal or larger to three/four times the valence ones.
Then there is the number of bands used to expand the Green’s function G:

% GbndRnge
1 | 400 | # [GW] G[W] bands range

The number of conductions bands in G is usually larger than the one in the dielectric constant, you can converge it just performing different GW calculations for the gap at a given k-point and see when it does not change any more. You can speed up convergence in GW calculations adding the flag:

XTermKind= "BG" 

that is activated with the verbosity  -V resp. In this way Yambo will use the method developed by F. Bruneval et al in PRB 78(8), 085125 (2008).
Then there are the number of bands/kpoints on which you want to calculate the GW correction.  You can specify them giving the exact bands and k-points range:

%QPkrange # [GW] QP generalized Kpoint/Band indices
1| 60| 78| 99|

or giving the k-points range and an energy range in eV for the bands:

%QPerange # [GW] QP generalized Kpoint/Energy indices
1| 60| 1.0| 6.0|

If you want to perform optics or interpolate the bands after the GW, you need to calculate the GW corrections for all the k-points. Instead if you are interested only in the gap you can calculated the correction only on the k-points you are interested in, even if they are not in the initial grid of k-points (see the page How to calculate GW correction in a generic k-point).

For the BSE you can use the same dielectric constant you used in GW so generate the input using the command yambo -o b -k sex -y h -p p -V qp and remove the flag

em1s # [R Xs] Static Inverse Dielectric Matrix

in such a way that Yambo will use the dielectric constant of GW without recalculate it.
Then read the QuasiParticle band structure you calculated in GW changing

KfnQPdb= "none" # [EXTQP BSK BSS] Database


KfnQPdb= "E < SAVE/ndb.QP" # [EXTQP BSK BSS] Database.

Now you have to converge the number of bands in BSE:

% BSEBands
78 | 97 | # [BSK] Bands range

you can use the same number you used in the RPA calculation of optics for the imaginary part of the dielectric constant.
That’s all 🙂


4 thoughts on “Reasonable parameters for Yambo calculations

  1. wachr

    Dear Claudio,

    thanks for this great and focussed overview! This is very helpful! I was struggling all my way through and finally ended up in about the same workflow. And still, I find helpful advice or new details.

    Sometimes, GW results can be extrapolated up to an ‘infinite’ number of bands by plotting the GW gap vs. 1/#bands. For those, who want to know the gap very precisely. Still, one needs the huge amounts of bands to reach the linear regime. (I often use 3x – 6x number of valence bands).

    Same for the Bethe-Salpeter-part: the plot of the peak position (or the exciton binding energy) vs. 1/k-point-distance can lead to new insights about how an infinitely smooth k-point-sampling would look like.

    Best regards from Germany and thanks to the whole yambo-developer team for their work on this code!

    1. attacc Post author

      Dear Christian

      thank you for this comment, I agree with you that studying the GW gap vs the number of bands
      and the exciton position vs the k-points is the right way to get a converged result

      ciao ciao

  2. bestrobotvacuum

    Hi there mates, its enormous piece of writing concerning teachingand completely explained, keep it up all the time.

  3. Pingback: Yambo input file for BSE calculations explained | Claudio Attaccalite's Homepage

Leave a 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.