vasptool应变、带边与形变势实操
用Si实际应变计算理解结构生成、带隙斜率、能量对齐和拟合范围。
阅读本篇目录
下载本篇完整输入、实际输出和绘图脚本。解压后执行 bash run.sh,可先从实际输出重建结果和四张图,不会启动VASP。
1 这个流程能做什么#
先对同一个Si参考结构施加三个小应变,分别运行VASP,再提取价带顶VBM、导带底CBM和带隙,观察它们随应变的变化。形变势中的导数必须写清应变方向与能量参考;本例先教会完整操作,不把未经能量对齐的带边斜率当作绝对形变势。
流程是:准备参考结构 → 生成应变结构 → 各点静态计算 → 提取本征值 → 画曲线并判断能否线性拟合。本例使用VASP6.6.1、oneAPI2024.2,实际4个MPI进程;vasptool为本地集成1.5.2。使用者须具备相应VASP和赝势使用权限。
2 准备Si原胞和静态输入#
在新解压目录操作:
module load vasptool/1.5.2
vasptool --version
vasptool --show-config
cat inputs/deformation-si/POSCAR
cat inputs/deformation-si/INCAR
实际POSCAR如下,长度单位为Å:
Si
1.0000000000000000
0.0000000000000000 2.7149999999999999 2.7149999999999999
2.7149999999999999 0.0000000000000000 2.7149999999999999
2.7149999999999999 2.7149999999999999 0.0000000000000000
Si
2
Direct
0.0000000000000000 0.0000000000000000 -0.0000000000000000
0.2500000000000000 0.2500000000000000 0.2500000000000000
INCAR如下:
SYSTEM = deformation-si
ENCUT = 500
EDIFF = 1E-6
PREC = Accurate
ISMEAR = 0
SIGMA = 0.05
ISPIN = 1
NSW = 0
IBRION = -1
LREAL = .FALSE.
LWAVE = .FALSE.
LCHARG = .FALSE.
EDIFF=1E-6控制电子收敛。这里研究固定结构的应变响应,NSW=0不优化原子;如果想算内部弛豫后的响应,需要在每个应变下固定晶胞优化原子,再做一致的静态计算。ENCUT=500和下面的网格只是本例设置,换材料后需要检查收敛。
KPOINTS为:
Gamma mesh
0
Gamma
5 5 5
0 0 0
3 用vasptool生成三档应变#
单轴x应变的 INPUT.in 为:
1
3D
3
-0.01 0.00 0.01
1 0 0 0 0 0
第一行1表示准备结构;3表示三个应变点;最后一行指定仅沿笛卡尔x方向施加正应变。正负0.01分别为拉伸、压缩1%。三维非正交晶胞也应按实际笛卡尔应变矩阵检查,不能只凭晶格矢量长度判断。
完整包可一次准备两个Si系列及后文GaN系列:
python3 prepare_native.py
ls prepared/deformation-si
ls prepared/deformation-si-hydrostatic
这个脚本调用的实际原生入口是:
vasptool --feature deformation-potential
它在含POSCAR、INCAR、KPOINTS、POTCAR和INPUT.in的目录执行;包内会从集群本地许可目录读取所需POTCAR,下载文件本身不包含赝势。先检查有效配置中的 AUTO_SUBMIT_JOB = .FALSE.。生成的三个目录是:
strain_-0.010
strain_0.000
strain_+0.010
各向同应变系列将INPUT.in最后一行换成 1 1 1 0 0 0。这代表每个笛卡尔轴都施加ε,体积变化约为3ε,不能把“每轴1%”写成“体积1%”。
4 提交计算并提取结果#
检查当前账户可用队列、模块和模板后提交:
cat submit-cpu.slurm
sbatch submit-cpu.slurm
squeue -u "$USER"
模板按集群CPU整节点规则申请56进程,顺序计算四组系列,其中GaN内部弛豫系列包含优化和最终静态两步。参考实算使用4MPI;进程数不同可能改变末位数值。队列不可用时应等待或使用与账户资源匹配的正式模板,不在登录节点自行启动生产模拟。
全部结束后:
bash analyze_results.sh
cat prepared/deformation-si/band-edges-independent.csv
cat prepared/deformation-si-hydrostatic/band-edges-independent.csv
本机915后处理在这组EIGENVAL上不能给出有效带边,因此附件直接读取原始EIGENVAL,并与vasprun.xml交叉检查本征值和占据数。不要把星号或非有限数值当作结果。默认 bash run.sh 已包含真实输出,可先跳过新计算学习提取过程。
5 实际结果与怎样读图#
| 每轴应变 | 单轴x带隙/eV | 各向同应变带隙/eV |
|---|---|---|
| −1% | 0.448237 | 0.518827 |
| 0 | 0.573708 | 0.573708 |
| +1% | 0.538134 | 0.625252 |

这里是固定5×5×5网格采样得到的PBE带隙,不是实验带隙,也不能用这三个点证明带隙已收敛。单轴结果在±1%内明显非线性,最大线性残差约53.68meV;这时应减小应变、增加点数并追踪带边,而不是只报告一条斜率。
各向同应变的带隙斜率为 5.32125eV/每轴单位应变,最大残差约1.112meV。换成每1%应变,斜率对应约0.05321eV;它是本例这条路径下的带隙导数。

单独VBM和CBM在不同体相计算间使用的是VASP内部能量参考。本包未做真空、芯能级或其他公共参照对齐,因此这些曲线适合检查流程,不能直接解释为收敛的绝对带边形变势。要研究二维体系相对真空的形变势,还需在一致真空层、偶极处理及静电势对齐下重新计算;能带极值和简并态也应单独跟踪。
6 最后得到哪些文件#
band-edges-independent.csv包含应变、VBM、CBM和带隙;SI-VALIDATION.json及SI-HYDRO-VALIDATION.json保存实际k点、占据、本征值对照和拟合信息;figures/si-gap-paths.png与si-band-edges.png可用于查看结果。绘图程序可在修改应变网格后继续使用,但三点示例不能替代参数收敛。