VASP Tutorial: DFT Calculation For $\mathrm{WS_{2}}$ With SOC
6 minute read
Published:
The method for general PBE calculation is quite comprehensive in previous tutorials, while the DFT simulation process that requires the consideration of SOC (spin-orbital coupling) remains blank. Here in this tutorial, we’re going to summerize the process for the DFT calculation of WS2 considering SOC effect.
We use monolayer $\mathrm{WS_{2}}$ in this tutorial. The DFT result without SOC is shown below:
DFT with SOC
There are two steps, for calculating DFT with SOC effect. Firstly, we calculate the SCF (static self-consistent functional) DFT. The INCAR script should be like this:
Global Parameters
ISTART = 1 (Read existing wavefunction, if there)
ISPIN = 2 (Non-Spin polarised DFT)
#ICHARG = 11 (Non-self-consistent: GGA/LDA band structures)
LREAL = .FALSE. (Projection operators: automatic)
# ENCUT = 400 (Cut-off energy for plane wave basis set, in eV)
# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE = .FALSE. (Write WAVECAR or not)
LCHARG = .TRUE. (Write CHGCAR or not)
ADDGRID= .TRUE. (Increase grid, helps GGA convergence)
# LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not)
# LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT = (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE. (Real space distribution, supercells)
# NWRITE = 2 (Medium-level output)
# KPAR = 2 (Divides k-grid into separate groups)
# NGXF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGYF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGZF = 300 (FFT grid mesh density for nice charge/potential plots)
Static Calculation
ISMEAR = 0 (gaussian smearing method)
SIGMA = 0.05 (please check the width of the smearing)
LORBIT = 11 (PAW radii for projected DOS)
NEDOS = 2001 (DOSCAR points)
NELM = 60 (Max electronic SCF steps)
EDIFF = 1E-08 (SCF energy convergence, in eV)
#LSORBIT = .TRUE.
The INCAR file could be generated in vaspkit and then modified specifically for ISPIN = 2 and LWAVE = .FALSE. (Ban the generation of WAVECAR).
Run the following command in the terminal:
mpirun -genv FI_PROVIDER=mlx vasp_std
The second step for SOC. The INCAR is as follows:
Global Parameters
ISTART = 1 (Read existing wavefunction, if there)
ISPIN = 2 (Non-Spin polarised DFT)
ICHARG = 11 (Non-self-consistent: GGA/LDA band structures)
LREAL = .FALSE. (Projection operators: automatic)
# ENCUT = 400 (Cut-off energy for plane wave basis set, in eV)
# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE = .FALSE. (Write WAVECAR or not)
LCHARG = .TRUE. (Write CHGCAR or not)
ADDGRID= .TRUE. (Increase grid, helps GGA convergence)
# LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not)
# LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT = (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE. (Real space distribution, supercells)
# NWRITE = 2 (Medium-level output)
# KPAR = 2 (Divides k-grid into separate groups)
# NGXF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGYF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGZF = 300 (FFT grid mesh density for nice charge/potential plots)
LSORBIT = .TRUE.
Here we copy the CHARCAR file from the previous step and set ICHARG = 11 to read the charge infomation from the last step. Then we set LSORBIT = .TRUE. to enable the SOC calculation.
We can generate KPATH.in in vaspkit, and replace the content of KPATH.in file to the KPOINTS file.
Run the following command in the terminal:
Here, a python script written by myself is provided for the automatic process of DFT calculation of a set of MD trajectories.
The band structure for monolayer WS2 considering SOC effect is demonstrated as below: