VASP四大输入文件详解:POSCAR、POTCAR、KPOINTS、INCAR
前言
VASP(Vienna Ab initio Simulation Package)是材料计算领域最常用的第一性原理软件之一。学会VASP,第一步就是理解它的四大输入文件。这篇文章将逐一剖析每个文件的作用、格式和常见配置。
一、VASP计算的整体流程
在深入文件之前,先理解VASP的工作流程:
输入文件 → VASP计算 → 输出文件
↓
POSCAR(结构)
POTCAR(赝势)
KPOINTS(k点)
INCAR(参数)
VASP读取这四个文件,进行自洽计算,输出能量、能带、电荷密度等结果。
二、POSCAR:晶体结构文件
2.1 基本格式
POSCAR描述的是晶胞的几何信息。标准格式:
注释行(可选)
晶格常数缩放因子
第一行晶格向量
第二行晶格向量
第三行晶格矢量
元素符号(VASP 5.2+)
每种元素的原子数
坐标类型(Selective Dynamics可选)
原子坐标
2.2 实例:Si晶胞
Silicon diamond structure
5.43
0.5 0.5 0.0
0.0 0.5 0.5
0.5 0.0 0.5
Si
2
Direct
0.00 0.00 0.00
0.25 0.25 0.25
逐行解释:
- 第1行:注释,可以是任意文字
- 第2行:缩放因子5.43 Å(对于Si,这是晶格常数)
- 第3-5行:晶格向量(这里是FCC基矢)
- 第6行:元素符号(VASP 5.2之后版本需要)
- 第7行:每个元素的原子数(这里是2个Si)
- 第8行:坐标类型(Direct=分数坐标,Cartesian=笛卡尔坐标)
- 第9-10行:原子坐标
2.3 Direct vs Cartesian
- Direct(分数坐标):以晶格矢量为基,数值在0-1之间
- Cartesian(笛卡尔坐标):以Å为单位,真实空间坐标
转换公式:
rcart=rdirect⋅a1+rdirect⋅a2+rdirect⋅a3\mathbf{r}{cart} = \mathbf{r}{direct} \cdot \mathbf{a}1 + \mathbf{r}{direct} \cdot \mathbf{a}2 + \mathbf{r}{direct} \cdot \mathbf{a}_3rcart=rdirect⋅a1+rdirect⋅a2+rdirect⋅a3
2.4 Selective Dynamics
如果你想固定某些原子(比如表面计算固定底层原子):
Selective Dynamics
Direct
0.00 0.00 0.00 F F F
0.25 0.25 0.25 T T T
T表示该方向可以移动,F表示固定。
三、POTCAR:赝势文件
3.1 什么是赝势?
真实的原子核附近电子波函数振荡剧烈,需要很大的平面波基组才能描述。赝势的思想是:
把芯电子和原子核一起等效为一个"赝原子核",只显式计算价电子。
3.2 如何生成POTCAR
VASP提供了标准赝势库,用cat命令合并:
bash
cat /path/to/POTCAR/Si/POTCAR > POTCAR
# 或者多元素
cat /path/to/POTCAR/Ga/POTCAR /path/to/POTCAR/As/POTCAR > POTCAR
关键:POTCAR中元素的顺序必须与POSCAR一致!
3.3 POTCAR包含的信息
打开POTCAR可以看到:
- 赝势类型(PAW、USPP等)
- 泛函类型(PBE、LDA等)
- 价电子数
- 截断能建议值(ENMAX)
3.4 检查POTCAR
bash
grep ENMAX POTCAR
输出每个元素的截断能建议值。
四、KPOINTS:布里渊区采样
4.1 k点的作用
布里渊区积分需要离散采样,k点网格决定了采样密度。网格越密,结果越精确,计算量越大。
4.2 常用格式:Monkhorst-Pack网格
K-Points
0
Monkhorst-Pack
4 4 4
0 0 0
解释:
- 第1行:注释
- 第2行:0表示自动生成
- 第3行:生成方法(Monkhorst-Pack是最常用的)
- 第4行:k点网格(4×4×4)
- 第5行:偏移量(通常设为0)
4.3 k点密度如何选择?
经验规则:
- 金属:需要密集k点(如8×8×8或更高)
- 半导体/绝缘体:可以用较稀疏网格(如4×4×4)
- 大超胞:k点可以更少(如2×2×2或Γ点)
收敛性测试:
逐步增加k点密度,观察能量变化。当能量变化<1 meV/atom时,认为收敛。
4.4 能带计算的KPOINTS
能带计算需要沿高对称路径采样:
Line-mode
10
Line
0.0 0.0 0.0 Γ
0.5 0.0 0.0 X
0.5 0.5 0.0 M
0.0 0.0 0.0 Γ
五、INCAR:计算参数控制
INCAR是最复杂的输入文件,控制计算类型、收敛标准、泛函选择等。
5.1 基本参数
bash
# 系统描述
SYSTEM = Si calculation
# 计算类型
ENCUT = 400 # 平面波截断能(eV)
PREC = Accurate # 精度设置
EDIFF = 1E-6 # 电子步收敛标准
EDIFFG = -0.01 # 离子步收敛标准(负值表示力)
IBRION = 2 # 离子优化算法(2=CG)
ISIF = 3 # 应力张量优化(3=优化晶胞形状和体积)
NSW = 100 # 最大离子步数
ISMEAR = 0 # 展宽方法(0=高斯)
SIGMA = 0.05 # 展宽宽度(eV)
5.2 关键参数详解
ENCUT(截断能)
- 决定平面波基组大小
- 建议:取POTCAR中ENMAX的1.3-1.5倍
- 太小:结果不准确
- 太大:计算量增大,精度提升有限
ISMEAR(展宽方法)
0:高斯展宽(半导体、绝缘体)1:Methfessel-Paxton(金属)-5:四面体法(能带、DOS计算)
ISIF(优化自由度)
2:固定晶胞形状和体积,只优化原子位置3:优化原子位置和晶胞4:优化原子位置和晶胞形状,固定体积7:只优化晶胞形状和体积(固定原子)
IBRION(离子步算法)
-1:不进行离子步(单点能计算)0:分子动力学1:RMM-DIIS(快速但可能不稳定)2:共轭梯度法(稳健,推荐)3:Damped MD
5.3 常见计算场景配置
单点能计算
bash
ENCUT = 400
PREC = Accurate
EDIFF = 1E-6
IBRION = -1
结构优化
bash
ENCUT = 400
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.01
IBRION = 2
ISIF = 3
NSW = 100
能带计算
bash
ICHARG = 11 # 从CHGCAR读取电荷密度
ISMEAR = 0
SIGMA = 0.01
LORBIT = 11 # 输出投影能带
六、文件间的关联
四个文件不是独立的,需要互相匹配:
| 文件 | 关联 |
|---|---|
| POSCAR ↔ POTCAR | 元素顺序必须一致 |
| POSCAR ↔ KPOINTS | k点密度应与晶胞大小匹配 |
| POTCAR ↔ INCAR | ENCUT ≥ ENMAX |
| INCAR ↔ KPOINTS | ISMEAR设置应与k点密度匹配 |
七、常见错误与调试
7.1 POSCAR错误
- 对称性问题:检查ISYM参数
- 原子重叠:检查坐标是否正确
- 晶格矢量为0:检查缩放因子
7.2 POTCAR错误
- 元素顺序不匹配:最常见错误!
- 截断能过低:提高ENCUT
7.3 KPOINTS错误
- k点过少:能量不收敛
- 金属展宽过大:SIGMA值需调整
7.4 INCAR错误
- 参数冲突:如ICHARG=11但无CHGCAR
- 收敛标准过松:结果不可靠
- 收敛标准过紧:计算永远不收敛
八、实用工具推荐
VESTA
可视化POSCAR,检查结构是否正确。
VASPKIT
自动生成KPOINTS、转换文件格式。
pymatgen
Python库,可编程处理VASP文件。
写在最后
四大输入文件是VASP计算的基础,理解它们的格式和参数含义是进行可靠计算的前提。建议新手:
- 用简单体系(Si、GaAs)练手
- 对照文献检查参数设置
- 做收敛性测试
- 养成记录参数的习惯
下一篇文章,我们将深入能带结构计算的细节。
参考文献
- Kresse, G., & Furthmüller, J. (1996). Physical Review B, 54(16), 11169.
- VASP Manual: https://www.vasp.at/wiki/