VASP HDF5结果与py4vasp提取
用硅的实算文件,提取能量、原子力和DOS,减少手工复制结果。
阅读本篇目录
批量整理VASP结果时,可以用py4vasp直接读取HDF5结果,再保存为JSON或表格。本例用2原子的Si原胞演示,从提交计算到得到可画图的数据。
1. 使用支持HDF5的VASP模块#
附件run.sh加载vasp/6.6.1-p100-hdf5,采用PBE PAW64 Si、550 eV、11×11×11 k网格、EDIFF=1E-6。构建使用NVHPC 25.3、CUDA 12.8、MKL 2023.2及配套MPI,并启用HDF5支持。
在计算目录准备POTCAR后执行sbatch run.sh。任务正常结束后确认vaspout.h5存在。普通文本输出仍可用于检查电子收敛。
本例还设置LH5=.TRUE.、LWAVE=.FALSE.、LCHARG=.FALSE.。注意LH5控制波函数/电荷输出使用vaspwave.h5还是传统文件格式,不应把它理解为生成vaspout.h5的唯一开关。这个例子关闭波函数和电荷保存,只提取能量、力和DOS。详见VASP LH5说明。
2. 读取三个常用结果#
加载module load py4vasp/0.11.3。可以直接使用附件extract_hdf5.py,也可以在自己的Python脚本中写:
import py4vasp
calculation = py4vasp.Calculation.from_path("calculations/si-hdf5-export")
energy = calculation.energy.read()
force = calculation.force.read()
dos = calculation.dos.read()
print(energy)
路径指向包含vaspout.h5的目录。energy返回不同能量口径;force包含结构和原子力;dos包含能量网格、总态密度与费米能。接口细节见py4vasp DOS文档。
3. 对照本次实算数据#
| 项目 | 结果 |
|---|---|
| TOTEN / eV | −10.849629465244 |
| energy without entropy / eV | −10.849629465242 |
| energy(sigma→0) / eV | −10.849629465243 |
| 原子数 | 2 Si |
这里三个能量几乎一致,不代表所有金属展宽计算都如此。对同一批能量差,应一直使用同一口径。

图中能量以费米能为零;py4vasp的DOS接口已给出相对费米能的energies,不要再次减fermi_energy。这个SCF例子用于说明数据读取,若要更平滑的DOS,应继续增加k网格、调整能量采样并检查展宽方法。
4. 保存成自己的数据文件#
附件脚本将NumPy数组转换成普通列表,再写入hdf5-results.json,方便后续画图。参考RESULTS.json来自本次集群计算;重新运行提取脚本会生成自己的输出,不会重算VASP。
如果某个物理量没有计算、版本不支持或未写入HDF5,读取对应接口不会自动补算。先检查INCAR、VASP版本与文件内容,再选择适合的提取项。不要把包含授权势数据或大体积波函数的原始文件直接作为公开附件。
输入和结果下载#
本页数据来自鸢算科技集群实算。附件提供输入、提交脚本、参考结果与提取脚本,不包含POTCAR;请准备有权使用的同一套PAW64 PBE势文件,顺序与POSCAR一致。每个计算目录执行sbatch run.sh,计算结束后再提取自己的结果。参考JSON和图片不会随新作业自动改变。