HSE 计算电子性质

众所周知,普通的semi-local(主要是指LDA 和GGA)方法计算带隙是有问题,一般低估1-2 个电子伏特。解决的办法就是用更精确的GW 或杂化泛函的方法。由于目前广泛使用的软件是VASP,而VASP 是很难使用GW 方法计算带隙的,所以这里主要讲用杂化泛函(HSE)的方法计算带隙。HSE 的理论实际是很简单的,大家可以自己找找资料,实在不懂的话,可以联系我。我这里主要讲操作流程和一些技巧。

一般来说分为以下几个部分。这里以PBE 函数为例说明,首先,用PBE函数进行正常的自恰计算,这里需要输出波函数和电荷密度;其次,用HSE函数进行自恰计算,这里最好用ALGO=damp;第三,用HSE 函数进行自恰计算,去除ALGO 参数,这里使用DAV 算法;最后,计算能带和态密度。

注意,有时可以将第三步和第四步合并。

第一步

INCAR 
SYSTEM = scf 
ENCUT = 500 
EDIFF = 1e-5 
IBRION = -1 
ISIF = 2 
NSW = 0 
ISMEAR = 0 ; SIGMA = 0.05 
POTIM = 0.1 
#Wavefunction and charge 
LWAVE = T 
LCHARG = T 

这里是正常计算,不多讲。

第二步

SYSTEM = scf 
ENCUT = 500 
EDIFF = 1e-5 
IBRION = -1 
ISIF = 2 
NSW = 0 
ISMEAR = 0 ; SIGMA = 0.05 
POTIM = 0.1 
#Wavefunction and charge 
LWAVE = T 
LCHARG = T 
LHFCALC = .TRUE. 
HFSCREEN = 0.2 
ALGO = Damped 
TIME = 0.4 

这里可以看出,多加的是后四行。

LHFCALC = .TRUE.        #这里采取杂化泛函方法。
HFSCREEN = 0.2          #0.2 是HSE06; 0.3 是HSE03 
ALGO = Damped 
TIME = 0.4 

后两行是为了更好的收敛,有的时候DAV 方法不收敛。值得注意的是,这种方法计算的本征矢量会有问题,即每个k 点能带的顺序会乱七八糟。但电荷密度和波函数是没有问题的。

第三步

SYSTEM = scf 
ENCUT = 500 
EDIFF = 1e-5 
IBRION = -1 
ISIF = 2 
NSW = 0 
ISMEAR = 0 ; SIGMA = 0.05 
POTIM = 0.1 
#Wavefunction and charge 
LWAVE = T 
LCHARG = T 
LHFCALC = .TRUE. 
HFSCREEN = 0.2 

在第二步的基础上,使用DAV 算法计算,好处是收敛较快,本征矢量没有任何问题。这一步的DOS 是没有问题的。

第四步,计算能带

首先说INCAR,

SYSTEM = scf 
ENCUT = 500 
EDIFF = 1e-5 
IBRION = -1 
ISIF = 2 
NSW = 0 
ISMEAR = 0 ; SIGMA = 0.05 
POTIM = 0.1 
#Wavefunction and charge 
LWAVE = T 
LCHARG = T 
LHFCALC = .TRUE. 
HFSCREEN = 0.2 

和第三步没有差别。主要是k点的设置,由于HSE 方法无法从电荷密度进行非自恰,所以只能用自恰的方法计算能带。

通常是先把IBZKPT 拷贝成KPOINTS,

Automatically generated mesh 
75 
Reciprocal lattice 

# (此处省略大量k点数据)

这里第二行75,意味着一共有75 个k 点,接下来会有这75 个k 点,后面跟着的是权重(如果大家不理解什么是权重,可以联系我)。这些权重为0的,即为想计算的能带k 点。大家仔细观察,就能体会出它是能带的k 点了,因为k 点是连续的。这里权重是0,意味着在自恰计算的时候,不会计算这些k 点,但是计算完后,会输出这些本征值。达到计算能带的目的。

之后,我的方法是在EIGENVAL 里删除自恰的k 点信息,之后就可以用正常的能带处理程序处理了。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐