表面计算对精度和技巧要求相当高,所以在进行此类计算时需要非常细心,即使你严格按照给定步骤进行计算,依然可能会出现错误,得到没有任何物理意义的结果。
表面计算对精度和技巧要求相当高,所以在进行此类计算时需要非常细心,计算之前应仔细学习相关基本知识。需要注意的是,即使你严格按照给定步骤进行计算,依然可能会出现错误,得到没有任何物理意义的结果,这就需要你对可能出现的错误进行仔细的分析,比如,FFT网格大小、K点数目是否足够,计算结果是否收敛,原子位置是否正确等,更一般的来说就是INCAR、POSCAR、KPOINTS、param.inc等输入文件是否正确。还需注意,前一步的计算误差可能导致后面计算中出现更大的错误,比如晶格常数1%的计算误差可能导致表面弛豫结果中3%的误差。因此,在初始计算中(包括体性质计算,确定FFT网格大小和K点的合适数目等)多花点时间是非常值得的。
材料体性质计算的第一步,可以使用四面体方法(ISMEAR=-5或-4)、通过提高K点数目直到计算收敛到预期精度。这里所说的预期精度没有特定标准,一般说来如果表面能计算误差要控制在10 meV以内,可以提高K点数目直到总能收敛到1 meV左右即可。计算材料体性质的slab模型通常含有20-100个原子,因此为得到可靠的表面能结果需要进行非常精确的体能量计算,实际上越精确越好,推荐选择PREC=High。
第二步,将四面体方法改为有限温度方法(ISMEAR=0或N,N为正整数),有两种选择:
(1) Gaussian方法(ISMEAR=0),较小的SIGMA值(SIGMA=0.1)。前面计算中多次用到这种方法,但更推荐第二种方法:
(2) Methfessel-Paxton方法(ISMEAR=1),SIGMA值要尽量大,但要保证OUTCAR文件中的自由能和总能之差(比如entropy T*S项)可忽略不计。entropy项可以很好的估计可能误差的大小,必须在预期误差范围内(如前例中是1 meV左右)
从现在开始,将无须改变ISMEAR、SIGMA和ENCUT值,而通过逐步提高K点数目来重复体性质计算,此时K点的收敛速率应该和四面体方法基本差不多。
选择一个用在表面计算中合适的K点数目和截断能,计算平衡晶格常数,注意尽量避免包络错误(Wrap around errors,设置PREC=High)。现在得出的晶格常数就是将来表面计算中使用的晶格常数,而自由能是所有后续计算的参考值,此外还要计算entropy值(OUTCAR中的entropy*TS项)或者记下总能和physical能(σ->0)。
第一步需要确定合理的FFT网格大小,为从根本上杜绝包络错误,可以选择VASP的推荐参数(或者设置PREC=High)。开始尝试计算时,可选择5个原子层和5个真空层的slab模型,取一个合理的不太大的K点数目,在OUTCAR文件中将给出能严格避免包络错误的FFT网格大小值:
WARNING: wrap around error must be expected
Set NGX to 22
采用这个推荐网格会导致计算时间的延长,但至少应该可以做一次这样精确的计算。如果想减小计算时间,可以尝试使用3/4规则(PREC=Med),将其计算结果与精确收敛结果进行一下对比。
下一步需要确定合适的K点网格数目。体性质计算已经提供了一个参考,在表面计算中,通常含有一个长的晶格矢量和两个短的晶格矢量,在长晶格方向上,一个K点网格一般就足够了,因为在这个方向上色散是由真空层造成的。在短晶格方向上,网格划分数的收敛速度和体材料基本相同,提高K点数目知道自由能足够收敛即可。要再次提醒,避免包络错误!
(1) 每个原子的entropy值应该和体性质计算相同,否则降低SIGMA值重新所有计算。
(2) 总的力偏移量应该足够小,否则原因是FFT网格不够大,应当相应地提高。
(3) 检查力随着K点网格和FFT网格的收敛速度。
从现在开始,固定K点网格数目和包络错误大小(比如,保持严格杜绝包络错误的FFT网格大小和实际的FFT网格大小的比例为一定值),测试需要多少原子层和真空层,才能得到合理的表面能值,以及表面第一层(或第二层)原子收敛的作用力。
注意:在一次计算和下一次计算中修改的参数不要超过一个,比较k点数目和超胞大小都不同的两次计算结果几乎是不可能的。特别要注意FFT网格:如果增大了超胞尺寸而没有相应地提高FFT网格的尺寸,计算结果不但没有改进反而更糟糕,因为包络错误增大了。
本文转载自xianggui7895,转载目的在于知识分享。
声明:如需转载请注明出处(华算科技旗下资讯学习网站-学术资讯),并附有原文链接,谢谢!