示例 18:后处理与自动化工具箱(py4vasp / pymatgen / ASE / custodian / atomate2 / vaspkit)¶
目的¶
- 提供可直接复用的后处理脚本和笔记本:py4vasp 读 vaspout.h5、pymatgen 解析 vasprun.xml/OUTCAR、ASE 驱动 VASP;
- 提供自动化模板:Slurm 作业数组、custodian 自动纠错、atomate2 工作流;
- 提供速查资料:VASPKIT 命令行速查、常见报错对照表、VASP 项目的
.gitignore模板。
对应教程:第18章 后处理生态、自动化与报错排查。
文件说明¶
| 文件 | 说明 | 依赖 |
|---|---|---|
py4vasp_quickstart.ipynb |
结构、能量、能带、DOS、带隙、STM、导出图片与 CSV | VASP 带 HDF5 编译;pip install py4vasp kaleido |
pymatgen_parse_vasprun.py |
收敛性、能量、带隙、磁矩、耗时;--band 画能带、--dos 画分元素 DOS、--json 输出摘要 |
pip install pymatgen |
ase_vasp_calculator_example.py |
用 ASE 的 Vasp 计算器做 Si 的 E–V 扫描并拟合;--dry-run 只写输入;--neb-demo 演示 IDPP 插值 |
pip install ase;VASP_PP_PATH、ASE_VASP_COMMAND |
custodian_run.py |
带错误处理器(ZBRENT、BRMIX、EDDDAV 等)运行 VASP;--mode double 双重弛豫 |
pip install custodian pymatgen |
atomate2_relax_band.py |
双重弛豫 + 均匀网格与线模式能带的 atomate2 工作流,jobflow 本地执行 | pip install atomate2;~/.atomate2.yaml |
array_job.slurm |
Slurm 作业数组:每个子目录一个 VASP 计算,已完成的自动跳过 | Slurm |
vaspkit_cli_cheatsheet.md |
VASPKIT 1.5.x 配置、运行方式、功能编号速查 | VASPKIT |
error_table.md |
常见报错 → 原因 → 修复 对照表 | — |
.gitignore_vasp |
VASP 项目的 .gitignore 模板(POTCAR、WAVECAR、CHGCAR、vaspout.h5 等) |
— |
运行步骤¶
cd VASP/examples/18-postprocess-toolkit
# 1) pymatgen:解析任意已完成的计算目录
python pymatgen_parse_vasprun.py ../16-elf-si --json si_summary.json
python pymatgen_parse_vasprun.py /path/to/band_run --band # 线模式能带
python pymatgen_parse_vasprun.py /path/to/dos_run --dos # LORBIT = 11 的 DOS
# 2) py4vasp:在计算目录中启动 Jupyter 并打开笔记本
jupyter lab py4vasp_quickstart.ipynb
# 3) ASE:只写输入(需要 VASP_PP_PATH),或真正运行
export VASP_PP_PATH=/path/to/potentials
python ase_vasp_calculator_example.py --dry-run
export ASE_VASP_COMMAND="mpirun -np 8 vasp_std"
python ase_vasp_calculator_example.py
python ase_vasp_calculator_example.py --neb-demo # 写 neb/00..06/POSCAR
# 4) custodian:放在作业脚本中替代直接调用 mpirun
python custodian_run.py --cmd "mpirun -np 32 vasp_std"
# 5) 作业数组:每行一个目录
ls -d strain_* > dirs.txt
sbatch --array=1-$(wc -l < dirs.txt)%10 array_job.slurm
# 6) 把 .gitignore 模板加到自己的项目中
cat .gitignore_vasp >> /path/to/your/project/.gitignore
预期结果 / 如何检查¶
pymatgen_parse_vasprun.py打印converged_electronic/converged_ionic均为 True,未收敛时会给出警告;ase_vasp_calculator_example.py --dry-run在ev_*目录中写出 INCAR、KPOINTS、POSCAR、POTCAR(以及 ASE 的ase-sort.dat),不调用 VASP;真正运行后打印 V0、a0、B0 并保存si_eos.png;- custodian 运行后生成
custodian.json,记录每次检测到的错误与所做的 INCAR/KPOINTS 修改; - 作业数组中每个子目录生成自己的
vasp.out,重复提交时已完成的目录会被跳过。
注意事项¶
- 所有脚本都不包含也不下载 POTCAR;ASE、pymatgen、atomate2 需要指向你本地合法获得的赝势库;
- custodian 会自动修改 INCAR/KPOINTS 并备份旧文件(
error.N.tar.gz),提交前先确认这些自动修改在物理上是可接受的; - py4vasp 需要 vaspout.h5,旧版本或未开启 HDF5 的 VASP 无法使用,此时改用 pymatgen/vaspkit;
- 笔记本和脚本只用于读取和作图,不要把 vaspout.h5、vasprun.xml 等大文件提交到仓库。