py4vasp读取HDF5、能带与DOS
从真实Si结果读取结构能量、投影能带和DOS,说明路径与费米能。
阅读本篇目录
下载本篇输入、完整脚本、数据与高清图。解压后在新目录运行,reference保存鸢算科技实际运行的参考结果。
1 从HDF5结果读取#
py4vasp不代替VASP求解,它读取VASP的HDF5结果。本例使用py4vasp 0.11.3、VASP 6.6.1的P100 HDF5构建;后处理只需CPU。VASP编译环境为NVHPC 25.3/CUDA 12.8,需使用带HDF5支持的模块。
下载包提供已计算的结构、OUTCAR和整理后的HDF5,可直接运行:
bash run.sh
只运行py4vasp示例:
mkdir py4vasp
cp -a inputs/py4vasp py4vasp/input
cp py4vasp_examples.py py4vasp/
cd py4vasp
/public/toolkit/miniconda3/envs/py4vasp/bin/python py4vasp_examples.py
输入文件中的赝势内容已从HDF5副本排除,保留本文读取所需的科学结果。重算时应使用你获授权的赝势。
2 结构、总能、力和应力#
import py4vasp
c = py4vasp.Calculation.from_path('input/si-optics-hdf5')
structure = c.structure.read()
energy = c.energy.read()
forces = c.force.read()['forces']
stress = c.stress.read()['stress']
print(energy)
Si原胞含2个原子,体积 40.89273224 ų,总能 −10.8496295280 eV,与OUTCAR显示精度内一致。三个对角应力均约 −0.132356 kbar。结构的positions是分数坐标,需乘晶胞矩阵才是Å坐标;力为eV/Å,VASP应力为kbar。
优先用from_path()指定计算目录,程序会按不同物理量寻找相应HDF5文件。把所有读取强制指向vaspout.h5可能漏掉保存在vaspwave.h5中的密度。
3 真正的路径能带#
本次先有收敛电荷,再用ICHARG=11进行非自洽路径计算。KPOINTS保留每段20点:
Si Gamma-X-L
20
Line-mode
Reciprocal
0 0 0 ! GAMMA
0.5 0 0.5 ! X
0.5 0 0.5 ! X
0.5 0.5 0.5 ! L
c = py4vasp.Calculation.from_path('input/si-bands-hdf5')
b = c.band.read()
projected = c.band.read('Si(p)')
print(b['bands'].shape, projected.keys())
实际输出40个k点、32条能带。两段的公共端点分别保存,因此不是39点。常规SCF的三维k网格也有本征值,但不能随意连成高对称路径能带。
4 DOS与投影选择#
c = py4vasp.Calculation.from_path('input/si-optics-hdf5')
d = c.dos.read('Si(s,p)')
print(d['energies'], d['total'], d['Si_s'], d['Si_p'])
投影需要计算时已有相应输出,本例LORBIT=11。py4vasp返回的能带和DOS能量轴已经按费米能移动,另保留原始fermi_energy;不要再重复减一次。

图中能带与DOS分别使用适合各自任务的计算结果。DOS尖峰还受k点密度和展宽影响,本篇演示读取与画图,精细谱形研究应进一步做收敛。