简介:《VASPKIT中文手册1》是一份面向VASP初学者以及材料计算、催化研究方向用户的工具文档,重点解决VASP预处理与后处理环节命令分散、脚本门槛较高的问题。内容围绕VASPKIT这一轻量级Linux命令行工具展开,涵盖输入文件生成与检查、PBE/HSE06能带计算、分波与局域态密度、热力学量校正、差分电荷密度、NEB路径处理与虚频校正、能带反折叠、3D能带、费米面及VASP2BoltzTraP接口等模块,并介绍用户自定义界面的测试功能。资源包共1个PDF文件,大小约2.37MB,便于在本地检索和随查随用;目前已有3568人学习。读者可借助手册快速熟悉菜单功能与典型计算流程,减少在INCAR、POSCAR、POTCAR准备及后处理绘图上的反复试错,适合作为VASP日常计算的手边参考。
1. 从「VASP 没有界面」说起:这份 VASPKIT 中文手册能省掉多少手工活
VASP 是一套没有图形界面的计算程序,建模、撒点、拼赝势、处理能带全靠外部脚本接力。一份六方晶系的 POSCAR 从数据库拉下来,到能真正提交任务,中间要经过改分隔符、写 INCAR、算倒空间 K 点密度、按元素顺序拼 POTCAR 四道纯手工工序。麻烦的地方在于,这几步错了 VASP 基本不吭声——它照样跑完,照样给你一个看起来很正常、实际上全错的结果。这份 VASPKIT 中文手册围绕的正是一款把这些工序收进一个命令行菜单的预-后处理工具:FORTRAN 写成,Linux 下直接跑,体积五兆左右,不依赖第三方库,examples 目录里带着各功能的测试算例。下面按「配置 → 输入文件生成 → 电子结构后处理 → 避坑」把手册里的任务号逐个拆开,参数怎么设、哪一步最容易翻车,都落到具体命令上。
2. 先让 vaspkit 跑起来:.vaspkit里那几行决定后面所有任务
拿到压缩包解压之后,很多人第一反应是直接敲vaspkit看菜单。能出菜单不代表能用——菜单只是壳子,真正决定 POTCAR 从哪来、INCAR 怎么写的,是用户目录下那个.vaspkit隐藏文件。这一步没配好,后面任务 101 到 109 全是空转,典型的「看起来跑通了,结果全是默认值」。
2.1 复制环境文件,改四个关键字段
vaspkit 的 bin 目录里带了一份how_to_set_environment_variable,它就是配置模板。直接复制到用户主目录并改名,后续所有任务都会读这个文件:
# 进入 vaspkit 的 bin 目录 cd /home/vaspkit.0.72/bin/ # 复制模板到用户主目录,文件名必须是 .vaspkit cp -f how_to_set_environment_variable ~/.vaspkit # 编辑配置 vi ~/.vaspkit打开后大致是下面这个结构,左边是变量名,右边是值,#后面是注释说明:
VASP5 .TRUE. # .TRUE. or .FALSE.; 用 vasp.4.x 时改 .FALSE. GGA_PATH '~/POTCAR/GGA' # GGA 赝势库目录 PBE_PATH '~/POTCAR/PBE' # PBE 赝势库目录 LDA_PATH '~/POTCAR/LDA' # LDA 赝势库目录 POTCAR_TYPE PBE # PBE / GGA / LDA,决定拼哪种赝势 GW_POTCAR .FALSE. # 是否使用 GW 专用赝势 RECOMMENDED_POTCAR .TRUE. # 是否按官方推荐挑赝势后缀 MINI_INCAR .FALSE. # 是否输出精简版 INCAR SET_FERMI_ENERGY_ZERO .TRUE. # 后处理时是否把费米能平移为 0 SET_INCAR_WRITE_MODE OVERRIDE # OVERRIDE / APPEND / BACK-UP-OLD / BACK-UP-NEW真正需要动的是四个:PBE_PATH(或GGA_PATH)必须指向你本机真实存在的赝势库根目录,路径写错时任务 103 会直接告诉你找不到赝势;POTCAR_TYPE决定拼装时候选的是 PBE 还是 GGA-PW91,做常规材料计算留PBE就行;RECOMMENDED_POTCAR保持.TRUE.时,程序会按官方推荐给你挑后缀,改成.FALSE.之后才会老老实实按无后缀版本取;SET_INCAR_WRITE_MODE默认是OVERRIDE,会直接覆盖同目录下已有的 INCAR,这是后面要单独讲的一个坑。
SET_FERMI_ENERGY_ZERO容易被忽略:它影响的是后处理阶段,打开之后画出来的能带和 DOS 横轴以费米能为零点,几套图叠在一起比较时省事得多;关掉的话原始本征值直接上屏,跨体系对比就得自己减。MINI_INCAR控制生成的是完整模板还是精简模板,新手建议先留.FALSE.,把 INCAR 的完整结构看一遍,知道每个标签管什么,再考虑精简。
提示:
PBE_PATH指向的是赝势库的上一级目录名,不是某个具体元素的 POTCAR 路径。写~/POTCAR/PBE之后,程序会自己去该目录下找Zn/POTCAR、O/POTCAR这样的子目录。
2.2 加 PATH 与执行权限:两个最常见的启动失败
配置好之后还要解决「在哪个目录都能敲出来」和「有没有权限敲」这两件事。前者靠环境变量,后者靠chmod:
# 把 vaspkit 的 bin 目录写进 PATH,路径按自己的实际位置替换 echo 'export PATH=/home/vaspkit.0.72/bin/:$PATH' >> ~/.bashrc # 使修改立即生效,不用重新登录 source ~/.bashrc # 赋予可执行权限,解决 Permission denied chmod u+x /home/vaspkit.0.72/bin/vaspkit这两条命令对应的两个报错,几乎每个新用户都会撞上一个。-bash: ./vaspkit: Permission denied是权限没给,执行chmod u+x即可,注意是对bin下那个二进制文件本身加,不是对解压出来的上层目录加。另一个更麻烦:vaspkit: /lib64/libc.so.6: version 'GLIBC_2.14' not found (required by vaspkit),这说明运行环境的 C 库版本低于程序编译时的要求。
第二种情况我一般不建议硬升 C 库,那是拿整个系统在赌——集群上的 MPI、编译器和一堆依赖都挂在同一个 glibc 上,升完很可能别的程序全线崩。比较稳妥的路径是找维护方要一份在低版本环境下编译的二进制,或者干脆把 vaspkit 放进一个独立的容器镜像里,宿主机一动不动。这一点在共享集群上尤其重要,你没有 root 权限,升级这条路本来就堵死了。
2.3 菜单五个区块:任务号怎么记
启动之后会看到一个分区块的字符菜单,结构其实很好记,按「做什么」分成四类:
| 区块 | 起始任务号 | 覆盖内容 |
|---|---|---|
| Structural Options | 1 起 | 输入文件生成、弹性、K 路径、结构编辑、催化电化学、对称性 |
| Electronic Options | 11 起 | 态密度、DFT 能带、3D 能带、杂化泛函能带、费米面、能带反折叠 |
| Charge & Potential & Wavefunction | 31 起 | 电荷与自旋密度、静电势、波函数分析 |
| Misc Utilities | 71 起 | 线性光学、分子动力学、VASP2BoltzTraP、半导体计算器、二维材料工具 |
记忆方式不是背任务号,而是记住「第一位数字代表大类,后两位是同类下的序号」。比如能带相关的全在 2 字头:21 是常规 DFT 能带,23 是 3D 能带,25 是杂化泛函能带,26 是费米面,28 是能带反折叠。态密度全在 1 字头:11 进子菜单,112 到 115 是不同求和口径。电荷密度在 3 字头,31 进去之后再做差分。知道这个分层逻辑,翻手册的时候就不用来回找了。
还有一点值得先说清楚:这个菜单本身是纯命令行的,所有输出都是文本文件。它不负责画图,能带图、DOS 图、电荷密度等值面仍然要丢给 VESTA、gnuplot 或 Python 的 matplotlib、pymatgen 去做。vaspkit 的定位是把「数据算出来、整理成对的形式」,可视化是下一棒的事。想明白这条边界,就不会指望它替你把整条流水线包圆。
3. 四件套的生成与体检:任务 101 到 109 一条链走完
VASP 跑任何任务至少要有 INCAR、POSCAR、POTCAR、KPOINTS 四个文件,分别管「算什么」「算什么结构」「内层电子用什么势替代」「倒空间在哪积分」。这四个文件各有各的格式讲究,手工维护最容易在 POSCAR 的分隔符和 POTCAR 的元素顺序上出问题。手册里这部分把生成和检查编成了一条连续的任务链,从 101 一路到 109。
3.1 关键字拼 INCAR:LR、H6、D3、PU 怎么组合
任务 101 是自定义 INCAR。进入选项之后会看到一排两个字母的缩写,它们不是随意编的,是任务类型标记:
ST) Static-Calculation SR) Standard Relaxation MG) Magnetic Properties SO) Spin-Orbit Coupling D3) DFT-D3 no-damping H6) HSE06 Calculation PU) DFT+U Calculation MD) Molecular Dynamics GW) GW0 Calculation BS) BSE Calculation DC) Elastic Constant EL) ELF Calculation BD) Bader Charge Analysis OP) Optical Properties EC) Static Dielectric Constant PC) Decomposed Charge Density FD) Phonon-Finite-Displacement DT) Phonon-DFPT NE) Nudged Elastic Band DM) The Dimer Method FQ) Frequence Calculations LR) Lattice Relaxation用法是直接把缩写串起来输进去,提示里给的例子STH6D2就表示「HSE06 泛函 + D2 色散校正 + 静态计算」三件事同时要。做晶格优化就输LR,得到的是PREC=High加标准弛豫参数的一套模板;做 HSE06 静态就输STH6。这个拼接方式看着简陋,实际用起来比翻一堆模板文件快得多,尤其是同一体系要换泛函重算的时候,改两三个字母就行。
生成之后务必打开看一遍。模板里注释掉的参数不少,注释符开头的行 VASP 不读,但意思是「这里你可能要自己定」。最典型的两个:DFT+U 的 U 值不会替你填,LDAUU、LDAUL这些标签得自己按元素补上;NEB 的IMAGES数目也不会猜,得跟你的插点数对上。手册里专门用加粗提了这一点,Warm Tips那段反复强调的就是「你得知道自己在干什么」。
注意:
LR模板默认给的是PREC=High,VASP 会自动把ENCUT设成max(ENMAX) * 1.3。优化晶格常数的确需要高截断,但同一批计算里如果有的体系走PREC=High、有的走PREC=Normal,两者的ENCUT就不一致,能量没法直接比。更稳的做法是统一改成PREC=Accurate并显式写死ENCUT。
3.2 KPOINTS 的倒空间分辨率:0.04 从哪来
任务 102 负责生成自洽计算用的 KPOINTS。进去之后先选撒点方式,再选密度。撒点方式里 Monkhorst-Pack 和 Gamma 两套,绝大多数情况选 Gamma 稳妥,尤其是六方、三方这些非正交体系,Gamma 中心网格对对称性的利用更充分。
密度的输入方式是一个倒空间分辨率数值,提示里给了分档建议:
| 档位 | 建议取值 | 适用场景 |
|---|---|---|
| Low | 0.06 ~ 0.04 | 大体系粗算、结构预优化 |
| Medium | 0.04 ~ 0.03 | 常规自洽计算,多数场景够用 |
| Fine | 0.02 ~ 0.01 | 高精度能量、态密度 |
| Gamma-Only | 0 | 只取 Gamma 点,大分子或真空层很厚的二维体系 |
Input KP-Resolved Value (unit: 2*PI/Angstrom): 0.04 -->> (2) Written KPOINTS File! K-Mesh Generated with KP-Resolved Value : 0.0400 Gamma 9 9 5 0.0 0.0 0.0这里输出的是 9×9×5 的网格。为什么三个方向不一样?因为 vaspkit 是按倒空间三个晶格矢量的实际长度分别算的,不是无脑套同一个数。手册里提到的一点很关键:对非正交体系,倒格矢长度和晶格常数不成简单反比,所以「三个方向的 K 点乘晶格常数都约等于 20」这种经验判据在六方、单斜体系里会失真。这也是很多老教程里那句「ka 大于 20 埃就够了」的局限所在——正交体系好用,非正交体系就只能算个大概。
一个可用的自检方式是看输出值。对半导体,倒空间分辨率乘上对应方向的实空间长度大致落在 20 埃以上就比较稳;对金属体系,因为有费米面穿过,K 点密度要再密一档,0.03 甚至 0.02 都不算浪费。体系一旦变成大超胞,比如加了真空层的二维材料,c 方向的网格数会掉到 1,这是对的,不是程序出错。
3.3 POTCAR 后缀的选择:_pv、_sv、_h与 Bader
任务 103 按默认设置拼 POTCAR,任务 104 允许你手动指定每个元素用哪种赝势。赝势库里同一元素往往有好几份,区别在后缀:无后缀的是标准版,_pv、_sv、_d表示把次外层的 p、s、d 电子也当价电子处理,后面跟数字的则是不同版本。
# 手动指定赝势:输入 104 后按提示逐个元素选 # O 直接回车用默认,Zn 输入 Zn_pv grep TIT POTCAR # 输出应包含 O 和 Zn_pv,确认元素顺序与 POSCAR 一致什么时候必须上_pv或_sv?手册里给了两条明确线索。第一条是 Bader 电荷分析:次外层电子如果没进价态,电荷 partitioning 出来的结果会偏,所以做 Bader 时用带_pv、_sv的赝势。第二条是含短键二聚体的体系,像 O2、CO、N2、F2、P2、S2、Cl2 这类分子,官方建议用_h系列赝势处理。
代价要提前算清楚。_pv把 p 轨道纳入价态之后,价电子数上去了,ENMAX也跟着上去了,截断能和计算量一起涨。我的习惯是先用无后缀版本跑一版,再换_pv跑一版,对比关键结论(带隙、吸附能、态密度峰位)有没有实质变化。影响在误差棒内就退回无后缀版本省机时,影响明显才保留。直接无脑上_pv是拿几倍机时换一个可能本来就不需要的精度。
拼完之后一定要做元素顺序核对,grep TIT POTCAR看的是 POTCAR 里元素的排列,它必须和 POSCAR 第五行的元素顺序逐一对上。这件事 VASP 自己完全不查,顺序反了照样往下算,只是把 Zn 的赝势套在 O 的位置上,出来的一切都是错的。
3.4 108 与 109:把格式错误挡在提交前
任务 109 是检查所有 VASP 文件。它干两件事:修正 INCAR 和 POSCAR 里的格式问题,以及检查 POTCAR 与 POSCAR 的元素是否一致。
# 在含 POSCAR 的目录下启动 vaspkit # 输入 1 进入 Input Files Generator # 输入 109 执行全文件检查它修的最常见问题是分隔符。从数据库下载的 POSCAR 经常用制表符而非空格分隔各列,VASP 读这种行会只认出第一个元素,后面的直接忽略。表现为提交后报错the type information is not consistent with the number of types,你打开 POSCAR 看半天觉得没问题,因为肉眼看上去就是有间隔的——只是那间隔是\t不是空格。Windows 下编辑过的文件还会带上 CRLF 换行,问题类似,报错更莫名其妙。
任务 108 是「连续流程」:按顺序设置 INCAR、设置 K 点密度、生成 KPOINTS 和 POTCAR,最后自动调用 109 检查一遍。对固定的计算流程来说这个最省事,尤其是批量准备多个体系的时候。手册里那句话说得很到位:VASP 之前,先 KIT 一下。多花十秒检查,比提交上去等一小时发现算错强。
4. 能带、态密度、热力学与催化:从电子结构到自由能
输入文件准备只是前半程。手册后半部分的主体是后处理:能带怎么取路径、杂化泛函的能带怎么撒点、投影态密度怎么求和、自由能怎么校正。这几块彼此独立,但对同一个体系往往是连着做的,所以放在一起看更方便。
4.1 高对称路径生成:KPATH.in、PRIMCELL.vasp与三斜晶系的边界
能带计算的 KPOINTS 和自洽计算完全不同:不是均匀撒网格,而是沿第一布里渊区内若干条高对称路径取点。传统做法是去 SeeK-Path 网站上拿到高对称点坐标,再用脚本插值生成路径,来回倒腾容易出错。任务 3 把这一步内置了。
vaspkit # 输入 3 进入 Band-Path Generator # 输入 3 选择 3D bulk structure (Experimental)执行后会输出两条建议路径和两个文件。以六方体系为例,建议路径可能是GAMMA-X-U|K-GAMMA-L-W-X,其中竖线是路径分隔符,表示分成两段独立的折线。同时生成PRIMCELL.vasp(标准化之后的原胞)和KPATH.in(能带计算用)。
KPATH.in的第二行是一串数字,表示路径每一小段里插多少个 K 点。这个数字默认值偏密,大体系算不动的时候把它整体按比例调小,比如全改成原来的三分之一,路径形状不变,只是采样变稀,用来先跑通流程很合适。
手册里明确写了一个边界:目前不支持三斜晶系。三斜体系要么退回 SeeK-Path 网站手动拿点,要么用别的工具生成路径再转成 KPOINTS 格式。这个限制不是 bug,三斜的标准化和路径枚举本身就更复杂,遇到时不必反复试,直接用替代方案。
还有一个动作不能漏:能带路径只对原胞有意义。生成PRIMCELL.vasp之后,要用它替换掉当前目录的POSCAR,再重新走一遍 102 生成自洽 KPOINTS,然后才开始算。拿超胞去算能带路径,折出来的图会有大量额外的能带分支,看起来像能带「变密了」,实际上是 Brillouin 区折叠,不是物理。
4.2 HSE06 与 PBE 能带的分工:任务 21 与 25
普通 DFT 能带走任务 21,杂化泛函能带走任务 25。两者的差别不只是泛函,采样方式也不一样。
PBE 算能带快,问题是带隙系统性低估,半导体里尤其明显——算出来是金属或者带隙只有实验值一半,都不奇怪。HSE06 能给出更接近实验的带隙,代价是计算量高一个量级以上,因为要算精确交换。所以常规流程是:先用 PBE 把结构弛豫好、把路径跑通、看清能带的大致形貌,再拿这个结构去做 HSE06 单点。
==================== Hybrid-DFT Band-Structure ==================== 任务 25 支持沿不同 k 路径做均匀 k 点采样 同样适用于 DFT 与 Meta-GGA(GW 除外)手册里有一条容易被略过的更新说明:任务 25 现在支持沿不同 k 路径做均匀 k 点采样。这句话的实际含义是,杂化泛函能带不再必须依赖某种特定的插值方案,可以按路径均匀取点。对 HSE06 这种每个 K 点都很贵的计算,能在路径上少取冗余点、把点放在真正需要的区段,机时差别很可观。
我的做法是先跑 PBE 拿到全路径的形貌,确定带边落在哪几段路径上,然后只在那几段上做 HSE06 加密,其余段稀一点。这样总点数下降,带隙值仍然掐在带边位置上,精度不受影响。
4.3 PDOS 的四种求和口径:112 到 115
投影态密度是分析成键最常用的量,vaspkit 在这里给的不是一个功能,是一组,按「对谁求和」分成四档:
| 任务号 | 求和对象 | 典型用途 |
|---|---|---|
| 112 | 一个或多个指定原子 | 看吸附位点上某个原子的贡献 |
| 113 | 每个元素 | 快速看各元素整体分布 |
| 114 | 选定原子集合的求和 | 把吸附质和衬底表面原子合并统计 |
| 115 | 选定原子 + 选定轨道的求和 | 单独抽 d 带、p 带做晶体场分析 |
对应的投影能带任务号是 212/253(指定原子)、213/254(每个元素)、214/255(选定原子求和)。这个编号规律和 DOS 那组是对齐的,记住一组另一组就通了。
实际分析里 115 用得最多。做过渡金属氧化物表面的时候,把金属的 d 轨道单独抽出来看分裂和占据,比看整条 PDOS 清楚得多。114 则适合处理「吸附到底改变了什么」这个问题:把吸附分子和它下面两三层原子合成一组求和,与清洁表面的同一组做差,差值谱上出现的新峰就是成键态。
需要注意 PDOS 是投影出来的,投影半径和 PAW 数据集有关,不同赝势后缀(比如_pv与无后缀)算出来的 PDOS 绝对值不能直接横向对比,峰位和形状可以比,积分面积要谨慎。
4.4 热力学量校正与催化工具:零点振动能、NEB 插点、虚频校正
手册里热力学部分解决的是自由能的可比性问题:DFT 给出的电子能量是 0 K 下的静态值,要拿去做催化反应的自由能台阶图,必须补上零点振动能和温度项。工具分两类,一类针对气相分子,一类针对吸附质分子。气相分子的校正有标准流程可循,吸附质的校正则要考虑衬底约束下的低频模式,两者不能混用同一套做法。
催化相关的结构工具集中在任务 5 那一片,包括按层数或高度区间固定原子、NEB 路径生成、把 NEB 路径转成可视化的 PDB、线性插点、虚频校正。这几个功能配合起来是一条完整的反应路径处理链:
# NEB 路径线性插点(任务 505) # 在含初态和末态结构的目录下执行,生成指定数目的中间镜像 vaspkit # 输入 5 进入 Catalysis-ElectroChemi Kit # 输入 505 按提示指定插点数目 # NEB 路径转 PDB,用于可视化(任务 405) # 生成的 PDB 可以直接丢进 VESTA 里看整条路径的结构演化线性插点解决的是初末态结构原子数相同但坐标差异较大时,直接线性插值容易产生原子重叠的问题;先插点再人工微调,比从零搭每个镜像快得多。虚频校正(507)针对的是过渡态搜索收敛后仍残留一个虚频的情况,程序会按虚频模式小幅扰动结构,帮助跳出当前驻点。
按高度区间固定原子的功能,在表面吸附计算里非常实用。手工数哪些原子在下面几层、逐个改 POSCAR 的选择性动力学标记,是纯粹的低效劳动,而且极容易数错层。给一个高度阈值让程序自己判定,出错概率低一个数量级。
5. 避坑排查:五个让我白算过机时的坑
这一节里每一条都是实际撞过的。共同点是:VASP 不报错,或者报的错和真正原因隔着好几层,你不主动查就永远不知道问题在哪。
5.1 隐形字符:制表符与 Windows 换行
现象:结构从数据库下载下来,四件套也生成了,提交之后 VASP 秒退,日志里是the type information is not consistent with the number of types。打开 POSCAR 用肉眼看,每列之间明明有间隔。
原因:数据库导出的 POSCAR 用制表符\t分隔各列,不是空格。VASP 的读取逻辑对\t不友好,某些行会被截断,元素名读不进去,于是程序认为 POSCAR 里的元素种类数和 POTCAR 对不上。在 Windows 下编辑过的文件还会多出 CRLF 换行,症状类似但报错位置更飘。
解决:走一遍任务 109,它会重排格式、统一分隔符。养成习惯,任何外来结构文件进目录之后先跑 109,不要相信文件看起来的样子。同理,INCAR 里也不要用\t对齐参数,用空格。
5.2 元素错配:POTCAR 与 POSCAR 对不上也不报错
现象:一次 ZnO 的计算,POTCAR 里拼的是Zn_pv,POSCAR 里元素行写的是Zn。程序经过提示后仍然继续跑,能量收敛得也很好,只是所有结果都是错的。
原因:VASP 不校验 POTCAR 和 POSCAR 的元素一致性。它按顺序把 POTCAR 里的第一个数据集套在 POSCAR 的第一个元素上,名字对不上它不管。算石墨烯用 H 的赝势它也照样跑完,只是你算的是另一套东西。
解决:任务 109 会显式做这项检查,输出类似POTCAR:Zn_pv与POSCAR:Zn的对照。任务 103/104 生成 POTCAR 之后立刻grep TIT POTCAR看一眼顺序。这个检查花两秒钟,省的是重算一整轮。
5.3 晶胞选错:拿超胞去生成能带路径
现象:能带图算出来密密麻麻一片,看不出清晰的色散关系,跟文献里同一个材料的图完全对不上。
原因:能带路径只对原胞有意义。任务 3 生成KPATH.in的同时会给出PRIMCELL.vasp,但如果继续用原来的超胞 POSCAR 做自洽和能带计算,得到的是折叠后的 Brillouin 区,多条能带叠在一起。
解决:用PRIMCELL.vasp替换 POSCAR,重新生成 KPOINTS,再算。顺便核对一下原子数和晶格常数是否与预期一致——有些体系的标准化会把晶胞取向也改掉,取向变了高对称点标签的含义也变了,对照路径时容易看岔。
5.4 截断能与赝势后缀的连锁反应
现象:同一体系两次计算,一次用无后缀赝势,一次用_pv,能量差了几十 meV,带隙也挪了一点。不知道哪个是对的。
原因:_pv把次外层电子纳入价态,ENMAX提高,如果ENCUT还是按无后缀的那个max(ENMAX)走的,两次计算的基组截断根本不在一个水平上。再加上PREC=High会自动乘 1.3 倍,PREC=Normal不乘,同一个 INCAR 模板换个PREC就换了一套截断能。
解决:在一个项目里统一ENCUT,显式写进 INCAR,不要依赖PREC的自动推断。手册里提到官方手册已经不推荐PREC=High,建议PREC=Accurate加手动设定ENCUT,原因就在这里——自动推断出来的值不可控,跨体系比对时是隐患。
5.5 INCAR 写入模式:手改的参数被悄悄覆盖
现象:上一轮手动加了LDAUU和LDAUL,重新跑一次 101 生成模板之后,这两个标签没了,任务按纯 GGA 算完。
原因:~/.vaspkit里SET_INCAR_WRITE_MODE默认是OVERRIDE,每次生成都直接覆盖同名 INCAR,不做任何备份。
解决:改成BACK-UP-OLD,每次生成前把旧文件备份成INCAR.old;或者改成APPEND,新内容追加到原文件后面。改~/.vaspkit一次就够,之后所有任务都按新模式走。这个改动成本几乎为零,但能救回不少被覆盖掉的手工参数。
6. 用反折叠和 3D 能带做一次交叉验证:一个可复用的复核习惯
超胞计算做完之后,最容易出的问题是「算得很顺,但不知道算的是不是那个东西」。这时候能带反折叠(任务 28)就派上用场了:它把超胞的能带按原胞的倒格矢重新投影,还原出原胞的谱权重分布,掺杂、缺陷、表面重构这些破坏周期性平移的场景里,用来看清哪些能带来自原胞、哪些是超胞引入的折叠分支。
6.1 反折叠的输入准备与结果核对
任务 28 支持 DFT、杂化泛函和 Meta-GGA 三个层级(GW 除外),examples 目录下的band_unfolding有现成算例。输入侧要准备的是超胞和原胞两套结构,以及超胞的wavecar或vasprun.xml之类能带数据。跑完之后我最先看的是 Γ 点的带边位置:反折叠图上 Γ 点处的价带顶和导带底,应该和直接对原胞做能带计算得到的位置基本重合。对不上就说明原胞选取或者投影设置有问题,后面的分析都不用看了。
6.2 3D 能带、费米面与输运接口的交叉验证
任务 23 的 3D 能带和任务 26 的费米面,本质上是同一份本征值数据的两种视角。做各向异性明显的层状材料时,2D 路径图看不出 c 方向色散的强弱,3D 图一眼就能看到。我的习惯是 2D 图和 3D 图对照着看一遍,确认带边确实落在预期的高对称点上,再去决定是否继续做输运。
输运那一步走任务 73 的 VASP2BoltzTraP 接口,把 VASP 的结果转成 BoltzTraP 要的格式。这里有两个前置条件:一是自洽计算的 K 点必须足够密,输运积分对 K 点密度比总能计算敏感得多;二是费米能的位置要确认清楚,SET_FERMI_ENERGY_ZERO打开时输出是相对值,跟实验或文献对比时要还原回去。还有任务 74 那个面向高级用户的自定义界面,属于测试性质的功能,扩展性有但稳定性不保证,正式出数据别拿它当主线。
血泪经验是:反折叠和 3D 能带这两步不要等全部算完再做。结构一弛豫完就先跑一遍反折叠,确认超胞里没混进奇怪的分支,比全部电子结构算完再回头查要省太多。从那以后我每次建超胞,都会强制走一遍「原胞路径 → 超胞自洽 → 反折叠核对」这条链,哪怕只是随手算个掺杂,也不跳过中间那步。希望帮到你。
本文还有配套的精品资源,点击获取