Bandgap of Si in GW: Difference between revisions

From VASP Wiki
No edit summary
 
(36 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Description: calculation of the bandgap of Si using various flavours of GW.
{{Template:GW - Tutorial}}


== Task ==
Calculation of the bandgap of Si using various flavours of GW.
----
'''Mind''': before you start doing GW calculations it might be beneficial to have a look at the examples on the [[Dielectric_properties_of_Si|description of dielectric properties]].
----
----
To do GW calculations we have to follow a 3-step procedure.
To do GW calculations we have to follow a 3-step procedure.


== Step 1: a DFT groundstate calculation ==
== Step 1: DFT groundstate calculation ==
Everything starts with a standard DFT groundstate calculation (in this case PBE).
Everything starts with a standard DFT groundstate calculation (in this case PBE).


*INCAR
*{{TAG|INCAR}} (see INCAR.DFT)
 
{{TAGBL|ISMEAR}} =  0
{{TAGBL|SIGMA}}  =  0.05
{{TAGBL|EDIFF}}  = 1E-8
 
*{{TAG|KPOINTS}} (see KPOINTS.6)
<pre>
<pre>
ISMEAR = 0
6x6x6
SIGMA = 0.05
  0
GGA    = PE
G
  6 6 6
  0 0 0
</pre>
</pre>


*KPOINTS
or to save some time use a "quick-and-dirty" setup (take KPOINTS.4):
<pre>
<pre>
6x6x6
4x4x4
  0
  0
G
G
  6 6 6
  4 4 4
  0 0 0
  0 0 0
</pre>
</pre>


*POSCAR
*{{TAG|POSCAR}}
<pre>
<pre>
system Si
system Si
Line 38: Line 51:
== Step 2: obtain DFT virtual orbitals ==
== Step 2: obtain DFT virtual orbitals ==
To obtain a {{FILE|WAVECAR}} file with a reasonable number of virtual orbitals (50-100 per atom)
To obtain a {{FILE|WAVECAR}} file with a reasonable number of virtual orbitals (50-100 per atom)
we need to restart from the previous groundstate calculation with {{TAG|ALGO}}=Exact, and manually set the
we need to restart from the previous groundstate calculation with {{TAG|ALGO}}=''Exact'', and manually set the
number of bands by means of the {{TAG|NBANDS}}-tag.
number of bands by means of the {{TAG|NBANDS}}-tag.
To obtain the corresponding {{FILE|WAVEDER}} file we additionally specify {{TAG|LOPTICS}}=.TRUE.
To obtain the corresponding {{FILE|WAVEDER}} file we additionally specify {{TAG|LOPTICS}}=''.TRUE.''.
 
*{{TAG|INCAR}} (see INCAR.DIAG)


*INCAR
{{TAGBL|ALGO}} = Exact
<pre>
{{TAGBL|NBANDS}} = 64
ALGO = Exact
{{TAGBL|LOPTICS}} = .TRUE. ; {{TAGBL|CSHIFT}} = 0.1
NBANDS  = 64
{{TAGBL|NEDOS}} = 2000
LOPTICS = .TRUE.
# you might try
NEDOS = 2000
#{{TAGBL|LPEAD}} = .TRUE.
## you might try
   
#LPEAD = .TRUE.
{{TAGBL|ISMEAR}} =  0
{{TAGBL|SIGMA}}  =  0.05
{{TAGBL|EDIFF}}  = 1E-8


ISMEAR =  0
SIGMA  =  0.05
GGA    = PE
</pre>


'''Mind''': make a copy of your {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files, as we will repeatedly need them in the following.
'''Mind''': make a copy of your {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files, as we will repeatedly need them in the following.
For instance
For instance


  cp WAVECAR WAVECAR.LOPTICS
  cp WAVECAR WAVECAR.DIAG
  cp WAVEDER WAVEDER.LOPTICS
  cp WAVEDER WAVEDER.DIAG


== Step 3: the actual GW calculation ==
== Step 3: the actual GW calculation ==
Restart from the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files of the previous calculation, with
Restart from the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files of the previous calculation, with


*INCAR
*{{TAG|INCAR}} (see INCAR.GW)
 
# Frequency dependent dielectric tensor including
# local field effects within the RPA (default) or
# including changes in the DFT xc-potential ({{TAGBL|LRPA}}=.FALSE.).
# N.B.: beware one first has to have done a
# calculation with {{TAGBL|ALGO}}=Exact, {{TAGBL|LOPTICS}}=.TRUE.
# and a reasonable number of virtual states (see above)
{{TAGBL|ALGO}} = GW0 ; {{TAGBL|LSPECTRAL}} = .TRUE. ; {{TAGBL|NOMEGA}} = 50
   
# be sure to take the same number of bands as for
# the {{TAGBL|LOPTICS}}=.TRUE. calculation, otherwise the
# WAVEDER file is not read correctly
{{TAGBL|NBANDS}} = 64
     
# Add this to update the quasiparticle energies
# in the Green's function (GW0)
#{{TAGBL|NELM}} = 4
   
{{TAGBL|ISMEAR}} =  0
{{TAGBL|SIGMA}}  =  0.05
{{TAGBL|EDIFF}}  = 1E-8
 
 
At the bottom of the {{FILE|OUTCAR}} file you will find the quasi-particle (QP) energies.
<pre>
<pre>
## Frequency dependent dielectric tensor including
QP shifts <psi_nk| G(iteration)W_0 |psi_nk>: iteration 1
## local field effects within the RPA (default) or
for sc-GW calculations column KS-energies equals QP-energies in previous step
## including changes in the DFT xc-potential (LRPA=.FALSE.).
and V_xc(KS)=  KS-energies - (<T + V_ion + V_H > + <T+V_H+V_ion>^1  + <V_x>^1)
## N.B.: beware one first has to have done a
 
## calculation with ALGO=Exact and LOPTICS=.TRUE.
k-point  1 :      0.0000    0.0000    0.0000
## and a reasonable number of virtual states (see above)
  band No. KS-energies  QP-energies  sigma(KS)   V_xc(KS)    V^pw_x(r,r')  Z            occupation
ALGO = GW0 ; LSPECTRAL = .TRUE. ; NOMEGA = 50
 
#LRPA = .FALSE.  
      1      -6.4888      -6.8243    -10.9766    -10.4570    -17.5189      0.6458      2.0000
## be sure to take the same number of bands as for
      2      5.4800      5.1162    -11.8859    -11.4060    -12.7290      0.7580      2.0000
## the LOPTICS=.TRUE. calculation, otherwise the
      3      5.4800      5.1162    -11.8859    -11.4060    -12.7290      0.7580      2.0000
## WAVEDER file is not read correctly
      4      5.4800      5.1162    -11.8859    -11.4060    -12.7290      0.7580      2.0000
NBANDS = 64
      5      8.0443      8.3296      -9.7235    -10.1038      -5.7364      0.7502      0.0000
</pre>
      6      8.0443      8.3296      -9.7235    -10.1038      -5.7364      0.7502      0.0000
      7      8.0443      8.3296      -9.7235    -10.1038      -5.7364      0.7502      0.0000
      8      8.8407      9.2475    -10.5130    -11.0594      -6.0662      0.7445      0.0000
 
k-point  2 :       0.1667    0.0000    0.0000
  band No.  KS-energies  QP-energies  sigma(KS)  V_xc(KS)    V^pw_x(r,r')   Z            occupation
 
      1      -6.1276      -6.4734    -11.0208    -10.4905    -17.3978      0.6521      2.0000
      2      3.0946      2.6991    -11.4452    -10.9063    -13.1354      0.7340      2.0000
      3      5.0279      4.6595    -11.7159    -11.2282    -12.6625      0.7552      2.0000
      4      5.0279      4.6595    -11.7159    -11.2282    -12.6625      0.7552      2.0000
      5      7.8309      8.1065      -9.8441    -10.2097      -5.8680      0.7539      0.0000
      6      8.6943      8.9816      -9.8669    -10.2533      -5.6768      0.7436      0.0000
      7      8.6943      8.9816      -9.8669    -10.2533      -5.6768      0.7436      0.0000
      8      10.9341      11.2678    -10.4716    -10.9278      -5.5632      0.7316      0.0000
 
    ..        ..          ..          ..          ..          ..          ..          ..
    ..        ..          ..          ..          ..          ..          ..          ..  
    ..        ..          ..          ..          ..          ..          ..          ..
    ..        ..          ..          ..          ..          ..          ..          ..
 


To quickly find the QP-energy of the highest lying occupied state, try
k-point  16 :      -0.3333    0.5000    0.1667
  band No.  KS-energies  QP-energies  sigma(KS)  V_xc(KS)    V^pw_x(r,r')  Z            occupation


grep "     4     " OUTCAR | sort -n -k 3 | tail -1 | awk '{print $3}'
      1      -2.2240      -2.5911    -11.4857    -10.9550    -16.0663      0.6917      2.0000
      2      -2.2240      -2.5911     -11.4857     -10.9550    -16.0663      0.6917      2.0000
      3       1.8279      1.3698    -10.7735    -10.1380    -12.9637      0.7209      2.0000
      4      1.8279      1.3698    -10.7735    -10.1380    -12.9637      0.7209      2.0000
      5      8.2346      8.4128      -9.3111      -9.5472      -5.1975      0.7546      0.0000
      6      8.2346      8.4128      -9.3111      -9.5472      -5.1975      0.7546      0.0000
      7      12.2605      12.5170      -9.7969    -10.1486      -4.3607      0.7294      0.0000
      8      12.2605      12.5170      -9.7969    -10.1486      -4.3607      0.7294      0.0000
</pre>


and for the lowest lying unoccupied state,


  grep "    5    " OUTCAR | sort -n -k 3 | head -1 | awk '{print $3}'
To quickly find the QP-energy of the highest lying occupied state, try
  ./gap_GW.sh OUTCAR


=== Beyond the random-phase-approximation ===
=== Beyond the random-phase-approximation ===
To include local field effects beyond the random-phase-approximation in the description of the frequency dependent dielectric response function (local field effects in DFT) add the following line to your {{FILE|INCAR}} file:
To include local field effects beyond the random-phase-approximation in the description of the frequency dependent dielectric response function (local field effects in DFT) add the following line to your {{FILE|INCAR}} file:


  LRPA = .FALSE.
  {{TAGBL|LRPA}} = .FALSE.


and again restart from the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files from step 2.
and again restart from the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files from step 2.
Line 101: Line 167:
To have VASP do, for instance, 4 iterations of the QP-energies in G, add the following line to the {{TAG|INCAR}} file:
To have VASP do, for instance, 4 iterations of the QP-energies in G, add the following line to the {{TAG|INCAR}} file:


  NELM = 4
  {{TAGBL|NELM}} = 4


and again restart from the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files from step 2.
and again restart from the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files from step 2.


To quickly find the QP-energy of the highest lying occupied state after 4 iterations of the QP energies in G, try
To quickly find the QP-energy of the highest lying occupied state after 4 iterations of the QP energies in G, type:
./gap_GW.sh OUTCAR


grep "    4    " OUTCAR | tail -16 | sort -n -k 3 | tail -1 | awk '{print $3}'
== Download ==
 
[[Media:Si GW gap.tgz| Si_GW_gap.tgz]]
and for the corresponding lowest lying unoccupied state,
 
grep "    5    " OUTCAR | tail -16 | sort -n -k 3 | head -1 | awk '{print $3}'


== Download ==
{{Template:GW - Tutorial}}
[http://www.vasp.at/vasp-workshop/examples/Si_bandgap_GW.tgz Si_bandgap_GW.tgz]


----
Back to the [[The_VASP_Manual|main page]].
[[VASP_example_calculations|To the list of examples]] or to the [[The_VASP_Manual|main page]]


[[Category:Examples]]
[[Category:Examples]]

Latest revision as of 11:10, 11 June 2024

Task

Calculation of the bandgap of Si using various flavours of GW.


Mind: before you start doing GW calculations it might be beneficial to have a look at the examples on the description of dielectric properties.


To do GW calculations we have to follow a 3-step procedure.

Step 1: DFT groundstate calculation

Everything starts with a standard DFT groundstate calculation (in this case PBE).

ISMEAR =  0
SIGMA  =  0.05
EDIFF  = 1E-8
6x6x6
 0
G
 6 6 6
 0 0 0

or to save some time use a "quick-and-dirty" setup (take KPOINTS.4):

4x4x4
 0
G
 4 4 4
 0 0 0
system Si
5.430
0.5 0.5 0.0
0.0 0.5 0.5
0.5 0.0 0.5
2
cart
0.00 0.00 0.00
0.25 0.25 0.25

Step 2: obtain DFT virtual orbitals

To obtain a WAVECAR file with a reasonable number of virtual orbitals (50-100 per atom) we need to restart from the previous groundstate calculation with ALGO=Exact, and manually set the number of bands by means of the NBANDS-tag. To obtain the corresponding WAVEDER file we additionally specify LOPTICS=.TRUE..

ALGO = Exact
NBANDS  = 64
LOPTICS = .TRUE. ; CSHIFT = 0.1
NEDOS = 2000
# you might try
#LPEAD = .TRUE.
   
ISMEAR =  0
SIGMA  =  0.05
EDIFF  = 1E-8


Mind: make a copy of your WAVECAR and WAVEDER files, as we will repeatedly need them in the following. For instance

cp WAVECAR WAVECAR.DIAG
cp WAVEDER WAVEDER.DIAG

Step 3: the actual GW calculation

Restart from the WAVECAR and WAVEDER files of the previous calculation, with

# Frequency dependent dielectric tensor including
# local field effects within the RPA (default) or
# including changes in the DFT xc-potential (LRPA=.FALSE.).
# N.B.: beware one first has to have done a
# calculation with ALGO=Exact, LOPTICS=.TRUE.
# and a reasonable number of virtual states (see above)
ALGO = GW0 ; LSPECTRAL = .TRUE. ; NOMEGA = 50
   
# be sure to take the same number of bands as for
# the LOPTICS=.TRUE. calculation, otherwise the
# WAVEDER file is not read correctly
NBANDS = 64
     
# Add this to update the quasiparticle energies
# in the Green's function (GW0)
#NELM = 4
    
ISMEAR =  0
SIGMA  =  0.05
EDIFF  = 1E-8


At the bottom of the OUTCAR file you will find the quasi-particle (QP) energies.

 QP shifts <psi_nk| G(iteration)W_0 |psi_nk>: iteration 1
 for sc-GW calculations column KS-energies equals QP-energies in previous step
 and V_xc(KS)=  KS-energies - (<T + V_ion + V_H > + <T+V_H+V_ion>^1  + <V_x>^1)

 k-point   1 :       0.0000    0.0000    0.0000
  band No.  KS-energies  QP-energies   sigma(KS)   V_xc(KS)     V^pw_x(r,r')   Z            occupation

      1      -6.4888      -6.8243     -10.9766     -10.4570     -17.5189       0.6458       2.0000
      2       5.4800       5.1162     -11.8859     -11.4060     -12.7290       0.7580       2.0000
      3       5.4800       5.1162     -11.8859     -11.4060     -12.7290       0.7580       2.0000
      4       5.4800       5.1162     -11.8859     -11.4060     -12.7290       0.7580       2.0000
      5       8.0443       8.3296      -9.7235     -10.1038      -5.7364       0.7502       0.0000
      6       8.0443       8.3296      -9.7235     -10.1038      -5.7364       0.7502       0.0000
      7       8.0443       8.3296      -9.7235     -10.1038      -5.7364       0.7502       0.0000
      8       8.8407       9.2475     -10.5130     -11.0594      -6.0662       0.7445       0.0000

 k-point   2 :       0.1667    0.0000    0.0000
  band No.  KS-energies  QP-energies   sigma(KS)   V_xc(KS)     V^pw_x(r,r')   Z            occupation

      1      -6.1276      -6.4734     -11.0208     -10.4905     -17.3978       0.6521       2.0000
      2       3.0946       2.6991     -11.4452     -10.9063     -13.1354       0.7340       2.0000
      3       5.0279       4.6595     -11.7159     -11.2282     -12.6625       0.7552       2.0000
      4       5.0279       4.6595     -11.7159     -11.2282     -12.6625       0.7552       2.0000
      5       7.8309       8.1065      -9.8441     -10.2097      -5.8680       0.7539       0.0000
      6       8.6943       8.9816      -9.8669     -10.2533      -5.6768       0.7436       0.0000
      7       8.6943       8.9816      -9.8669     -10.2533      -5.6768       0.7436       0.0000
      8      10.9341      11.2678     -10.4716     -10.9278      -5.5632       0.7316       0.0000

     ..         ..           ..           ..           ..           ..           ..           .. 
     ..         ..           ..           ..           ..           ..           ..           .. 
     ..         ..           ..           ..           ..           ..           ..           .. 
     ..         ..           ..           ..           ..           ..           ..           .. 


 k-point  16 :      -0.3333    0.5000    0.1667
  band No.  KS-energies  QP-energies   sigma(KS)   V_xc(KS)     V^pw_x(r,r')   Z            occupation

      1      -2.2240      -2.5911     -11.4857     -10.9550     -16.0663       0.6917       2.0000
      2      -2.2240      -2.5911     -11.4857     -10.9550     -16.0663       0.6917       2.0000
      3       1.8279       1.3698     -10.7735     -10.1380     -12.9637       0.7209       2.0000
      4       1.8279       1.3698     -10.7735     -10.1380     -12.9637       0.7209       2.0000
      5       8.2346       8.4128      -9.3111      -9.5472      -5.1975       0.7546       0.0000
      6       8.2346       8.4128      -9.3111      -9.5472      -5.1975       0.7546       0.0000
      7      12.2605      12.5170      -9.7969     -10.1486      -4.3607       0.7294       0.0000
      8      12.2605      12.5170      -9.7969     -10.1486      -4.3607       0.7294       0.0000


To quickly find the QP-energy of the highest lying occupied state, try

./gap_GW.sh OUTCAR

Beyond the random-phase-approximation

To include local field effects beyond the random-phase-approximation in the description of the frequency dependent dielectric response function (local field effects in DFT) add the following line to your INCAR file:

LRPA = .FALSE.

and again restart from the WAVECAR and WAVEDER files from step 2.

Beyond G0W0: GW0

The most usual step beyond single-shot GW (G0W0) is to iterate the quasi-particle energies in the Greens functions. This is the socalled GW0 approximation. To have VASP do, for instance, 4 iterations of the QP-energies in G, add the following line to the INCAR file:

NELM = 4

and again restart from the WAVECAR and WAVEDER files from step 2.

To quickly find the QP-energy of the highest lying occupied state after 4 iterations of the QP energies in G, type:

./gap_GW.sh OUTCAR

Download

Si_GW_gap.tgz

Back to the main page.