ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VASP表面吸附能计算全流程:以CO在Pt(111)表面为例

VASP表面吸附能计算全流程:以CO在Pt(111)表面为例 经常有刚接触VASP表面吸附计算的同学问我同样是算CO在金属表面的吸附能为什么文献里数值能差出0.3 eV甚至更多多数时候问题不在VASP本身而在整个流程里那些看似不起眼的选择上——slab建得多厚、真空层留多大、底部几层固定、参考态怎么取、要不要开偶极修正。这些东西单个拎出来都不难但串在一起任何一个环节手松一下吸附能就漂了。这篇文章就把从建模到能量分析的完整流程拆开讲一遍并以CO在Pt(111)表面的顶位吸附为例把每一步怎么操作、参数怎么设、坑在哪里都说清楚。适合刚跑通VASP基础计算、正准备做第一个表面吸附课题的读者也适合已经被吸附能数值搞到怀疑、想回头排查流程的研究生。1. 吸附计算全流程盘点从晶体结构到吸附能1.1 一份可以贴在工位上的流程清单表面吸附计算表面上看是“把分子放在表面上然后优化”实际拆开却是一条相当长的流水线。我建议每个刚入门的人先把全流程打印出来做到每一阶段都心里有数再做不然很容易出现“优化完了才发现原子层数不够”“吸附能算完才发现忘了算分子参考态”这种返工事故。完整流程通常分成以下几个阶段获取或构建体相晶体结构做体相结构优化得到平衡晶格常数。根据目标晶面切出slab模型设定原子层数、真空层厚度并决定底部固定几层。对干净表面做结构弛豫确认表面收敛。构造吸附分子在高对称位置放置初始构型。对“吸附物表面”体系做结构弛豫得到稳定吸附构型和总能量。分别计算孤立分子的参考能量和干净表面参考能量。用吸附能公式汇总结果。如果需要机理分析再做差分电荷密度、PDOS、Bader电荷等后处理。第1到第6步里任何一步出错最后吸附能都会有问题。尤其是第2步和第6步是新手最容易翻车的两处后面会重点展开。1.2 软件环境和硬件的现实考量先说软件环境。VASP本身是商业软件需要通过单位或课题组购买授权。拿到license之后Linux服务器上编译是常规操作。如果你用的是Ubuntu装VASP通常意味着要先准备好编译器、MPI并行库和数学库常见的组合是ifort或gfortran搭配OpenMPI再链接BLAS、LAPACK、FFTW。VASP 5.4和6.x在编译选项上略有差异6.x加入了机器学习力场等新功能但表面吸附计算的核心逻辑没有变。除了VASP本体我强烈建议再装这几样东西VESTA看结构、检查slab是否切对、看电荷密度图免费且好用。ASE用Python脚本切表面、加吸附物、批量提交任务属于效率神器。VASPKIT做K点生成、能带/态密度数据提取、差分电荷密度处理一个命令省半天时间。p4vasp或VESTA后期可视化。硬件方面表面吸附计算比体相计算吃资源主要因为slab模型原子数多、真空层又浪费了大量实空间而且常有几十个离子的弛豫过程。算一个4层Pt(111)的(2x2)超胞加CO分子大概20到30个原子用16到32核跑一到两天优化属于正常节奏。如果课题组只有个人电脑建议先在服务器上把流程跑通再考虑参数收敛测试不然时间成本太高。2. 表面模型的质量决定吸附能的起点2.1 为什么非用slab模型不可做表面吸附第一步就要回答一个问题用什么样的模型来描述表面VASP是基于周期性边界条件的平面波程序它没法处理一个真正有限大小的表面。最常见的做法就是slab模型——切出一块有限厚度的平板然后在垂直方向加上足够厚的真空层让相邻周期性镜像之间的相互作用小到可以忽略。slab模型的好处是保留了表面的二维周期性能用K点采样处理布里渊区电子结构描述比较准确代价是必须人为保证平板厚度和真空层厚度都收敛。另一种思路是团簇模型把表面截成一小团原子簇来算但平面波基组下处理团簇既浪费周期边界边界效应又很难消除除非用局域轨道基组程序配合嵌人方法。VASP用户走slab路线是主流这不仅是习惯问题更有物理依据吸附引起的电子结构重构是长程的周期平板更接近真实表面。2.2 原子层数和真空层收敛测试不能省slab模型有两个关键厚度必须测试平板厚度和真空层厚度。平板太薄表面弛豫会被底端约束变形吸附能随层数震荡平板太厚计算成本爆炸。以Pt(111)为例4层到6层是常见选择最底下两层固定以模拟半无限体相。实际做法是固定一个参考层数比如先用4层测一下然后再加两层对比吸附能如果变化小于0.02 eV就认为收敛了。真空层厚度直接决定表面镜像之间的静电相互作用和波函数重叠。对于金属表面15到20埃是比较常见的取值范围。我不是特别建议上来就取20埃因为大真空层虽然更稳但会显著增加成本。标准做法是取12埃、15埃、18埃各算一次看表面能的收敛趋势。有一条经验真空层宁可多不可少因为偶极相互作用衰减得比很多人想象中慢。收敛测试为什么必须自己做因为不同金属、不同晶面的电子屏蔽长度不一样。文献里报的“一般取15埃”只能作为出发点不能作为免责依据。2.3 超胞大小与覆盖度效应周期性表面模型里超胞大小等价于吸附物覆盖度。同一个CO分子放在(1x1)超胞里覆盖度高达1个ML放在(3x3)超胞里覆盖度降到1/9 ML。覆盖度高吸附分子之间的横向相互作用就会变强吸附能随之改变——这不是你想要的“单分子吸附”本征性质。对大多数表面吸附研究低覆盖度是目标。金属表面常用的做法是(2x2)或(3x3)超胞这样既能控制吸附分子间距又不至于让计算规模失控。CO/Pt(111)这种体系(2x2)超胞通常就能给出不错的结果如果想做更严格的低覆盖度验证或研究侧向相互作用再增加到(3x3)。2.4 底部固定选择性动力学的正确打开方式表面弛豫时通常把底部一到两层原子固定让顶部两层充分弛豫。原因很直接slab厚度有限底部如果完全自由原子可能因为缺少体相约束而过度位移模拟真实的半无限表面靠近体相的部分应该接近体相结构。实现方式是在POSCAR里打开“Selective dynamics”然后在每个原子坐标后面加三个字母T表示该方向允许弛豫F表示固定Selective dynamics Direct 0.0000000000 0.0000000000 0.0000000000 F F F 0.3333333333 0.6666666667 0.3333333333 F F F ... 0.1111111111 0.2222222222 0.0555555556 T T T这里有个常见误区很多人直接把ISIF设置成默认值忘了结构弛豫时应该用ISIF2。ISIF2表示只允许原子位置变化晶胞形状和体积不变。如果用了ISIF3VASP会把固定原子和晶胞弛豫一起处理结果很容易出现不合理的晶胞变形尤其当你又用F F F固定了一些原子的时候这种组合本身就是矛盾的。3. 四个输入文件的参数逻辑一个个说清楚3.1 POSCAR结构文件和原子顺序的一致性POSCAR是VASP的结构输入文件第一行是注释第二行是缩放系数之后三行是晶格矢量接着是元素符号和每种元素原子数然后坐标。一个标准的Pt(111) slab的POSCAR长这样Pt slab 111 (4 layers, 2x2) 1.00000000000000 7.8453220000000000 0.0000000000000000 0.0000000000000000 3.9226610000000000 6.7949000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 24.0000000000000000 Pt 16 Direct ...有个细节必须强调POSCAR和POTCAR的原子顺序必须严格一致。VASP在处理POTCAR时是按顺序读取赝势文件如果POSCAR里前16个是Pt、后面加了C、O那么POTCAR就应该是Pt、C、O依次拼接。顺序错了不会报错但计算结果完全是错的——这个坑我亲眼见过不止一次。3.2 POTCAR赝势选择和拼接要点POTCAR的选择不要什么新用什么。PAW-PBE是表面吸附计算最常用的组合它对大多数过渡金属和轻元素描述不错。对于某些特定体系比如含稀土或者强关联电子可以考虑更复杂的处理但那是课题需要不是新手入门该碰的。拼接时要注意两点一是从paw_pbe或paw_54目录下选取对应元素版本二是注意不同元素POTCAR之间的VRHFIN信息可以用grep VRHFIN POTCAR检查每个元素的赝势类型是否匹配。3.3 INCAR从优化到能量计算的关键开关INCAR的每个标签都值得看一遍官方文档但下面这几个是最核心的ENCUT平面波截断能通常取POTCAR里ENMAX的1到1.3倍常用400到500 eV。电子状态描述精度全靠它。EDIFF电子步收敛判据默认1E-4可能不够吸附能计算建议1E-5甚至1E-6。别小看这一步吸附能本来就是两个大数的差电子步不收敛直接污染结果。EDIFFG离子步收敛判据用负值表示力的收敛标准比如EDIFFG -0.02表示每个原子受力小于0.02 eV/Å才停止。ISIF优化时设置成2体积优化时设置成3。ISMEAR和SIGMA金属体系建议ISMEAR 1SIGMA 0.05~0.1绝缘体和分子体系用ISMEAR 0或-5其中-5是精确能量计算用的。表面吸附涉及金属多少要上点展宽。IBRION几何优化常用2共轭梯度或1准牛顿。默认1对多数体系稳定但有时会陷入震荡改用2常能解决问题。LREAL投影算符是实空间还是倒空间。做精确能量时建议.FALSE.但会慢做几何优化时可设Auto加速。LORBIT设成11输出投影态密度。吸附体系优化时的INCAR示例System CO on Pt(111) ENCUT 450 EDIFF 1E-5 EDIFFG -0.02 IBRION 2 ISIF 2 NSW 100 ISMEAR 1 SIGMA 0.1 LREAL Auto LORBIT 11 NCORE 83.4 KPOINTS表面布里渊区的采样逻辑K点取样直接决定Brillouin区积分精度。体相优化时可能需要较密网格保证晶格常数收敛而slab计算因为垂直方向有真空层该方向K点只需要1个。这恰恰是新手容易忽略的一步把体相的KPOINTS文件直接复制到slab计算里等于浪费了大量算力在真空方向上。对(2x2)表面的K点常用格点如Gamma-centered 5x5x1或7x7x1。经验做法是增加K点密度看吸附能变化收敛到0.01 eV以内就够。VASPKIT可以自动生成Gamma-center网格比手写方便得多。4. 实例拆解CO在Pt(111)表面的吸附能计算全过程4.1 第一步优化体相Pt得到平衡晶格常数先拿实验或Materials Project的Pt晶体结构做体相优化。这一步是为了获得与你的参数设置ENCUT、K点、赝势匹配的平衡晶格常数。实验晶格常数3.92埃是参考但PBE算出来一般会偏大一点比如3.97埃左右。用这个优化后的晶格常数去切表面才保证slab的侧向晶格常数是自洽的。体相优化的INCAR要把ISIF设为3允许体积变化K点可以设密一些比如11x11x11。优化完成后从CONTCAR读取最终结构。4.2 第二步构建(111)slab并做表面弛豫在优化后的Pt体相结构基础上用ASE或者手动按fcc(111)面切出4层或6层的slab。注意(111)面是fcc结构的密排面ABC堆垛顺序别切错。以(2x2)超胞4层slab为例共16个Pt原子。切好后加上15埃真空层然后在POSCAR里打开Selective dynamics底部两层设为F F F顶部两层设为T T T。做表面弛豫时INCAR设置体积不变也就是ISIF2。跑到受力收敛后查看CONTCAR确认表面层原子没有明显异常位移。4.3 第三步构造吸附初始构型CO在Pt(111)表面有顶位、桥位、fcc空位、hcp空位四种高对称吸附位。这篇文章演示顶位就是把CO分子的C原子放在某个顶部Pt原子上方C—O键轴垂直于表面C朝下O朝上。初始键长可以参考实验或已有计算C—Pt距离大约2.0埃左右C—O键长1.15埃左右。初始距离不用太纠结优化过程会自动调整但别放太近也别放太远太近可能直接排斥出不合理结构太远会浪费优化步数。在ASE里做这件事非常方便from ase.build import fcc111, add_adsorbate from ase.io import write slab fcc111(Pt, size(2, 2, 4), a3.97, vacuum15.0) # 底部两层固定 slab.constraints [FixAtoms(indices[atom.index for atom in slab if atom.tag 2])] # 在顶部一个Pt原子的顶位放CO add_adsorbate(slab, CO, height2.0, positionontop) write(POSCAR_CO_Pt111.vasp, slab, vasp5True, directTrue)然后用VESTA看一眼POSCAR确认CO方向正确、没有和其他原子重叠再提交优化。4.4 第四步吸附体系结构优化吸附体系的优化和表面弛豫类似重要区别是要把整个slab的底部两层继续固定而CO分子和顶部两层Pt原子自由弛豫。优化结束后从OUTCAR或OSZICAR里读取最终总能量。用grep free energy OUTCAR或直接看OSZICAR最后一列建议养成每次计算后记录E0的习惯。这里的E0是外推到零温度下的电子总能吸附能计算用这个值而不是普通的总能量。4.5 第五步吸附能计算与修正吸附能公式Eads E(CO/Pt(111)) - E(Pt(111)) - E(CO)其中E(Pt(111))是干净表面的总能量也就是你表面弛豫那一步的结果E(CO)是孤立CO分子在同样参数下的总能量。注意三个计算必须使用相同的ENCUT和赝势。原文没细说孤立分子怎么算这里强调一下把CO放在一个至少15到20埃的立方盒子里只取Gamma点做结构优化和静态计算。分子之间的周期性镜像相互作用要压到最低盒子不能小于15埃。PBE算出来的CO总能量通常在-14 eV左右具体数值依赖你的截断能和盒子大小。把三个能量代入公式Eads为负表示放热吸附。CO在Pt(111)顶位的典型值大约在-1.5到-2.0 eV区间结合PBE和DFT-D3校正结果略有差异。如果算出来是正值或者只有-0.1 eV这种量级第一反应应该是回去检查参考态和结构而不是急着写文章。计算中通常还要考虑几类修正零点能修正CO分子的振动零点能会影响吸附能严格对比实验时需要加如果只看相对趋势和位点偏好可以暂时忽略。基组重叠误差平面波基组PAW方法对这种误差相对不敏感不需要像Gaussian那样做BSSE修正。vdW色散校正PBE对分子-金属之间的色散作用描述不足很多课题组会加DFT-D3IVDW 11或12尤其对较大吸附分子很必要。加了校正后吸附能数值通常会变负一些也更接近实验值。5. 从吸附能数字到吸附机理差分电荷密度、PDOS与Bader算出吸附能只是第一步论文里通常还要解释“为什么这个位点更稳定”“成键到底是什么样”。三个常用工具差分电荷密度、态密度和Bader电荷。5.1 差分电荷密度直接看电子转移差分电荷密度定义为Δρ ρ(CO/Pt(111)) - ρ(Pt(111)) - ρ(CO)意思是吸附后的电子密度减去吸附前“各自独立”的电子密度剩下的部分就是吸附引起的电子重排。这个量可以直接从三个自洽计算得到的CHGCAR文件求差得到。实际操作时三个CHGCAR必须保证同样的超胞尺寸和原子位置而且吸附体系里CO分子的坐标要和参考计算中孤立CO分子的坐标严格一致干净表面的原子坐标也要和吸附体系表面原子坐标完全一致。后处理可以用VASPKIT的电荷密度差分功能生成CHGCAR_diff再用VESTA打开设置等值面0.003到0.005 e/Bohr³。判读经验等值面在CO和Pt之间出现电荷积累和亏损区域通常说明有成键和电子转移。CO吸附的经典图像是σ给电子和π反馈键——CO的5σ轨道向金属给出电子金属d轨道向CO的2π反馈差分图上会表现为C和Pt之间复杂的花样。别急着下结论多结合PDOS一起看。5.2 PDOS识别成键轨道LORBIT11会让VASP输出每个元素的s、p、d投影态密度。分析时重点关注吸附前后Pt原子d轨道DOS的变化以及CO分子的分子轨道在吸附后如何位移和展宽。一个常用参考量是d带中心d-band center即d轨道态密度相对于费米能的加权平均位置。d带中心越高通常表面越活泼吸附越强。这个规律对过渡金属表面大体成立但不要机械套用有时候d带宽度和形状变化比中心位置更能说明问题。5.3 Bader电荷量化电荷转移Bader分析通过寻找电子密度的拓扑临界点把空间划分成每个原子的区域从而给出原子电荷。VASP可以用Henkelman组的bader程序处理CHGCAR也可以用VASPKIT辅助生成。Bader电荷能给出CO分子整体是得到还是失去电子的判断是一种直观的定量描述。不过要提醒一点Bader电荷的绝对值依赖划分方案不同程序之间可能有0.1e量级差异。它适合看趋势不适合作为唯一机理证据。6. 实战中绕不开的坑收敛困难、偶极修正与色散校正6.1 结构优化不收敛的排查链路做吸附优化最常遇到的现象是能量震荡、力无法降到阈值。按这个顺序排查IBRION被震出问题。如果受力在某个值附近来回跳把IBRION从1改为2或者反过来再做一到两步。初始构型太离谱。CO离表面太近会产生极大排斥力结构会弹飞用VESTA仔细检查原子间距。SIGMA和ISMEAR不合适。金属体系SIGMA太小时电子步难收敛SIGMA太大又会影响力。一般SIGMA0.1是安全值能量计算再换回0.05。磁矩设置问题。体系含未配对电子时默认非磁计算可能把你锁在不好的解上。对Pt这种常磁性金属建议在INCAR里设置ISPIN2并给初始磁矩比如MAGMOM每个原子设0.5到1.0。NSW太短。优化没跑完就停了加长到100或200再试。6.2 偶极修正什么时候必须开slab模型上下表面如果不对称或者吸附分子有较大垂直偶极矩周期性边界下会引入虚假的偶极-偶极相互作用和电势阶跃。VASP提供了偶极修正开关LDIPOL .TRUE.配合IDIPOL 3方向设为3适用于slabIDIPOL 1/2/3分别对应x/y/z方向。我在CO/Pt(111)计算里一般都会开偶极修正因为CO有偶极矩吸附后垂直方向电子分布不均不开会带来零点零几eV量级的误差。虽然数值不大但如果你比较的吸附能差值只有0.1 eV左右这一点误差就可能改变位点稳定性排序。6.3 vdW校正的选择不是可有可无纯PBE对物理吸附体系几乎不可用对化学吸附也有系统偏差。DFT-D3是目前性价比最高的方案VASP中设置IVDW11DFT-D3或IVDW12含阻尼函数Becke-Johnson的DFT-D3(BJ)即可。CO在过渡金属表面的吸附以化学成键为主vdW贡献相对小但对能量数值仍然有几十分之一eV的影响。如果你的吸附分子是烷烃、芳烃这类以色散作用为主的分子完全依赖PBE会得出荒谬结论必须开校正。做位点比较时还有个经验如果不同位点的能量差很小0.05 eV不要指望换一个泛函或开一个校正就能得到有意义的选择性这时候系统的有限尺寸效应和覆盖度效应可能已经大于化学偏好本身。6.4 顺手记三个效率习惯第一所有计算都在同一台机器、同一套编译参数下完成不同编译版本的VASP计算结果在最后一位有效数字上可能略有差异虽小但没必要引入额外误差。第二每次跑完优化立刻把CONTCAR复制成POSCAR保留并同时记录OUTCAR里的E0值建立自己的计算日志。第三批量做多个位点优化时建议先用较低精度小K点、较松的EDIFFG粗跑一轮筛掉明显不稳定的构型再对候选构型用高精度精算。这样能省下大量机时。对比不同位点的吸附能时趋势比绝对值更重要。同一个计算设置下顶位、桥位、空位的吸附能相对排序通常不会因为某个修正项的加入而反转——如果居然反转了说明体系本身处在能量接近的临界状态这时候反而要更仔细地检查每一种影响因素。记得有一次算一个含N杂环分子在Cu表面的吸附第一轮结果完全反直觉排查到最后发现是初始构型里分子环平面倾斜过大优化掉进了亚稳态。把构型旋转30度重新算吸附能立刻合理了。表面吸附计算的很多“反常结果”根子往往不在物理而在建模细节。把每个环节的参数都固定下来、做好记录你手里的结果才会有底气。
返回列表