在上一章《第二十八章VASP计算实战:离子嵌入脱出能计算流程讲解!|2026新版VASP基础教程》中,我们详细介绍了VASP示例任务。VASP计算一般从结构优化开始,然后对优化后的结构进行性质计算。本章将介绍VASP过渡态与反应路径计算实例,让大家更好的了解计算流程,具体包括结构优化、半导体性质案例、表面与催化案例。




在固态化学和表面科学中,了解反应机理往往需要回答两个关键问题:
反应路径(Reaction Path)
从反应物(Initial State, IS)到产物(Final State, FS)的原子运动轨迹是什么?
过渡态(Transition State, TS)
反应过程中的能量最高点(即鞍点)位于何处?
传统的能量计算只能给出某一瞬时构型的能量,无法直接得到这条“最小能量路径”(Minimum Energy Path, MEP)。NEB 方法正是为了解决这一难题而设计的。它通过在已知的 IS 和 FS 之间插入多个“图像”(Image),并施加特殊的约束,使这些图像在优化过程中能够自动“滑动”到 MEP 上,从而精确定位 TS。





NEB 方法的核心思想是将反应路径离散化为一系列相互连接的点(Images),类似于用弹簧串连的链条。其原理可以分为以下几个关键步骤:
假设我们有N+1 个图像(包括端点),它们在
维空间中形成一条离散的曲线。为了防止这些图像在优化过程中聚集在能量谷底,我们人为地在相邻图像之间添加一条虚拟弹簧(Spring),其势能为:

其中K 为弹簧常数,
为理想的图像间距。
真实的系统在每个图像处受到势能面的梯度力
。然而,如果直接将这个力用于优化,图像会直接滑向最近的能量极小点,导致链条收缩。
为了解决这个问题,NEB 方法引入了“爬坡”(Nudging)策略:
切向分量(Parallel Component)
势能面的力在切向(沿链条方向)的分量被完全抵消,避免图像沿链条方向滑动。
正交分量(Perpendicular Component)
保留势能面力在垂直于切向的分量,引导图像沿垂直方向下降到 MEP 上。
弹簧力的正交分量
仅保留弹簧力的切向分量,确保图像间的等间距分布。
通过这种力的投影处理,每个图像只受到势能面垂直方向的“真实”力和切向方向的“弹簧”约束,从而在梯度下降的过程中自然收敛到 MEP 上。

传统的 NEB 方法(Standard NEB)需要多个图像来逼近 TS,但有时最高能量的图像(最高点)仍然偏离真实的鞍点。
为了解决这个问题,Henkelman 等人提出了 CI-NEB 方法(Climbing Image NEB):
在计算的后期,选取能量最高的那个图像,将其弹簧常数K 设为 0(即关闭弹簧约束)。
同时,反转该图像在切向方向的力分量,使其沿切向方向“爬坡”而不是下降。
结果是,这个图像会精确地收敛到真实的过渡态(鞍点),而且只需要少量的插值图像(通常 3-4 个即可)。




在 VASP 中,NEB 计算通常依赖于 VTST(VASP Transition State Tools)工具包。VTST 是由 Henkelman 小组开发的,用于增强 VASP 的过渡态搜索能力。
在运行 NEB 计算之前,需要先单独优化好 IS(Initial State)和 FS(Final State)的结构。这两个结构必须满足以下要求:
原子编号一致:两个结构中每个原子的编号(Element)必须对应,否则 VASP 无法识别原子之间的对应关系。
确保收敛:IS 和 FS 必须分别经过自洽迭代(SCF)和离子迭代(ionic relaxation)收敛到基态。

在获得 IS 和 FS 之后,需要在它们之间插值生成中间的图像。VASP 提供了 nebmake.pl 脚本(或者 Python 版的 nebmake.py)来完成这一工作。
nebmake.pl POSCAR_initial POSCAR_final
这将生成 00, 01, 02, …, NN 系列文件夹,每个文件夹中包含一个 POSCAR 文件。
在每个图像文件夹中,需要设置 INCAR 文件以启用 NEB 优化。最常用的参数如下:
IBRION = 3 # 启用 VTST NEB 优化器
POTIM = 0 # 必须设为 0,表示使用 VTST 优化器而非普通的分子动力学
IMAGES = 5 # 插值的中间图像数量(不包括 IS 和 FS)
SPRING = -5 # 弹簧常数(建议为负数,表示使用单位弹簧)
LCLIMB = .TRUE. # 开启 CI-NEB(爬坡图像)
NEB 计算的特殊之处在于它是并行任务(Parallel Tasks)。整个 NEB 计算是由所有图像共同组成的一个“任务”,而每个图像内部又是一个“子任务”。
建议:启动 VASP 时,使用 -p 8(例如)来指示 VASP 使用 8 个核(或 8 个进程)来并行计算每个图像。
文件结构:在根目录下放置 INCAR, POTCAR, KPOINTS,在每个子文件夹(00, 01, …)中放置对应的 POSCAR。VASP 会自动识别并进行并行计算。
1.准备 IS 和 FS:分别进行单点能量计算或结构优化,确保它们是能量最低的构型。
2.插值生成 Image:使用 nebmake.pl 或 IDPP 方法生成中间图像。
3.设置参数:在根目录下设置 INCAR,开启 CI-NEB。
4.提交计算:使用 mpirun -np 8 vasp_std 或 srun -n 8 vasp_std 提交计算。
5.监控收敛:使用 nebresults.pl 脚本监控能量变化和最大力。
最大力 (EDIFFG):NEB 计算的收敛标准通常设置为 EDIFFG = -0.05 或 -0.03(单位:eV/Å)。当所有图像的最大受力小于该阈值时,计算收敛。
能量变化:监控 OUTCAR 中的 E0(每个图像的能量)随迭代的变化。如果能量变化很小且图像间距基本保持不变,则认为收敛。




NEB方法理论基础:介绍了是能面,反应路径,弹性带方法
VASP计算流程:介绍中间态插值,收敛标准,核心算法参数
下一章将正式引入本次教程的核心—VASP过渡态初末态构建。我们将从初态构建、末态构建、中间态插值方面详细介绍VASP 过渡态与反应路径,敬请期待!
