GW QP Bandgap

Concerns issues with computing quasiparticle corrections to the DFT eigenvalues - i.e., the self-energy within the GW approximation (-g n), or considering the Hartree-Fock exchange only (-x)

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano

Jagjit Kaur
Posts: 20
Joined: Fri Apr 16, 2021 12:51 pm

GW QP Bandgap

Post by Jagjit Kaur » Sat Sep 30, 2023 9:17 am

Hi,

I did QP-GW bandstructure calculation for my structure to find the band gap. I have the following questions-

1.In the report file I get the following bandgap values. I am confused which one represents the correct QP-GW bandgap.

2.And the indirect gap between k-points mentioned are 3 and 2. Is it CBM 3 and VBM 2 or vice versa?

Code: Select all

  [X] Direct Gap                                    :  1.547477 [eV]
  [X] Direct Gap localized at k-point               :  10
  [X] Indirect Gap                                  :  1.347931 [eV]
  [X] Indirect Gap between k-points                 :  3  2
  
  [Hartree-Fock] Direct Gap                         :  5.565401 [eV]
  [Hartree-Fock] Direct Gap localized at k-point    :  10
  [Hartree-Fock] Indirect Gap                       :  5.347683 [eV]
  [Hartree-Fock] Indirect Gap between k-points      :  10   2
  
3. Similarly I am getting the following report file for BSE spectra calculation. Is K+QP the BSE bandgap?

Code: Select all

  [X] Direct Gap                                    :  1.547477 [eV]
  [X] Direct Gap localized at k-point               :  10
  [X] Indirect Gap                                  :  1.347931 [eV]
  [X] Indirect Gap between k-points                 :  3  2
  [K+QP] Direct Gap                                 :  2.687685 [eV]
  [K+QP] Direct Gap localized at k-point            :  10
  [K+QP] Indirect Gap                               :  2.496317 [eV]
  [K+QP] Indirect Gap between k-points              :  10   2
4. In the BSE spectra calculations, the output file has following columns. Do the EPSo-Im[4] give the QP-GW spectra or IP-GW spectra.?

5. And is the exciton binding energy is difference between the QP-GW bandgap - 1st exciton energy? Is the 1st exciton energy the direct bandgap from BSE, or the energy of the exciton with the highest oscillator strength?

Code: Select all

E/ev[1]            EPS-Im[2]          EPS-Re[3]          EPSo-Im[4]         EPSo-Re[5]
Thank you.!

Regards.
Jagjit Kaur
Harish-Chandra Research Institute
Allahabad
India

User avatar
Daniele Varsano
Posts: 3816
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: GW QP Bandgap

Post by Daniele Varsano » Mon Oct 02, 2023 3:52 pm

Dear Jagjit,

the band gap is reported at different stages and the level of theory is reported:

X--> KS gap
Hartree-Fock--> HF
K+QP --> is a band gap after applying QP corrections (usually GW).

Please note that besides the KS, what it is reported is calculated reading the correction databases, and if it has not been calculated for all the k points and not enough bands around the gap, the value reported in the report it can be incorrect. The suggestion is to calculate it looking at the energies and its corrections, e.g. in the output file.

2) The first value should be the valence and second one the conduction. Anyway, you can easily verify looking at the energies reported in the report file.

3) K+QP is the bandgap entering the kernel of the BSE (K), it the quasiparticle gap. BSE provides you excitation energies, not band gaps, indeed it is reported before solving the BSE.

4) Do the EPSo-Im[4] give the QP-GW spectra or IP-GW spectra.?
what's the difference you have in mind? It is the IP spectrum evaluated considering the energies calculate at GW level.

5) Binding energy it is usually evaluated as the difference between GW gap and excitation energy. Each exciton has its binding energy, you can evaluate the binding energy for the first exciton and for the brightest one as well.

Sometimes it is reported the "optical gap", in this case it is meant the energy when the system starts to absorb, ie first exciton with finite oscillator strength.

Best,

Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

Jagjit Kaur
Posts: 20
Joined: Fri Apr 16, 2021 12:51 pm

Re: GW QP Bandgap

Post by Jagjit Kaur » Tue Oct 03, 2023 9:37 am

Thank you Daniele for clarifying some naive questions.

Regarding my 4th question, I thought quasiparticle calculations are considering the electron-hole pair whereas the independent particle approximation doesnot consider it. Am I confused with this concept? A liitle clarification regarding this might be helpful for me.!
Jagjit Kaur
Harish-Chandra Research Institute
Allahabad
India

User avatar
Daniele Varsano
Posts: 3816
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: GW QP Bandgap

Post by Daniele Varsano » Wed Oct 04, 2023 7:41 am

Dear Jagjit,
Usually, with QP calculations is meant an electronic level accounting for electron-electron interaction (eg GW).
The usual workflow is:
1) DFT calculations (KS) where you can calculate the IP spectrum using DFT energies.
2) QP calculation (GW). This will give you a good estimation of the electronic (transport) gap. You can still calculate the IP spectrum using GW energies. In the presence of bound excitons, this will overestimate the absorption peaks, hence the optical gap.
3) Solution of the BSE, this will take into account electron-hole interaction and will provide you hopefully a good description of the absorption energies (excitons).

Hope it is clear,

Best,
Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

Jagjit Kaur
Posts: 20
Joined: Fri Apr 16, 2021 12:51 pm

Re: GW QP Bandgap

Post by Jagjit Kaur » Mon Oct 09, 2023 9:20 am

Thank you Daniele.!

1. After doing the BSE+GW, the excitons are sorted in terms of energy giving:

Code: Select all

E [ev]                    Strength                Index
2.13403654        0.512419676E-3    1.00000000
2.22624993        0.797773778         2.00000000
2.23555589        0.196694545E-1    3.00000000
2.29154229        1.00000000          4.00000000
As you told the binding energy of the first exciton with finite strength can be calculated. Will the Index-1 exciton be considered with finite strength, as it is still too small compared to the Index-2 exciton. In this case, which exciton can be considered having finite strength?

2. The system is a indirect bandgap semiconductor with bandgaps 3.03 eV (indirect) and 3.28 eV (direct) at the QP-GW level. To calculate the binding energy, do we subtract the excitation energy from the direct or indirect bandgap?

Regards.
Jagjit Kaur
Harish-Chandra Research Institute
Allahabad
India

User avatar
Daniele Varsano
Posts: 3816
Joined: Tue Mar 17, 2009 2:23 pm
Contact:

Re: GW QP Bandgap

Post by Daniele Varsano » Tue Oct 10, 2023 10:17 am

Dear Jagjit,

1) in this case the first exciton has low strength, still not zero.
2) If you are calculating optical/vertical excitations (lim q-->0) the gap to be considered is the direct one. If you are calculating finite q excitons then you need to consider the minimum gap with that finite momentum.

Best,
Daniele
Dr. Daniele Varsano
S3-CNR Institute of Nanoscience and MaX Center, Italy
MaX - Materials design at the Exascale
http://www.nano.cnr.it
http://www.max-centre.eu/

Jagjit Kaur
Posts: 20
Joined: Fri Apr 16, 2021 12:51 pm

Re: GW QP Bandgap

Post by Jagjit Kaur » Wed Oct 11, 2023 6:13 pm

Hi Daniele,

When I plot the excitons on the bands using yambopy (exc_kspace_plot.py)

Code: Select all

"""
Tutorial for YamboExcitonDB.

Plotting exciton wavefunction components in the BZ

EDIT the path below to point to the yambo SAVE folder.
"""save_path='BSE_saves/YAMBO_saves'
bse_path ='BSE_saves/BSE_databases'
from yambopy import *
from qepy import *
import numpy as np
import matplotlib.pyplot as plt

if __name__ == "__main__":

    Kspace_Plot = True
    Bands_Plot  = True
    Bands_Plot_Interpolate = True
    
    # Customly chosen Q-point
    iQ=0 # 0-> Gamma point, i.e., optical absorption limit
    # States to be merged together (because they are degenerate)
    #
    # You may try the following states:
    # 
    # [1,2], [3,4], [5], [6,7]
    #
    states = [2,4]

    #                    #
    # Start Yambopy part #
    #                    #

    # Create "lattice" object by reading the ns.db1 database inside the yambo SAVE
    ylat = YamboLatticeDB.from_db_file(filename=save_path+'/SAVE/ns.db1')

    # Read exciton data at Q=iQ
    yexc = YamboExcitonDB.from_db_file(ylat,filename=bse_path+'/ndb.BS_diago_Q1')

    # Plot of exciton weights in k-space
    if Kspace_Plot:
        fig = plt.figure(figsize=(6,6))
        ax  = fig.add_axes( [ 0.15, 0.15, 0.80, 0.80 ])
        yexc.plot_exciton_2D_ax(ax,states,mode='hexagon',limfactor=0.8,scale= 320)
        plt.show()
        k_space = 'k_space.pdf'
        plt.savefig(k_space)

    # Plot on top of the band structure
    
    ## [1.] Define path in crystal coordinates using class Path

    npoints = 20
    path = Path([ [[  0.0,  0.0,  0.0],'$\Gamma$'],
                  [[  0.5,  0.0,  0.0],'M'],
                 [[1./3.,1./3.,  0.0],'K'],
                  [[  0.0,  0.0,  0.0],'$\Gamma$']], 
                  [int(npoints*2),int(npoints),int(sqrt(5)*npoints)] )
    
    ## [2.] Read electron energies
    yel = YamboSaveDB.from_db_file(folder=save_path+'/SAVE')
    

    ## [3.A] Plot without interpolating the values
    if Bands_Plot:
        fig = plt.figure(figsize=(4,6))
        ax  = fig.add_axes( [ 0.15, 0.15, 0.80, 0.80 ])

        exc_on_bands = yexc.get_exciton_bs(yel,path,states,size=1.0)
        exc_on_bands.plot_ax(ax,color_bands='grey',c_weights='red')

        ax.set_ylim(-1.,3.)
        plt.show()
        bs_nint = 'bs_nint.pdf'
        plt.savefig(bs_nint)

    ## [3.B] Interpolate the values
    if Bands_Plot_Interpolate:
        fig = plt.figure(figsize=(4,6))
        ax  = fig.add_axes( [ 0.15, 0.15, 0.80, 0.80 ])

        # In case of problems with the interpolation, try to increase lpratio
        exc_on_bands = yexc.interpolate(yel,path,states,lpratio=10,f=None,size=0.5,verbose=True)
        exc_on_bands.plot_ax(ax,color_bands='grey',c_weights='red',alpha_weights=0.5)

        ax.set_ylim(2.5,7.5)
        plt.show()
        band = 'band.pdf'
        plt.savefig(band)
    
    #                  #
    # End Yambopy part #
    #                  #


For the non-interpolated band (bs_nint.pdf) I get the VBM shifted to zero but with same input parameters, the interpolated bandstructure (band.pdf) is not shifted. May I know why is it happening. Or we have to provide with the fermi energy in the code somewhere. Which script has to be modified to do so?

Regards,
Jagjit
You do not have the required permissions to view the files attached to this post.
Jagjit Kaur
Harish-Chandra Research Institute
Allahabad
India

User avatar
palful
Posts: 60
Joined: Tue Jan 26, 2016 11:23 am
Location: Modena and Milan

Re: GW QP Bandgap

Post by palful » Thu Oct 12, 2023 4:03 pm

Dear Jagjit,

There seems to be a small bug in the SkwInterpolator causing to always shift the bands in one direction, even when the shift should be in the opposite one (thus doubling down in the wrong direction). Thank you for letting us know. We will look into this, but for now you can "de-shift" the bands manually by adding this line in the script for the interpolated plot:

Code: Select all

    ## [3.B] Interpolate the values
    if Bands_Plot_Interpolate:
        yel.eigenvalues -= 2.*yel.get_fermi() # double back-shift correcting interpolate error
        ...
In this way you correct energies manually by shifting the eigenvalues by the Fermi energy (top valence band) twice in the right direction.
This should produce the correct plot. Keep in mind that the yel.eigenvalues array is now modified and if you want to use it later in the script you should restore the original values.

Cheers,
Fulvio
Dr. Fulvio Paleari
S3-CNR Institute of Nanoscience and MaX Center
Modena, Italy

Jagjit Kaur
Posts: 20
Joined: Fri Apr 16, 2021 12:51 pm

Re: GW QP Bandgap

Post by Jagjit Kaur » Thu Oct 12, 2023 7:12 pm

Thankyou Fulvio for your reply.

Regards,
Jagjit
Jagjit Kaur
Harish-Chandra Research Institute
Allahabad
India

Reza_Reza
Posts: 29
Joined: Wed Jan 17, 2024 12:13 pm
Location: France

Hartree Fock and DFT band gap

Post by Reza_Reza » Fri Jan 19, 2024 12:17 pm

Hi,

I am currently calculating the GW band structure. In the report file, the direct band gap values for the system with both DFT and Hartree-Fock methods are coming out to be the same. Could you please help me understand the underlying reason for this issue? I am using the PBE functional.

Best regards,
Reza - Postdoc
CNRS

Post Reply