简介《VASPKIT中文手册1》是一份面向材料计算、催化研究与计算物理用户的VASP预处理与后处理工具使用手册适合刚接触VASPKIT、希望系统掌握命令行操作与常用分析流程的科研人员。压缩包内共1个PDF文件约2.37MB内容围绕VASPKIT的配置方法、菜单功能与典型应用展开并配有示例说明便于按需查阅。手册覆盖输入文件生成与检查、PBE/HSE06能带计算、分波与局域态密度、热力学量校正、差分电荷密度、NEB路径与虚频校正、能带反折叠、3D能带、费米面及VASP2BoltzTraP接口等模块也提及用户自定义界面等测试功能。已有3568人学习可作为快速熟悉VASPKIT功能边界、建立计算后处理思路的参考文档。1. VASPKIT 是什么一个 5 MB 的插件式小工具替你把 VASP 的四个输入文件和一堆后处理脚本接起来只用过图形界面材料建模软件的人第一次打开 VASP 的算例目录往往会愣住四个纯文本文件算完还有几十兆的 OUTCAR 和 CHGCAR 等着啃。VASPKIT 就是补这块短板的插件式工具一个用 Fortran 编译的二进制体积五兆出头丢进 PATH 就能跑把 K 点撒点、赝势拼接、INCAR 模板、能带路径、态密度投影、热力学校正全收进一个数字菜单想试 3D 能带这种偏测试性质的玩法它也在主菜单里留了入口不用自己写脚本拼数据。这份中文手册对应的是 0.72 版本从环境变量配置一路讲到能带反折叠、NEB 插点和虚频校正。适合做第一性原理计算的材料、催化方向从业者尤其是被格式错误和赝势顺序折腾过的人。2. 环境配置与第一个算例从 .vaspkit 到四个输入文件落地VASPKIT 的运行逻辑很朴素读当前目录下的 POSCAR按菜单选择生成或修改文件全程不碰你的 VASP 可执行程序。所以配置的核心只有两件事——让系统找得到这个二进制让它找得到你的赝势库。这两件事没做对后面每一步都会以奇怪的方式失败。2.1 把二进制放进 PATH把.vaspkit里的路径指对解压后先确认可执行权限。从压缩包或 U 盘拷过来的文件经常丢掉执行位报Permission denied这不是库的问题一条命令就能修# 假设解压在 /home/vaspkit.0.72先给执行权限 chmod ux /home/vaspkit.0.72/bin/vaspkit # 把 bin 目录写进 PATH注意用绝对路径替换成你自己的 echo export PATH/home/vaspkit.0.72/bin/:$PATH ~/.bashrc source ~/.bashrc # 复制环境变量模板到用户目录之后所有配置都改这个文件 cp -f /home/vaspkit.0.72/how_to_set_environment_variable ~/.vaspkit第一段只是解决能不能执行第二段解决在哪都能执行第三段才是重点~/.vaspkit是全局配置里面每一项都直接影响生成出来的文件质量。常见的做法是逐项过一遍再动手算别指望默认值能适配所有体系。配置项典型取值作用与踩坑点VASP5.TRUE.用 VASP 5.x 及以上就保持真用 4.x 的 POSCAR 格式要改假PBE_PATH~/POTCAR/PBE赝势库根目录指错会导致 103/104 任务找不到对应元素POTCAR_TYPEPBE决定取 GGA、PBE 还是 LDA 的赝势和你的泛函保持一致RECOMMENDED_POTCAR.TRUE.打开后按官方推荐挑后缀省去手动选_pv、_h的纠结MINI_INCAR.FALSE.打开只写精简 INCAR调试时方便正式算之前记得关SET_FERMI_ENERGY_ZERO.TRUE.后处理把费米能平移为零点画能带时省一步手工对齐SET_INCAR_WRITE_MODEOVERRIDE可改APPEND、BACK-UP-OLD、BACK-UP-NEW防止手调参数被覆盖SET_INCAR_WRITE_MODE这一项我建议新手直接改成BACK-UP-OLD。默认的OVERRIDE会无条件覆盖已有 INCAR你花半小时调好的 U 值、磁矩、IMAGES数目下一次跑 101 就没了影这种损失很难事后察觉。还有一种启动失败跟配置无关终端报GLIBC_2.14 not found之类的库版本错误说明当前系统的 C 运行库比编译环境老。升级系统库风险大稳妥做法是换一台机器或者找一份针对低版本环境编译的二进制别硬扛。2.2 用 101、102、103 生成 INCAR、KPOINTS、POTCAR0.71 之后K 点、赝势、INCAR 的生成被合进了功能 1VASP Input Files Generator。整个流程是进主菜单 → 输 1 → 输三位子任务号的三级结构熟悉之后可以盲敲。先备好 POSCAR。简单体系手搭就行复杂结构从数据库下 CIF 或 POSCAR注意分数占据和元素顺序。下面这段是教科书式的第一次操作# 进入工作目录把结构文件统一命名为 POSCAR cd ~/work/ZnO_bulk cp ZnO-xxxx.vasp POSCAR # 启动交互菜单 vaspkit # 主菜单输入 1 - VASP Input Files Generator # 子菜单输入 101 - Customize INCAR File # 再输入 LR得到晶格弛豫模板101 弹出来的模板列表按任务类型分组ST静态、SR标准弛豫、LR晶格弛豫、PUDFTU、H6HSE06、NENEB、FQ频率计算等等。选LR生成的 INCAR 默认带PREC High并注释掉ENCUT让 VASP 自己取max(ENMAX)*1.3。这个组合在优化晶胞常数时够用但要注意较新的官方手册更推荐PREC Accurate加手动固定ENCUT目的是让同一体系在不同批次的算例里截断能完全一致否则能量差里会混进基组误差。接着生成 K 点和赝势# 同目录再次运行 vaspkit # 1 - 102 Generate KPOINTS File for SCF Calculation # 选择 2 Gamma Scheme # 提示输入倒空间分辨率时填 0.04这一步的输入值不是K 点个数而是倒空间步长单位是 2π/Å。程序先算出倒格矢长度再按你给的步长换算成各方向点数。0.04 属于中等偏精官方给的参考区间是低精度 0.06~0.04、中精度 0.04~0.03、高精度 0.02~0.01。这个设计比三个方向各取 N 个点合理得多因为非正交晶系的倒格矢长度和晶格常数不成反比等间距撒点才能保证各方向 K 点密度一致。102 在写 KPOINTS 的同时会顺手生成 POTCAR前提是~/.vaspkit里PBE_PATH指对了。看到Written POTCAR File with the Recommended Potential!说明走的是推荐后缀路线想手动指定改用 104逐个元素输入你想要的赝势类型比如Zn_pv目录里没有对应文件时程序会要求重新输入。生成完必须做一次自检两条命令足够# 确认赝势顺序和元素类型对得上 grep TIT POTCAR # 确认 ENCUT 大于所有元素的 ENMAX grep ENMAX POTCAR第一条输出两行元素名顺序必须和 POSCAR 第五行完全一致第二条给出每个元素的推荐截断能INCAR 里的ENCUT只要不低于最大值就安全。这两步花十秒能挡掉后面一大类算完了但结果是错的。2.3 109 与 108把格式检查变成固定动作从网页或数据库下载的 POSCAR分隔符经常是制表符而不是空格Windows 下编辑过的文件还可能混入奇怪的回车。VASP 对这类问题极其沉默它可能只读出第一个元素剩下的当不存在然后在 POTCAR 数量不匹配时报一句语焉不详的错。更麻烦的是元素类型和 POTCAR 不一致时它根本不报错——你用氢的赝势算石墨烯也能跑完结果当然全错。功能 109Check All VASP Files就是为这个场景加的自动纠正 INCAR 和 POSCAR 的格式并交叉检查元素类型是否一致。功能 108 更进一步把设 INCAR → 设 K 点密度 → 生成 KPOINTS 和 POTCAR → 调用 109 检查串成一条流水线一次交互走完全部准备动作。我的习惯是任何新算例目录第一次提交前都强制走一遍 108宁可多按几次回车。2.4 一个完整的弛豫算例串起来把上面的动作按顺序落成一个可复制的流程mkdir -p ~/work/ZnO_relax cd ~/work/ZnO_relax cp /path/to/ZnO-xxxx.vasp POSCAR vaspkit # 1 - 101 - LR 生成 INCAR vaspkit # 1 - 102 - 2 - 0.04 生成 KPOINTS 和 POTCAR vaspkit # 1 - 109 格式纠正与元素检查跑完看三个地方INCAR 里IBRION、ISIF、NSW是否符合弛豫预期KPOINTS 里三个方向的点数是否和你的晶胞长宽比大致匹配POTCAR 的元素顺序。都过了再投任务。ZnO 这种六方体系Gamma 方案加 0.04 步长通常给出 9×9×5 左右的网格对 20 Å 以上的 c 轴来说是合理的。3. 能带与态密度PBE、HSE06 两条路径以及 3D 能带值不值得算能带计算是 VASPKIT 用得最密集的一块也是最容易在流程上出错的一块。核心区别在于 KPOINTS自洽计算要覆盖整个布里渊区的均匀网格能带计算只要沿高对称路径的一条线。两步混用是新手最常见的翻车点。3.1 高对称点路径KPATH.in 与 PRIMCELL.vasp 的关系功能 3K-Path Generator内置了与外部高对称点工具一致的算法能直接分析晶体对称性给出建议路径。操作是主菜单输 3再输 3 选3D bulk structure程序读取 POSCAR 后输出两样东西KPATH.in和PRIMCELL.vasp。这里有个必须记住的前提路径是在原胞上定义的。如果你的 POSCAR 是惯用胞直接拿它算能带路径和结构对不上能带图会呈现出莫名其妙的折叠。正确做法是用生成的原胞替换结构文件# 备份惯用胞用原胞作为后续计算的结构 cp POSCAR POSCAR.conventional cp PRIMCELL.vasp POSCAR # 查看建议路径和每段插值点数 head -5 KPATH.inKPATH.in第二行的数字是每段路径上的插值点数默认值偏密。算不动的时候把这个数调小是最直接的减负手段代价是能带曲线变粗糙。程序同时会打印两条候选路径比如GAMMA-X-U|K-GAMMA-L-W-X这种选哪条取决于你想强调哪个方向的特征。三斜晶系目前不在支持范围内遇到就退回外部工具生成 KPOINTS。还有一点值得留意这个功能在菜单里标了 Experimental。意思是算法本身没问题但对称性识别在畸变结构、超胞、表面体系上可能给出你不想要的路径。稳妥的做法是跑完之后用外部工具核对一遍高对称点坐标尤其是做二维材料或者有真空层的模型时。3.2 PBE 与 HSE06先收敛再上杂化标准 PBE 能带的流程是两步。第一步用 102 生成的均匀网格 KPOINTS 做自洽得到收敛的电荷密度第二步把 KPOINTS 换成KPATH.in的内容做非自洽读入上一步的 CHGCAR。PBE 会低估带隙这是泛函本身的问题不是流程错。杂化泛函要贵得多用例子里磷化镓那种体系HSE06 的计算量是 PBE 的十几倍。0.72 在功能 25Hybrid-DFT Band-Structure上加了沿不同 k 路径做均匀采样的支持这个改进对杂化能带很关键传统做法是先算一条路径上的 PBE 波函数再插值路径形状一变就得重来有了均匀采样同一次 HSE06 计算能覆盖多条路径。实操上的顺序建议是先用 PBE 把结构弛豫干净、把路径确认好再切 HSE06。HSE06 的 INCAR 可以从 101 的H6模板起步但ISTART、ICHARG要按读 PBE 的 WAVECAR/CHGCAR来设。没收敛的 PBE 电荷密度直接喂给 HSE06最典型的症状是能带在迭代中反复漂移、最终带隙比预期还小白烧机时。3.3 DOS 与 PDOS112 到 115 的分工态密度这一组任务号排得很整齐区别只在投影到谁身上vaspkit # 11 - 111 总态密度 DOS vaspkit # 11 - 112 指定原子的投影态密度 vaspkit # 11 - 113 按元素一次性输出 PDOS vaspkit # 11 - 114 对选定原子求和 vaspkit # 11 - 115 对选定原子和选定轨道求和112 会交互式问你原子序号适合分析单个吸附位点或某个过渡金属中心113 按元素出结果做系列对比时省事114 和 115 是后加的组合能力比如催化里常要看的某几个表面原子的 d 轨道总贡献用 115 一次就能拿到不用自己拿文本相加再画图。0.72 修掉了一个 f 轨道投影的 bug也修了自旋极化下带隙求值的错误。如果你的体系含稀土或锕系元素或者开了ISPIN 2用旧版本得到的 PDOS 和带隙值得怀疑换到 0.72 之后重跑一遍再下结论。投影能带对应的是 212、253 这一组按原子、按元素、按求和的三个层次和 DOS 那边一一对应用法可以照搬。3.4 3D 能带、费米面与 BoltzTraP 接口算之前先想清楚要什么功能 23 出三维能带功能 26 算费米面功能 73 把结果整理成 BoltzTraP 能读的格式。这三个都属于数据量大、出图好看、但容易算了一堆用不上的类型。3D 能带本质上是在布里渊区里撒一个三维 K 点网格做非自洽输出 E(kx,ky,kz) 的体数据。它适合看能带在某个平面上的拓扑、找节点线或者判断各向异性不适合替代常规路径能带因为沿高对称线的细节在体数据里反而看不清。费米面同理金属体系才有意义半导体算出来是一片空。BoltzTraP 接口要求你先有足够密的 K 点网格和收敛的输运相关设置直接拿弛豫阶段的粗网格去喂得到的电导率曲线基本没有参考价值。这三个功能我更愿意归类为验证性工具主结论用路径能带和 DOS 定3D 能带和费米面用来交叉确认各向异性或者拓扑特征别把它们当成常规产出。4. 催化与热力学NEB 插点、虚频校正和自由能校正怎么落地材料计算里真正耗人力的不是算是把一堆能量换算成能跟实验对得上的物理量。这一块 VASPKIT 提供了不少小工具单个都不复杂组合起来能省掉大量手写脚本。4.1 热力学量校正气相分子与吸附质分开处理自由能校正的核心是把频率计算得到的振动信息转成零点振动能再加上温度对焓和熵的贡献。气相分子和吸附质分子的处理路径不同气相分子在气相里做频率计算全部振动模都是实频吸附质固定在表面低频模往往对应受限平动和转动有些会变成虚频处理方式要区分。流程上先做频率计算101 模板里的FQ或者有限位移、密度泛函微扰两条路线拿到频率后调对应校正功能把ZPE、TS、U、H、G的修正量算出来加回电子能。几个必须留意的参数温度默认值要和你论文里的实验条件一致压强和对称数会显著影响气相分子的熵项尤其线性分子频率计算用的ENCUT和EDIFF要比常规弛豫更严否则低频模的数值噪声会被放大成几十毫电子伏的误差直接盖过你想比较的能量差。一个血泪经验是整套体系的能量对比必须用同一套校正参数。A 体系用了 298.15 K、B 体系忘了改回来用了 300 K差出来的那点熵项足以让两个几乎简并的路径排出错误顺序。4.2 差分电荷密度与静电势先对齐网格再相减差分电荷密度是理解成键和电荷转移最直观的手段做法是把复合体系的电荷密度减去各组分单独算的电荷密度。三个 CHGCAR 必须在同一网格上也就是NGXF/NGYF/NGZF一致否则相减出来的东西全是插值噪声。流程一般是算 AB 复合体系拿 CHGCAR_total固定同一结构分别算 A 和 B把另一半原子删掉保留晶胞参数不做新的弛豫拿 CHGCAR_A 和 CHGCAR_B然后调功能 31 系列做相减输出到可视化软件能读的格式。0.72 给 316 和 426 加了把 CHGCAR 和 LOCPOT 转成 XcrySDen 格式的能力这一步比以前省事不用再借第三方脚本转格式。静电势那边要注意的是真空层。二维材料做平面平均静电势真空厚度不够会让两侧势能面耦合曲线看着平滑但台阶高度对不上。常规做法是真空层至少 15 Å必要时加到 20 Å 再确认曲线中间段完全平直。4.3 NEB 路径线性插点 505、PDB 可视化与虚频校正 507NEB 是最容易在准备阶段就翻车的计算。两端结构原子顺序必须一致中间插值要合理IMAGES数目要和 INCAR 里的设置对上。505 提供线性插值从初态和末态直接生成中间图像省掉手动线性组合坐标的活。生成的路径可以转成 PDB 用可视化软件动画播放看原子是不是按预期路径迁移——那些插值后原子穿进别的原子里的情况肉眼一看就知道硬算只会得到一堆虚频。功能 405 处理的是 XDATCAR 到 PDB 的转换用于分子动力学轨迹回放和 NEB 的路径可视化是两条链路别弄混。507 做虚频校正对应的是过渡态搜索里常见的那种局面频率分析出来一个几十波数的小虚频能量和路径都对就这个模不干净。校正工具把该模对应的方向修正掉避免为一个数值噪声重算整个过渡态。但要注意大幅虚频几百波数以上说明结构本身不处在鞍点工具修不了老老实实重新优化。4.4 用户自定义界面74 号任务能做什么0.72 开放了 74 号任务给高级用户允许按自己的需求组合原子电荷着色、结构图绘制这类功能。手册里给的例子是二维材料投影能带的计算前提是不考虑自旋极化和自旋轨道耦合也就是非磁性、无重元素的体系。这个限制来自实现方式不是随便写的投影需要把波函数按原子轨道展开一旦开了自旋极化两个自旋通道要分别处理接口就复杂了。对大多数用户来说74 的价值不在直接拿来用而在于看它的输入输出约定然后照着自己领域的后处理需求写小模块。手册里配了how_to_set_environment_variable说明照着改环境变量就能把自定义路径挂进去。5. 避坑与排查五个让结果悄悄出错的细节下面这几条全部来自实际算例里反复出现的故障共同特征是程序不报错结果不可信。5.1 POSCAR 里的制表符VASP 只读出了第一个元素现象任务提交后立刻退出OUTCAR 里只有一种元素的赝势信息POTCAR 数量和 POSCAR 对不上。原因从数据库或网页下载的结构文件用制表符分隔字段Windows 下编辑过的还带 CRLF 换行VASP 的文本解析按空格切分遇到制表符整行识别失败。解决跑一次功能 109 做格式纠正或者手动sed -i s/\t/ /g POSCAR再检查。养成习惯任何外部来源的结构文件进目录第一件事就是过一遍 109。5.2 赝势后缀选错Bader 分析和强关联体系的隐性偏差现象Bader 电荷分析结果物理上说不通或者 DFTU 算出来的占据数和预期差很远。原因用了不带后缀的赝势次外层电子被冻在核里电荷划分时这部分贡献完全缺失。Bader 分析对_pv、_sv这类把 semi-core 当价电子处理的赝势更友好。另外双原子分子体系O₂、CO、N₂ 这类官方建议用_h后缀的硬赝势短键长下的描述更准。解决用 104 手动指定元素赝势类型不确定时两种赝势各算一遍对比关键结论影响不大就选截断能低的那个省机时。5.3 INCAR 被覆盖手调参数下一次生成就没了现象明明设好了LDAU的 U 值和IMAGES数目重新跑一次 101 之后全变成默认模板。原因~/.vaspkit里SET_INCAR_WRITE_MODE是OVERRIDE每次生成都无条件覆盖。解决改成BACK-UP-OLD或BACK-UP-NEW前者备份原文件再写后者写到.new里让你自己比对合并。改动前先确认当前目录没有正在跑的算例依赖旧 INCAR。5.4 能带路径和结构不匹配图很好看但折叠得不对现象能带图上的带隙位置和高对称点的标注对不上或者跟文献里同一材料的图形状差很远。原因用惯用胞的结构算了原胞定义的路径或者忘了把PRIMCELL.vasp替换成 POSCAR。解决确认计算目录的 POSCAR 是原胞KPATH.in里标注的高对称点和你的晶格类型一致必要时用外部工具交叉验证一遍路径。5.5 计算量失控K 点密度和插值点数叠乘现象杂化泛函能带算了两周还没收敛或者 3D 能带的输出文件几十 GB。原因KPATH.in第二行插值点数用了默认的密值同时 HSE06 本身又是 PBE 的十几倍开销3D 能带在三个方向都撒了细网格。解决能带插值点数按能看清曲线拐点的标准下调先跑粗路径看整体形状确定要放大哪一段再补算。3D 能带把网格降到能看出拓扑的最低密度。机时是有限资源不是所有图都需要出版级分辨率。6. 进阶拿 EXAMPLES 目录当回归基准把生成动作脚本化手册配套的examples目录是最容易被忽略的资产。里面的每个子目录都是一个可运行的算例结构文件、参考输入、预期输出齐备。我现在的做法是先在这些算例目录里跑一遍确认自己的环境配置、赝势库路径、二进制版本都是对的再去碰自己的体系——这比拿真实算例试错便宜得多因为出问题时你至少知道结构文件和参考输出是可信的。更进一步可以把生成动作写成非交互的包装脚本。VASPKIT 虽然主界面是菜单式的但子任务可以通过标准输入管道喂进去一串echo就能把 INCAR、KPOINTS、POTCAR 一次生成完#!/bin/bash # gen_inputs.sh对当前目录的 POSCAR 批量生成输入文件 # 前提POSCAR 已经是原胞且 ~/.vaspkit 配置正确 set -e # 101 选 LR 生成弛豫模板102 选 Gamma 方案步长 0.04 printf 1\n101\nLR\n | vaspkit /dev/null printf 1\n102\n2\n0.04\n | vaspkit /dev/null # 108 走完整检查任何格式或元素不一致都会在这里拦下 printf 1\n108\n | vaspkit check.log # 关键字段自检缺一个就退出 grep -q ENCUT INCAR || echo WARN: ENCUT 未显式设置确认 PREC 设置是否符合预期 grep TIT POTCAR echo 生成完毕检查 check.log 后再提交这段脚本的每个printf对应菜单层级1进输入文件生成101选 INCAR 模板LR指定晶格弛豫第二个命令的2是 Gamma 方案0.04是倒空间步长。set -e保证中途任何一步失败就停避免在半成品目录上继续叠加错误操作。跑完必须看check.log和grep TIT POTCAR的输出脚本化省的是手速不是判断。配合两个验证动作基本可以保证每次生成的输入一致一是把当前目录的 INCAR 和examples里同类任务的参考 INCAR 做diff差异应该只有体系相关的参数二是记录二进制版本号vaspkit -h打出来的信息存进算例目录的说明文件半年后回头查问题时能说清当时用的是哪个版本。手册里提到的 spglib 版本、f 轨道投影修复这些改动恰恰是同类体系在不同版本间结果漂移的常见来源。从那以后我每次开新算例第一件事就是把examples里结构最接近的那个目录拷出来跑通再把自己的 POSCAR 换进去重走 108从不直接在空目录里手敲菜单——吃过一次 INCAR 被覆盖、弛豫烧了三天才发现ISIF不对的亏这个动作就再也没省过。希望帮到你。本文还有配套的精品资源点击获取