Speed up dielectric constant calculations using the double-grid method with Yambo

Convergence of dielectric constant with respect the number of k-points can be very slow in many systems. For this reason in Yambo it is implemented a double-grid technique that speeds up convergence versus k-points with a computational cost comparable to the standard calculations. The method is described in the paper:

Speeding up the solution of the Bethe-Salpeter equation by a double-grid method and Wannier interpolation
D. Kammerlander, S. Botti, MAL Marques, A. Marini, C. Attaccalite
Physical Review B 86 (12), 125203 (2013)

Here I show how to use double-grid method. I will take as example 2-dimensional hexagonal boron nitride (DFT inputs  hBNlayer_dft.tgz )

  1. Start a calculation of epsilon in independent particle approximation with a small k-grid, for example 8x8x1, you will get the following dielectric constant:

    It is clear that this small number of k-points is not enough to converge epsilon. (Yambo input is here: yambo.in_optics.tgz).
  2. Perform a second DFT calculation with a dense k-point grid for example 40x40x1 shifted grid and the number of bands you need in optics. Notice that the problem of k-points convergence is due only to the bands close to the gap, so you do not need the dense k-point grid for all conductions bands. (Here the new non-self-consistent input hBN.nscf_40x40_shifted.tgz)
  3. Read the new DFT energies, you can skip wave-functions by doing p2y (or a2y) -w -F
  4. Import the new energies with the old calculation with the command ypp -m
    and modify the ypp.in as:

    kpts_map # [R] BZ map fine grid to coarse
    SkipCheck  Uncomment this flag 
    %DbGd_DB1_paths #Paths to the SAVE folders with the Double Grid DB1
    "./SHIFT/bn.save"    The path of your dense grid
  5. ypp will read the dense k-points and divide them according to their distance from the points on the regular grid, as in the figure below:

    Ypp will print also the minimum and maximum number of random k-point for each point of the grid :: Blocks filling range : 73 79   and create the database SAVE/ndb.Double_Grid.
  6. Now repeat the dielectric constant calculation of point 1. Yambo will average all denominators appearing in the epsilon calculation using the energies calculated on the dense grid. You will get:

    that is very close to the full converged results with only an 8×8 grid!!!

The same approach can be used in RPA with local field effects, TDDFT and Bethe-Salpter equation. If you use the double-grid approach in BSE you need to use the inversion solver (-y i in input generation). This method also speeds up slightly the convergence of GW calculation because the dielectric constant that enters in GW is be closer to the converged one.
For more detail see Physical Review B 86 (12), 125203 (2013).

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.