在用VASP处理吸附、掺杂、界面或者异质结这类计算时,很多人都会想到用Bader电荷来判断电子到底是从哪个部分转移到了哪个部分。这个分析的基本思路,是靠着电荷密度的零通量面,把整个体系划分成一个个属于不同原子的区域,然后再分别对每个区域里的电子数去做积分,这样就可以得到每个原子上的Bader电荷。需要特别留心的一点是,VASP普通输出的那个CHGCAR文件,一般情况下只装着价电子的密度,所以Bader程序那边的作者也专门提醒过,在做VASP体系的分析时,更推荐的办法是把AECCAR0和AECCAR2这两份文件结合在一起来生成一份参考电荷密度,再拿它去做Bader分析,这样结果要靠谱得多。
一、VASP Bader电荷怎么分析
在正式开始做Bader分析之前,先得把结构优化好,然后用优化完以后的那个CONTCAR结构,再去跑一次静态计算。可别直接把没收敛好的结构,或者是网格很粗的电荷密度直接拿去算电荷转移。
1、通过静态计算把需要的电荷密度文件输出出来
在INCAR里面把各项精度相关的参数调得高一些,同时加上LAECHG=.TRUE.这个标签,这样VASP就会在跑完之后输出AECCAR0和AECCAR2这两份文件。一般还要保证CHGCAR也完整地输出来。QuantumATK那边的文档也提到过,Bader分析是需要用到全电子密度的,在VASP这一套体系底下,就是可以靠着AECCAR0和AECCAR2来帮忙生成。
2、把参考的电荷密度给合并出来
等静态计算全部跑完以后,用Bader工具包里自带的那个叫chgsum.pl的脚本,把AECCAR0和AECCAR2给合并到一块儿。合并完生成的文件通常取名叫CHGCAR_sum。然后再去跑bader CHGCAR-ref CHGCAR_sum这条命令,这么一来,CHGCAR就会拿来当那个等着被积分的电荷密度,而CHGCAR_sum呢,就拿来当帮我们划分原子空间的参考密度。在VASP的用户论坛上,也经常能看到大家在用这套差不多的命令流程。
3、去查看ACF.dat里头的计算结果
跑完之后,重点关注那个叫ACF.dat的文件,里面一般会按顺序列出原子的序号、坐标、Bader电荷、最小距离,还有原子体积这些信息。文件的最后几行还会给出总的电子数、真空电荷以及真空体积。在开始往下判断电荷转移之前,先瞄一眼总电荷这个数,看看它是不是在合理范围里面。
二、VASP Bader结果电荷转移怎么判断
Bader表格里头那个名叫CHARGE的数值,它指的可不是“净电荷”,而是把这个原子对应的Bader体积里面的电子数积出来得到的一个量。所以在判断是得了电子还是丢了电子的时候,不能光看这个数,得拿它去跟这个原子在中性状态下的价电子数来做个比较。
1、先把每种元素的价电子数弄清楚
这个数一般是从POTCAR文件里面找到的。举个例子吧,假如某个元素在POTCAR里头的ZVAL标的是4,而你一查Bader结果里这个原子的CHARGE是3.6,那就可以理解为跟它的中性价电子数相比要少了大概0.4个电子,表现成失电子。反过来,要是CHARGE显示是4.3,那就是相对来说多了0.3个电子,表现为得电子。每一步都这样把对应关系搞清楚,后面就不会乱。
2、把原子或者划好的区域加起来看整体
在研究吸附体系的时候,可以把被吸附的那个分子上所有的原子的Bader电子数统统加在一起,再拿这个总数去跟把它单独拎出来计算时那一套孤立的价电子总数做个比较。要是吸附分子的总Bader电子数比孤立时还多了,那就说明基底这边把电子给了分子;要是总数变少了,就说明是分子那头把电子传给了基底。做界面体系的时候也差不多,可以按层来加、按材料的区域来加,或者专门盯着掺杂原子周围的那一片区域去求和。
3、符号定义上最好统一一下
建议约定一种写法,比如写成Δq等于ZVAL减去Bader charge,这样当Δq大于零的时候代表失电子,小于零的时候代表得电子。千万别在这一处写着“获得电子为正”,到了那一处又变成“净正电荷是正的”,到头来把自己都给绕进去了。
三、Bader电荷结果异常怎么检查
如果发现算出来的Bader结果明显不太合理,先不要着急把它解释成某种特殊的电荷转移行为,而是要先回头去排查一下计算设置,尤其是网格的精细程度。
1、检查一下网格到底够不够细
Bader分析对电荷密度网格的疏密是很敏感的。要是发现结果变动比较厉害,就可以把NGXF、NGYF、NGZF这三个参数往上提一提,让输出的CHGCAR和AECCAR文件变得更加细密。如果你试着改了网格,发现重新算出来的电荷转移量基本稳定住了,那这个结果的可信度就会提高不少。
2、检查一下被放在一起比较的体系是不是条件都一致
在做差值比较的时候,吸附的体系、孤零零的分子、还有光秃秃的基底,这三者在计算时最好是用了同一套POTCAR、同样的ENCUT、同样密度的网格和差不多的计算精度。要是在不同的赝势条件或者不同的精度下面,直接把Bader电荷拿来做比较,是很容易掺进去一些人为的误判的。
3、对于特别小的数值,不要拿着放大镜去过度解读
Bader电荷更适合拿来看整体的趋势,如果把那些0.01e这种量级的微小差异,硬说成一次清清楚楚的电子转移,就有点不太站得住脚。碰到弱相互作用的体系,最好再结合吸附能、差分电荷密度、态密度和功函数的变化,放在一块儿综合地去判断,这样才更稳妥。
总结
VASP Bader电荷到底要怎么分析,以及Bader结果里面的电荷转移又要怎么去判断,整个操作的顺序大概可以这样来走:先把结构优化好,再去做静态计算,让VASP输出CHGCAR、AECCAR0和AECCAR2,然后用chgsum.pl把它们处理成CHGCAR_sum,接着跑bader CHGCAR-ref CHGCAR_sum这条命令。判断电荷转移方向的时候,就拿POTCAR里的ZVAL跟ACF.dat里给出的Bader电子数来做比较,然后再按原子、分子,或者按材料的分区去求和。在对着结果做解释之前,别忘了还要检查一下网格收敛了没有、被比较的体系是不是条件一致,以及符号的定义有没有统一好。