这里主要讨论一下用vasp对二维材料的hse+soc对能带剪刀操作的过程。
1. 结构优化
我们对材料Ag2Br2进行结构优化,结构与优化的参数如下:
image.png
- 进行了分步优化,下面为最后一步的优化参数
SYSTEM = stepOpt6
NPAR = 4
ALGO = Normal # Fast;Normal
LREAL = .FALSE.
#LPLANE = .TRUE.
PREC = Accurate
#AMIN = 0.01
#ISYM = 0
##2_INIT_input
ISTART = 0
ICHARG = 2
##3_ELECTRON
NELM = 200
NELMIN = 5
EDIFF = 1e-6
ISMEAR = 0
SIGMA = 0.05
#LMAXMIX = 4
ENCUT = 600
ISPIN =1
##4_IONS
NSW = 200
IBRION = 2
POTIM = 0.5
ISIF = 3
EDIFFG = -0.001
ADDGRID = .TRUE.
##5_Kmesh
KSPACING = 0.189
##6_Output
LWAVE = .False.
LCHARG = .False.
LORBIT = 11
####optB86-vdw####
GGA = MK
PARAM1 = 0.1234
PARAM2 = 1.0000
LUSE_VDW = .True.
AGGAC = 0.0000
2.自洽(即输出波函数和电荷密度)
- 这里考虑到后续的真空层对齐,因而打开了静电势的开关LVHAR(此tag的详细的问题可以参照这个链接)
##1_system
SYSTEM = stepOpt6
NPAR = 4
ALGO = Normal # Fast;Normal
LREAL = .FALSE.
#LPLANE = .TRUE.
PREC = Accurate
#AMIN = 0.01
#ISYM = 0
##2_INIT_input
ISTART = 0
ICHARG = 2
##3_ELECTRON
NELM = 200
NELMIN = 5
EDIFF = 1e-6
ISMEAR = 0
SIGMA = 0.05
#LMAXMIX = 4
ENCUT = 600
#ISPIN =1
##4_IONS
NSW = 0
IBRION = -1
POTIM = 0.5
ISIF = 2
EDIFFG = -0.001
ADDGRID = .TRUE.
##5_Kmesh
#KSPACING = 0.189
##6_Output
LWAVE = .True.
LCHARG = .True.
LORBIT = 11
####optB86-vdw####
GGA = MK
PARAM1 = 0.1234
PARAM2 = 1.0000
LUSE_VDW = .True.
AGGAC = 0.0000
#### Add Parameters ####
LVHAR = .True.
3. pbe的band计算
- band计算的时候根据高对称点自己线性插值生成高对称路径k点
SYSTEM = stepOpt6
NPAR = 4
ALGO = Normal # Fast;Normal
LREAL = .FALSE.
#LPLANE = .TRUE.
PREC = Accurate
#AMIN = 0.01
#ISYM = 0
##2_INIT_input
ISTART = 1
ICHARG = 11
##3_ELECTRON
NELM = 200
NELMIN = 5
EDIFF = 1e-6
ISMEAR = 0
SIGMA = 0.05
#LMAXMIX = 4
ENCUT = 600
ISPIN =1
##4_IONS
NSW = 0
IBRION = -1
POTIM = 0.5
ISIF = 2
EDIFFG = -0.001
ADDGRID = .TRUE.
##5_Kmesh
#KSPACING = 0.189
##6_Output
LWAVE = .False.
LCHARG = .False.
LORBIT = 11
####optB86-vdw####
GGA = MK
PARAM1 = 0.1234
PARAM2 = 1.0000
LUSE_VDW = .True.
AGGAC = 0.0000
4. HSE+SOC(进入正题)
由于PBE存在低估带隙的问题,因而需要考虑仅HSE的计算,另外在批量计算的时候,我们可能要引入SOC来保证计算的严谨性。
但需要注意的是,即便对于我所计算的二维材料(仅有4个原子),当仍然面对该类计算相当耗费算力。不废话,直接说一些测试下来,必然对的点:
- k点会显著影响计算速度,大致呈现的时间效率;
- 相同k点数下,读取用PBE得到的WAVECAR将节省~60-70%的计算时间(相较自己撒点);
- ENCUT对于计算速度也有较大影响需要进行测试
- 此类计算只需要读取WAVECAR(ISTART = 1)不需要读取(ICHARGE = 2)
首先需要做一步带SOC的自洽计算:
SYSTEM = stepOpt6
NPAR = 4
ALGO = Normal # Fast;Normal
LREAL = .False.
LPLANE = .False.
PREC = Accurate
#AMIN = 0.01
#ISYM = -1
##2_INIT_input
ISTART = 0
ICHARG = 12
##3_ELECTRON
NELM = 200
NELMIN = 5
EDIFF = 1e-6
ISMEAR = 0
SIGMA = 0.05
#LMAXMIX = 4
ENCUT = 325
#ISPIN =1
##4_IONS
NSW = 0
IBRION = -1
POTIM = 0.5
ISIF = 2
EDIFFG = -0.001
ADDGRID = .TRUE.
##5_Kmesh
KSPACING = 0.4
##6_Output
LWAVE = .True.
LCHARG = .True.
LORBIT = 11
####optB86-vdw####
#GGA = MK
#PARAM1 = 0.1234
#PARAM2 = 1.0000
#LUSE_VDW = .True.
#AGGAC = 0.0000
#### Add Parameters ####
#LVHAR = .True.
#### mbj ####
#METAGGA = MBJ
#LASPH = .TRUE.
#LMIXTAU = .TRUE.
#### mix wave####
#IMIX = 1
#AMIX = 0.2
#BMIX = 0.0000001
#### HSE ####
#LHFCALC = .TRUE.
#HFSCREEN = 0.2
#### SOC ####
LSORBIT = .TRUE.
SAXIS = 0 0 1
MAGMOM = 1000*0
GGA_COMPAT = .FALSE.
#---for slabs---#
#AMIX = 0.2
#BMIX = 0.00001
#LSCALAPACK = .FALSE.
随后做能带剪刀操作:
- 将
IBZKPT
文件负值为KPOINTS
同时加入PBE计算的带边K点(不要忘了改一下k点总数[+2])
下面给出测试结果的比较:
测试材料:Ag2Br2 (4原子) | ISTART = 1 | ISTART = 1 | ISTART = 0(自己撒点) | ISTART = 0(自己撒点) |
---|---|---|---|---|
ENCUT | 325 | 325 | 325 | 600 |
KSPACING | 0.45 | 0.4 | 自己撒点() | 自己撒点() |
K点数(不算带边k点) | 16 | 25 | 13 | 13 |
gap | 2.8935 | 2.8913 | 2.9043 | 2.9096 |
用时 | 3835.938 | 10405.274 | 8078.797 | 49828.280 |
因而可以发现测试下来只需要用KSPACING = 0.45
做+SOC
的自洽计算同时选取ENCUT = ENMAX*1.3
就能保证计算。
另外,需要注意的是在ISTART = 1
的计算中都出现了以下的问题,一开始尝试解决,但发现后来最后能算出来。在不读WAVECAR(ISTART = 0)
的计算中不会出现,可能与WAVEACR
的读取有关。
5. 其他问题
对于收敛不了的情况,可以试试混合态密度的优化方式AMIX = 0.02 BMIX = 0.0000001
当打开LHFCALC = .TRUE.
时候,默认ISYM = 3
,所以如果再不行,比如遇到如下问题,可以尝试ALGO = Damped
WARNING: Sub-Space-Matrix is not hermitian in DAV 40 6.53599947936788
WARNING: DENMP: can't reach specified precision Number of Electrons is NELECT = 22.0000000008318
1.25806886504639 Error EDDDAV: Call to ZHEGV failed. Returncode = 16 2 16
网友评论