简介:《VASPKIT中文手册》是一份面向VASP用户的中文实用指南,系统讲解预-后处理工具VASPKIT的配置、菜单功能与典型科研场景,尤其适合材料科学、计算物理、催化研究领域的科研人员和研究生。资源为单个PDF文件,大小约2.37MB,便于下载后离线查阅。手册覆盖VASPKIT常用功能:自动生成并检查INCAR、POTCAR、POSCAR等输入文件;支持PBE与HSE06泛函的能带计算,处理分波态密度与局域态密度;提供气相分子和吸附质分子热力学量校正、差分电荷密度图绘制、能带反折叠、3D能带、费米面计算及VASP2BoltzTraP接口等高级模块。针对催化研究,还重点介绍了NEB路径转换、线性插点生成NEB路径、虚频校正等操作,并附有菜单功能附录,方便快速查找。目前已有3558人学习这份手册,通过阅读可快速上手VASPKIT,降低数据处理门槛,提升VASP计算分析与科研效率。
1. 命令行里的VASP预-后处理工具:一个5M的二进制让我少写了几十个解析脚本
VASPKIT是一套跑在Linux命令行里的VASP预-后处理程序,用FORTRAN写成,压缩下来只有5M左右,几乎不依赖第三方库,解压后就能直接执行。我第一次用它是在算纤锌矿氧化锌的能带,当时手里只有POSCAR和一堆VASP输出文件,不想为提取EIGENVAL再去装一套Pymatgen。结果发现它能自动生成INCAR、KPOINTS、POTCAR,还能做格式检查,能带、态密度、热力学校正、NEB相关工具都内置在菜单里。材料计算和催化研究里的VASP用户,只要你不是专职写代码的,这套工具比ASE加脚本组合的学习成本低得多。这篇笔记按复现顺序,把配置、菜单、参数选择和踩过的坑完整串一遍。
2. 配置与菜单导航:改对配置文件里的四个路径,输入三次数字就能开跑
2.1 环境配置:复制主目录模板,理解关键参数再动手
VASPKIT不需要安装,但第一次运行前最好把环境配置模板复制到用户主目录下,因为代码在启动时会优先读取~/.vaspkit这个隐藏文件。如果缺失,很多功能会按默认值运行,等用到功能102生成POTCAR时才发现在赝势库目录配置上翻了车。
cp -f how_to_set_environment_variable ~/.vaspkit vi ~/.vaspkit配置文件里最核心的参数是下面这几个,建议逐项确认而不是直接照抄别人的环境变量。
VASP5 .TRUE. # 使用VASP 5.x及以上,若用4.x则设为.FALSE. PBE_PATH '~/POTCAR/PBE' # PBE赝势库所在目录 LDA_PATH '~/POTCAR/LDA' # LDA赝势库所在目录 POTCAR_TYPE PBE # 默认生成PBE赝势,可改GGA或LDA RECOMMENDED_POTCAR .TRUE. # 按VASP官方推荐选择每个元素的赝势 MINI_INCAR .FALSE. # 是否输出精简INCAR,新手保持.FALSE.看完整注释 SET_INCAR_WRITE_MODE OVERRIDE # 生成INCAR时的写入模式 SET_FERMI_ENERGY_ZERO .TRUE. # 后处理时把能量零点平移到费米能级VASP5这个开关决定了后续生成KPOINTS和POTCAR时按哪个版本的格式去写,老项目如果是用VASP 4.x跑的,这里必须改。赝势库路径是决定功能102能否自动生成POTCAR的关键,路径写错时提示不会太明显,只会在选择生成时告诉你找不到文件。RECOMMENDED_POTCAR设为.TRUE. 时会从VASP官网推荐清单里挑赝势,普通计算用这个默认值就够了;等你有明确物理理由要换特定赝势时,再走功能104手动指定。SET_INCAR_WRITE_MODE我放在避坑章节里重点说,这里先记住默认是直接覆盖。
环境变量PATH按下面方式追加,把/bin/路径换成你实际存放可执行文件的位置。
echo 'export PATH=/home/vaspkit.0.72/bin/:$PATH' >> ~/.bashrc source ~/.bashrc配置完成后,在任意目录直接输入vaspkit启动程序。注意如果系统提示Permission denied,先执行chmod u+x /path/to/vaspkit把执行权限加上,这是新手最容易忽略的一步。
2.2 主菜单0.72版的分组逻辑与高频编号
VASPKIT 0.72重新整理了菜单,把功能相似的归到同一组。启动后能看到按四类划分的编号,互相之间不对应版本以前那种全部堆在一个列表里的排列清晰很多。
| 菜单分组 | 编号区间 | 我实际用得最多的功能 |
|---|---|---|
| Structural Options | 1-6 | 1输入文件生成、3能带K路径 |
| Electronic Options | 11-28 | 11态密度、21能带、25杂化泛函能带、28能带反折叠 |
| Charge & Potential | 31-51 | 31电荷密度、42静电势 |
| Misc Utilities | 71-92 | 71光学、73BoltzTraP接口、72分子动力学 |
按键逻辑是:先输功能编号,再根据提示往下走,每级菜单都有对应的子选项。比如要生成输入文件,第一步输1,然后子界面里输101到109走不同小功能。这种设计对批量操作很友好,所有交互都发生在命令行里,不需要鼠标点击,而且单步操作完了会立即在终端输出结果路径,方便你知道刚生成了什么。
初学阶段没必要把全部菜单编号背下来,只需要记住结构组的1和3、电子组的11和21和25,以及催化相关的功能5。功能5在0.72版本里集合了NEB路径生成、PDB格式转换、虚频校正这些催化向工具,后面第5章会细说。
2.3 功能1连成一条线:INCAR、KPOINTS、POTCAR的生成顺序
VASP能正常计算至少需要INCAR、POSCAR、POTCAR、KPOINTS四个文件。INCAR控制算什么和怎么算,POSCAR提供晶格与原子位置,POTCAR是赝势文件,KPOINTS定义布里渊区采样。VASPKIT把这三个文件的生成整合进功能1里,顺序是固定的:先有POSCAR,再生成INCAR,然后是KPOINTS和POTCAR。
以纤锌矿氧化锌为例,六方晶系空间群P63mc,从晶体结构数据库导出结构文件后,直接作为POSCAR使用。
cp -f ZnO-1811117.vasp POSCAR vaspkit程序启动后依次输入:
# 进入主菜单后按顺序输入 1 # 选择VASP Input Files Generator 101 # 定制INCAR文件 LR # Lattice Relaxation 晶格弛豫任务模板输入LR后,vaspkit会把默认的晶格弛豫INCAR写进当前目录。这类模板有些参数需要手动确认,比如DFT+U的U值,NEB的IMAGES数目,模板给的是通用设置。LR模板里默认PREC = High,程序会按POTCAR中所有元素ENMAX的最大值乘以1.3来设置ENCUT,这对需要优化晶胞常数的计算是合理的。但要注意,VASP最新官方手册已经不推荐用PREC=High这种方式了,更建议PREC=Accurate并手动写明ENCUT。我现在的习惯是:LR模板生成后,打开INCAR确认一下ENCUT值,改成自己测试过的数值,保证不同结构之间ENCUT一致。
接着生成KPOINTS和POTCAR:
vaspkit 1 102 # 生成KPOINTS,自动生成POTCAR 2 # 选Gamma-centered网格 0.04 # K点密度,单位是2*PI/AngstromK点密度是后处理结果是否可靠的关键。0.04是手册里所谓的Medium精度,对半导体和绝缘体一般够用;做高精度计算或和实验对比带隙时,我习惯调到0.03,再往下到0.02会明显增加K点数量,算大体系前要斟酌机时。VASPKIT生成K点时会先读POSCAR的倒空间晶格矢量比例,按比例分配到各个方向,再结合你输入的分辨率决定具体K点数,这种做法比手工用实空间晶格常数估算K点数要严谨,尤其对非正交晶系,实空间a、b、c长度比无法直接对应K点数密度。
执行完102后终端提示Written POTCAR File with the Recommended Potential,说明它是按VASP官网推荐的赝势从赝势库里组合出来的。用下面的命令核对POTCAR元素序列:
grep TIT POTCAR这一步能把POTCAR里每一种元素的赝势名称全部列出来,和POSCAR中原子类型顺序逐一对比。0.71版本以后VASPKIT还加了功能109,专门检查INCAR和POSCAR格式、以及POTCAR元素与POSCAR是否匹配。做法很直接:
vaspkit 1 109 # 检查所有VASP输入文件它会把制表符分割、Windows换行符这类问题自动纠正,并提示任何元素不一致的情况。功能108则是把前面所有步骤串起来,先写INCAR,再设K点密度,生成KPOINTS和POTCAR,最后自动调用109检查。我后面做新体系时很少一步步手动输,都是直接走108,一次到位。
3. 能带、态密度与热力学校正:从菜单编号到底层逻辑一次走通
3.1 能带计算选PBE还是HSE06:先明白K路径从哪来
能带计算的KPOINTS跟自洽计算不一样,需要沿第一布里渊区内的高对称点路径生成。传统做法是去SeeK-Path网站查询高对称点,再手动写KPOINTS,或者借助Materials Studio生成。新版VASPKIT把高对称点分析内置了,算法与SeeK-Path一致,不用再打开网页手动复制。
运行功能3:
vaspkit 3 3 # 选择3D bulk structure程序会分析对称性并给出推荐路径,比如氧化锌会输出GAMMA-X-U|K-GAMMA-L-W-X这样的带路径,同时生成单胞结构PRIMCELL.vasp和能带计算用的KPATH.in。这里有个关键点:能带路径只对primitive cell有意义,所以要用生成的单胞替换当前POSCAR。
cp -f PRIMCELL.vasp POSCARKPATH.in的第二行数字表示每小段路径上插值的K点数量。如果机时紧张或者结构很大,可以把默认数值改小,路径拐点不变,只是能带曲线会更粗糙。官方工具对三斜晶系的支持目前是缺失的,至少在0.72版本里功能3对这类体系处理会出问题,拿到三斜体系建议先用其它程序验证K路径。
PBE泛函能带流程是:先用功能102生成高密度K点的自洽KPOINTS,做静态计算得到电荷密度;然后把KPOINTS换成KPATH.in,INCAR里设ICHARG = 11之类的续算设置,提交非自洽能带计算。计算结束后提取数据用功能21。
vaspkit 21这个功能会读取EIGENVAL等文件,把能带数据整理成BAND.dat和BAND_BAND.dat,方便画图。如果只需要某一组原子或某一元素在能带中的贡献,走任务253或254做投影能带。杂化泛函HSE06也是类似流程,但K点路径要特殊处理:0.72版本新增了任务25,支持在杂化泛函级别做均匀K点采样,这条路径适合HSE能带计算使用。
HSE06的计算成本明显比PBE高,通常做法是先在小K点密度下测试一条路径能不能跑通,再正式提交。能带计算完成后如果发现带隙数值和预期差异很大,先排查是不是KPOINTS路径没覆盖正确的高对称点,其次是查INCAR里是否设置了正确的NEDOS和费米能级参考。
3.2 PDOS里有玄学:从DOSCAR到可绘图文件的112到115
态密度和投影态密度的处理入口是功能11。静态计算得到的DOSCAR直接进入菜单选择即可,不需要额外准备格式转换。
几个子任务的区别值得记清楚:112是对一个或多个原子做投影态密度,输入原子序号就能单独输出这些原子的PDOS;113按元素类型提取,一次把体系里每一类元素的分波态密度都写出来;114对选定原子求和;115更进一步,支持按原子和轨道同时筛选。这四条组合起来,几乎覆盖了从总态密度到某个元素某个轨道贡献的全部拆分需求。做催化分析时,我最常用的是114和115的组合,比如只看金属表面第一层原子的d带中心,先用114选中第一层原子,再在输出数据里提取d轨道的PDOS。
还有几个容易被忽略的细节。SET_FERMI_ENERGY_ZERO如果设为.TRUE.,后处理输出数据会把费米能级作为能量零点,画金属体系能带和态密度时很有用;如果设为.FALSE.,输出的是绝对能量标度,两个不同计算对比时容易对不上。另外,0.7x早期版本在提取f轨道投影态密度时有过bug,如果你用的是更老的二进制文件且体系含稀土元素,建议换成0.72版本再处理数据,否则f轨道的PDOS可能会错位。
态密度计算本身的质量也很关键。静态自洽的K点密度不足,或NEDOS设得太小,PDOS曲线会明显不光滑,这时候再好的后处理工具也救不回来。我一般要求静态计算的K点密度不低于能带计算的水平,NEDOS默认取2000以上,然后再做PDOS提取。
3.3 热力学量校正:把零点能、焓和自由能的参数对准
催化计算里自由能图很常见,VASP频率计算得到的OUTCAR和POSCAR就能用来修正自由能。但热力学修正有两个场景要区分开。
气相分子和吸附质分子在计算自由能时,自由度贡献差别很大。气相分子在空间里有平动和转动,吸附态分子这些自由度被表面束缚,只剩振动模式有贡献。VASPKIT在处理时会给出一组热力学量,基本对应关系如下:
| 输出量 | 含义 | 来源 |
|---|---|---|
| ZPE | 零点振动能 | 频率计算得到的振动频率 |
| U(T) | 温度对内能修正 | 振动、平动、转动贡献之和 |
| H(T) | 温度对焓修正 | U(T) + kBT |
| G(T) | 自由能修正 | H(T) - T*S |
计算自由能变化时,常见做法是先在表面上做频率计算,然后从VASPKIT输出文件里提取吸附质的ZPE和热修正项,再代入反应公式。气相分子单独在同样泛函下算频率。这个环节我踩过坑:最初直接把整个体系的频率全部用上,包括衬底原子的振动贡献,导致ZPE被放大很多,自由能图几个步骤的能垒数值明显不对。后面改成只提取吸附分子自身的振动模式,结果才合理。
做频率计算时还要保证INCAR相关参数正确,比如IBRION = 5、NFREE = 2,如果频率计算本身没收敛,后面的热力学修正自然失效。另外,VASPKIT不同版本对温度参数的处理可能略有差异,使用前先看输出文件头部注释,确认它默认读取的是哪个能量参考点。
4. 避坑与常见问题:四个最容易让我翻车的输入文件细节
4.1 现象:从晶体数据库下载的POSCAR,VASP报错元素类型对不上
之前从某晶体结构数据库下载ZnO的POSCAR,提交到VASP后日志显示ERROR: the type information is not consistent with the number of types,进程立刻退出。逐行查看POSCAR时发现O元素被读出来了,Zn却没有识别到。
原因在于,数据库导出的结构文件里空格分隔符是制表符\t,VASP对以制表符分隔的字符串读取不稳定,导致元素类型解析不完全。另一个常见因素是文件在Windows系统下生成,换行符和不可见字符都会让VASP解析出错。
解决方法是依赖VASPKIT的功能109做自动纠正,它会把POSCAR的格式规整成VASP能识别的标准形式,同时检查INCAR里是否有同类问题。执行109后再重新提交,绝大多数情况下能直接跑通。这也是为什么功能109被集成进功能108连续流程里,就是要避免这种低级错误浪费机时。
4.2 现象:启动vaspkit时报GLIBC_2.14 not found
在旧版本Linux系统上部署时,运行./vaspkit直接弹出/lib64/libc.so.6: version GLIBC_2.14 not found (required by vaspkit)。
原因是VASPKIT二进制编译时使用的glibc版本比本机系统的低版本更要求更高,旧式发行版通常只带GLIBC_2.5或更高一点,缺少新版符号表,运行自然失败。
解决路径有两类:优先尝试升级系统的glibc组件,但这会影响系统其他依赖,风险较大;更稳妥的做法是联系维护团队获取在低版本Linux环境下重新编译的版本。如果只是临时测试,也可以考虑在当前机器上单独准备一套新版glibc目录,用显式路径方式启动,但这就属于非标准操作了。先检查系统发行版版本,再决定用哪种方案,不要贸然升级。
4.3 现象:POTCAR元素顺序和POSCAR不一致,VASP却不报错
手动组合POTCAR时,POSCAR里是Zn和O,POTCAR里顺序被组合成O和Zn,计算任务照样能提交,但结果全部没有物理意义。这种现象最坑的地方在于VASP根本不检查元素类型是否匹配,你算石墨烯用氢的赝势它也不报错。
原因是VASP按POTCAR文件里的元素顺序读取原子信息,POSCAR只是提供晶格和坐标。如果顺序不一致,程序会把电荷密度、势能映射到错误的元素上,输出能带和态密度后你不会第一时间发现异常。
解决方法是每条POTCAR生成后都执行grep TIT POTCAR核对顺序,确认与POSCAR逐行对应。还有一个点跟赝势选择有关:做Bader电荷分析时,默认的无后缀赝势往往不包含半芯态,价电子数不足,应该改用带_pv或_sv后缀的赝势。另外,对复合物里有短键的气相二聚体,例如O2、CO、N2、F2这类,VASP官网建议用带_h后缀的赝势,常用做法是两种赝势各测一次对所关心性质的影响差异,差异小再选计算量低的默认赝势。
4.4 现象:再次生成INCAR时,原来调试好的参数全被覆盖
做同一种材料的不同计算任务,切到功能101重新生成INCAR后,之前手动调好的ISPIN、MAGMOM、LMAXMIX全部没了,只剩下模板默认值。
原因是SET_INCAR_WRITE_MODE默认是OVERRIDE,强制覆盖旧INCAR文件,这是配置文件的默认行为,不是程序漏洞。
解决方法是把配置文件里这个参数改成BACK-UP-OLD,下次生成新INCAR之前会先把旧文件备份为INCAR.bak。如果希望新旧参数合并,可以设成APPEND,把新模板内容追加到原INCAR里面。我在做复杂任务时习惯用BACK-UP-OLD,保留一份手动改过的副本,避免改完一组参数发现没保存时那种没有后悔药的窘境。
5. 算完别急着画图:把先检查后处理养成固定习惯
最后一个环节想分享一个具体习惯,它让我少走了很多弯路:任何新体系拿到手,先跑一遍连续检查流程,再进入具体功能。这里的连续流程就是指功能108,从INCAR模板到K点密度再到POTCAR,最后自动调用109验证文件完整。做能带、态密度或NEB之前,我都强制自己把输入文件过一遍这个工序,而不是直接提交任务然后去等结果。
催化计算里NEB迈步工序最容易出问题的地方,是初末态结构之间路径上的中间镜像分布不均。VASPKIT提供了任务505做线性插值,能直接按初末态在几何上等距生成中间构型。线性插值只保证坐标在几何空间的等分,物理上轨道变化剧烈的区间可能还需要重新优化。随后用任务506把NEB路径转换成PDB文件,导入可视化工具逐帧看镜像结构是否合理,这是我在多步反应里最依赖的验证步骤,能避免在结构异常的情况下盲目跑几千步过渡态搜索。做过渡态确认时,如果频率计算出现虚频,走任务507进行虚频校正,它会根据频率输出文件对结构做位移并重新准备计算输入,大幅减少手动原子位移的繁琐。
能带反折叠则是另一个适合作为验证项的技能。做掺杂、缺陷这类超胞体系时,直接用超胞能带图看带边比较模糊,任务28能把超胞能带展开回原胞布里渊区,输入EIGENVAL和PROCAR等文件就能得到展开后的能带图。适用级别包括DFT、杂化泛函和Meta-GGA,GW级别当前不支持。做反折叠前必须确认原胞和超胞的对应关系定义正确,否则输出里会出现大量权重接近零的假能带,干扰判断。
从那以后,我每次开始一个新项目都强制走一遍108加109的检查路径,后处理数据输出后再做一次元素顺序和能量零点核对,确认没有细节问题才画图、才下结论。这套习惯帮我省下了大量无谓的debug时间,也让VASPKIT承担的不只是工具角色,更像是一个卡在VASP前面和后面的质量控制点。希望帮到你。
本文还有配套的精品资源,点击获取