VASP 核心运行流程
要运行 VASP,您需要以下几个关键文件:

POTCAR: 赝势库文件,VASP 根据您在INCAR中指定的元素,自动从POTCAR目录中读取相应的赝势文件。INCAR: 输入参数控制文件,这是您告诉 VASP 如何计算的核心文件,包含了所有计算设置(如截断能、算法、收敛标准等)。POSCAR: 原子位置和晶胞结构文件,定义了您要计算的材料结构。KPOINTS: k 点网格设置文件,定义了在布里渊区进行积分的 k 点取样方式。
基本运行命令:
在包含以上四个文件的目录下,打开终端,输入:
mpirun -np <进程数> vasp_std
mpirun: 是 MPI (Message Passing Interface) 的执行命令,用于并行计算。-np <进程数>: 指定您希望使用的 CPU 核心数。-np 16表示使用 16 个核心。vasp_std: 是 VASP 的可执行文件名,根据您的版本和编译设置,也可能是vasp_gam(Gamma点专用,效率更高) 或vasp_ncl(无标度版本,用于计算NMR等)。
INCAR 文件详解
INCAR 是 VASP 的灵魂,下面列出一些最常用和最重要的参数:
基本设置
| 参数 | 含义 | 常用值/说明 |
|---|---|---|
SYSTEM |
计算任务的描述 | 任意字符串,用于标识任务,如 Bulk Si。 |
ISTART |
从哪个波函数开始 | 0: 从头开始 (随机波函数)。1: 从上一个 WAVECAR 文件继续。2: 从 CHGCAR 读取电荷密度并生成波函数。 |
ICHARG |
从哪个电荷密度开始 | 0: 从头开始。1: 从上一个 CHGCAR 文件继续。2: 从 CHGCAR 读取并作为初始猜测。 |
ENCUT |
平面波截断能量 | 极其重要! 必须大于所用赝势要求的最大截断能,通常取所用元素赝势 ENCUT 的 1.2-1.3 倍作为安全值。 |
ISMEAR |
态占据方式 | -5: TETRA (四面体方法,半导体/绝缘体首选,用于态密度计算)。0: Fermi (费米能级展宽,金属首选)。1: Gaussian (高斯展宽,常用于金属和过渡态搜索)。2: Fixed (固定占据,用于计算总能量)。 |
SIGMA |
展宽参数 (eV) | 当 ISMEAR > 0 时使用,金属通常取 0.05-0.2 eV。ISMEAR=1 时,SIGMA 约等于 kBT。 |
IBRION |
离子弛豫算法 | 2: VASP 的默认共轭梯度法,最常用。5: 准牛顿算法,有时收敛更快。-1: 不进行离子弛豫,仅进行电子步自洽计算。 |
NSW |
离子弛豫的最大步数 | 0 表示不弛豫,进行结构优化时,通常设置为 100-500。 |
EDIFF |
能量收敛标准 (eV) | 电子步自洽循环的收敛标准。1E-5 或 1E-6。 |
EDIFFG |
离子步收敛标准 (eV/Å) | 极其重要! 控制离子弛豫何时停止。 正值: 当能量变化小于此值时停止。 负值: 当作用力小于此值的绝对值时停止。 -0.01 到 -0.001 eV/Å。 |
高级设置
| 参数 | 含义 | 常用值/说明 |
|---|---|---|
ALGO |
自洽算法 | Normal: 标准算法。Fast: 更快但可能不稳定,适用于初步优化。<brVeryFast: 更快,但对复杂系统可能不收敛。<brDamped: 阻尼算法,对某些难收敛系统有效。 |
NELM |
最大电子步数 | 默认为 100,对于难收敛的系统,可以增加到 200-500。 |
ISIF |
优化自由度 | 2: 优化离子位置,固定晶胞体积 (常见于固定体积下的弛豫)。3: 优化离子位置和晶胞形状 (体积不变),即应力弛豫。4: 优化离子位置和晶胞体积 (最完全的几何优化)。7: 计算 Helmholtz 自由能 (需要设置 LEPSILON=.TRUE.)。 |
LREAL |
实空间投影 | .FALSE.: 默认,精度最高。<br.TRUE.: 对于大体系可以加速,但可能影响精度。 |
LVHAR |
硬 Hartree 项 | .TRUE.: 计算电荷密度时会分开计算硬 Hartree 项,可以加速,通常保持默认 .TRUE.。 |
LWAVE |
是否输出 WAVECAR | .TRUE.: 输出。.FALSE.: 不输出,节省磁盘空间。 |
LCHARG |
是否输出 CHGCAR | .TRUE.: 输出。.FALSE.: 不输出,节省磁盘空间。 |
MAGMOM |
初始磁矩 | 为每个原子指定初始磁矩 (单位: μB)。MAGMOM = 2*0.6 8*2.0 表示前2个原子磁矩为0.6,后8个为2.0。 |
ISPIN |
自旋极化计算 | 1: 非自旋极化。2: 自旋极化,当设置 MAGMOM 时,通常会自动设为 2。 |
KPOINTS 文件详解
KPOINTS 文件定义了布里渊区的 k 点取样,最常用的是 Monkhorst-Pack 网格。

文件格式 (通常为 4 行):
0 // 格式标记: 0 表示 Gamma 中心网格,1 表示 Monkhorst-Pack 网格
0 0 0 // K 点偏移量 (通常为 0 0 0)
4 4 4 // 沿 a, b, c 晶格方向的 k 点数
0 // 0 表示自动生成权重为 1 的 k 点网格
如何选择 k 点数?
- 经验法则:
k 点数 ≈ 100 / 原胞中的原子数,这是一个粗略的起点。 - 测试收敛性: 这是最可靠的方法,先用较稀疏的 k 点网格 (如 3x3x3) 计算得到一个能量值
E1,然后用更密的网格 (如 6x6x6) 计算E2。|E1 - E2|小于您关心的精度 (1 meV/atom),则认为 k 点网格已经收敛。 - 金属: 需要足够密的 k 点来精确描述费米面附近的态。
- 半导体/绝缘体: 在 Γ 点处能带不连续,k 点密度要求相对较低,但计算态密度时仍需足够密。
POSCAR 文件详解
POSCAR 文件定义了晶胞结构和原子位置。
文件格式 (以硅的立方晶胞为例):

Silicon cubic // 注释行 (第一行),任意
5.430 // 晶格常数 (Å)
1.0 0.0 0.0 // 晶格向量 a
0.0 1.0 0.0 // 晶格向量 b
0.0 0.0 1.0 // 晶格向量 c
Si // 原子元素种类列表 (顺序很重要)
2 // 每种元素的原子个数
Selective dynamics // 原子优化标记 (可选)
Direct // 坐标系类型 (Direct=分数坐标, Cartesian=笛卡尔坐标)
0.25 0.25 0.25 // 第1个 Si 原子的位置
0.75 0.75 0.75 // 第2个 Si 原子的位置
关键点:
- 注释行: 任意字符串,用于标识结构。
- 晶格常数: 可以是单个标量 (立方晶胞) 或三个分量 (正交晶胞),也可以是完整的 3x3 矩阵 (任意晶胞)。
- 原子种类和数量: 必须一一对应。
- Selective dynamics: 如果有这一行,则下一行的坐标标记 (F/T 或 K/F) 决定了该原子在弛豫时是否被优化。
T或K表示优化,F表示固定。 - 坐标系:
Direct是分数坐标 (相对于晶格向量),Cartesian是笛卡尔坐标 (Å),VASP 默认是Direct。
实用技巧和脚本
生成 KPOINTS 文件
使用 vaspkit 工具可以非常方便地生成 KPOINTS 文件。
# 在 vaspkit 目录下运行 ./vaspkit # 根据菜单提示选择选项,41 (生成 Monkhorst-Pack 网格)
批量运行和监控
job.sh 脚本示例:
#!/bin/bash
#SBATCH --job-name=VASP_JOB
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=16
#SBATCH --partition=cpu
#SBATCH --time=24:00:00
# mpirun 命令会由 SLURM 自动替换
mpirun -np 16 vasp_std
# 计算完成后,检查收敛性
echo "Job finished. Checking convergence..."
grep "reached required accuracy" OUTCAR > /dev/null
if [ $? -eq 0 ]; then
echo "Calculation converged successfully."
else
echo "Warning: Calculation did not converge!"
fi
监控计算进度:
# 实时显示 OUTCAR 文件的最后几行,查看能量变化 tail -f OUTCAR # 查看电子步循环进度 grep "E=" OUTCAR # 查看离子步进度 grep "F=" OUTCAR
后处理分析
vaspkit: 强大的后处理工具,可以提取能量、生成态密度图、绘制能带结构、输出用于 VESTA 可视化的文件等。p4vasp: 图形化界面,方便查看结构、电荷密度、波函数等。pymatgen/ASE: Python 库,用于自动化分析和处理 VASP 输出。
常见问题与错误
-
错误
ZBRENT或BRMIX:- 原因: 电子步自洽循环不收敛。
- 解决方法:
- 增加
NELM(最大电子步数)。 - 尝试不同的
ALGO(如从Normal改为Damped或VeryFast)。 - 调整
EDIFF(放宽收敛标准)。 - 检查
ENCUT是否足够大。 - 尝试不同的
ISMEAR和SIGMA。
- 增加
-
错误
RBREAK:- 原因: 离子步弛豫不收敛。
- 解决方法:
- 检查
EDIFFG的设置是否合理。 - 减小
POTCAR中的EDIFFG(在INCAR中设置更严格的EDIFFG)。 - 尝试使用
IBRION = 5。 - 检查初始结构是否合理,原子是否离得太近。
- 检查
-
Fatal error: PREC-AUTO does not work with mixed k-point grids:- 原因: 在
KPOINTS文件中手动指定了权重不为 1 的 k 点,但INCAR中使用了PREC = Auto。 - 解决方法: 在
INCAR中设置PREC = Accurate或Normal。
- 原因: 在
-
计算结果不收敛 (能量/力的变化很大):
- 原因: k 点网格或
ENCUT没有收敛。 - 解决方法: 进行 k 点和
ENCUT的收敛性测试。
- 原因: k 点网格或
学习资源
- VASP 官方手册: https://www.vasp.at/wiki/index.php/The_VASP_Manual (最权威的资料)
- VASP 官方论坛: https://www.vasp.at/forum/ (遇到问题可以在这里搜索或提问)
- vaspkit 官网: http://vaspkit.com/ (包含大量教程和脚本)
- 教程: 搜索 "VASP tutorial",有大量大学和机构发布的优秀入门教程。
希望这份详细的指南能帮助您更好地使用 VASP!祝您计算顺利!
