Bandgap of Si using different DFT+HF methods

Based on the VASP wiki example in this link

Task: Calculate the bandgap of Si using different DFT+HF schemes: PBE, B3LYP, PBE0, HSE06 and HF.

First, copy the example folder which contains some of the VASP input files and useful scripts

cp -r /software/sse/manual/vasp/training/ws2020/bandgap_Si .
cd bandgap_Si

and copy the latest POTCAR file for Si

cp /software/sse/manual/vasp/POTCARs/PBE/2015-09-21/Si/POTCAR .

Input files

POSCAR

System: Si                             
 5.430 
 0.5 0.5 0.0
 0.0 0.5 0.5
 0.5 0.0 0.5
Si
   1  
Cartesian
0    0    0
0.25 0.25 0.25

INCAR

## Better preconverge with PBE first
## and use the WAVECAR file as inout for the DFT+HF calculation
   
## Selects the B3LYP hybrid function
#LHFCALC = .TRUE. ; GGA = B3 ; AEXX = 0.2 ; AGGAX = 0.72 
#AGGAC = 0.81 ; ALDAC = 0.19
#ALGO = D ; TIME = 0.4 
   
## Selects the PBE0  hybrid function
#LHFCALC = .TRUE. ; 
#ALGO = D ; TIME = 0.4 
   
## Selects the HSE06 hybrid function
#LHFCALC = .TRUE. ; HFSCREEN = 0.2 ; 
#ALGO = D ; TIME = 0.4 
   
## Selects HF 
#LHFCALC = .TRUE. ; AEXX = 1.0 ; ALDAC = 0.0 ; AGGAC = 0
#ALGO = D ; TIME = 0.4 
   
## Leave this in
ISMEAR =  0
SIGMA  =  0.01
GGA    = PE
  • This INCAR will run a standard PBE calculation, since all DFT+HF methods are commented out

KPOINTS

k-points
0
Gamma
  6  6  6
  0  0  0
  • Gamma (G) k-mesh -> gamma point included by default

Calculations

First, run the regular PBE calculation which will be used as a start for the DFT+HF methods

sbatch run.sh

when it’s finished, cycle through the different DFT+HF methods, don’t forget to copy WAVECAR

mkdir B3LYP
cp INCAR POSCAR KPOINTS POTCAR run.sh gap.sh WAVECAR B3LYP
cd B3LYP

edit INCAR such that the method of interest is uncommented, e.g.

## Selects the B3LYP hybrid function
LHFCALC = .TRUE. ; GGA = B3 ; AEXX = 0.2 ; AGGAX = 0.72 
AGGAC = 0.81 ; ALDAC = 0.19
ALGO = D ; TIME = 0.4 
  • Note the use of ALGO=Damped or D, for the DFT+HF methods, different from the default ALGO=Normal.

and run the job

sbatch run.sh

after it has finished, inspect the output

cat slurm*out
cat OSZICAR

to obtain energies for the highest occupied and lowest unoccupied states, run the provided script “gap.sh” in this way

./gap.sh OUTCAR

The bandgap is then given by: bandgap = min(cband) - max(vband).

In the same way, repeat the calculations for PBE0, HSE06 and HF.

  • Compare the results with PBE, how big is the difference?
  • Why didn’t we explicitly set ISTART=1 in INCAR in order to continue the calculation? Because, since a WAVECAR was present in the folder, the default is set to ISTART=1 instead of 0. Confirm with “grep ISTART OUTCAR”.

User Area

User support

Guides, documentation and FAQ.

Getting access

Applying for projects and login accounts.

System status

Everything OK!

No reported problems

Self-service

SUPR
NSC Express