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.
System-specific instructions
Select instructions for the system you are using:
Instructions for use on the NAISS cluster Tetralith (NSC)
Instructions for use on the EuroHPC cluster LEONARDO
First, copy the example folder which contains some of the VASP input files and useful scripts
cp -r /software/sse2/tetralith_el9/manual/vasp/training/ws2024/bandgap_Si .
cd bandgap_Si
and copy the latest POTCAR file for Si
cp /software/sse2/tetralith_el9/manual/vasp/POTCARs/PBE/2024-03-19/Si/POTCAR .
cp -r /leonardo_scratch/fast/EUHPC_TD02_030/vasp_ws2024/examples/bandgap_Si .
cd bandgap_Si
and copy the latest POTCAR file for Si
cp /leonardo_scratch/fast/EUHPC_TD02_030/vasp_ws2024/potpaw_PBE.64/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 by submitting the job
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 as before. 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”.