py4vasp专题

py4vasp Γ点能量修正

用实际Fan和DW重建选定两态能量差,区分Γ点差与缺失的基本带隙输出。

更新于 2026-11-05约 4 分钟阅读按任务与环境选择适用配置
阅读本篇目录

本篇处理鸢算科技集群已经完成的两份Si电声耦合结果:原生VASP6.6.1-P100-HDF5,NVHPC25.3/CUDA12.8构建;后处理使用py4vasp0.11.3,绘图使用ASE3.29环境中的NumPy/Matplotlib。以下命令只读已有数据,1个CPU即可,不启动VASP,不需要GPU。

下载两份HDF5、输入记录、实际数值与绘图脚本,在新目录:

unzip py4vasp-elph-selfenergy-practical*.zip -d elph-example
cd elph-example
module load py4vasp/0.11.3
bash run.sh

输出analysis/selfenergy.csv(60行)、analysis/chemical-potential.csv(6行)、analysis/RESULTS.json及4图。已有analysis时不覆盖;重新操作请另解压一份。其他电脑已安装py4vasp0.11.3、h5py、NumPy和Matplotlib,可用PY4PY=python3 PLOTPY=python3 bash run.sh。

公开HDF5重新打包并移除了整个POTCAR组,其余科学数据与原文件相同;不含POTCAR、WAVECAR、VASP程序或phelel势导数档案。本包是后处理资料。需要从头计算电声耦合时,按VASP原生电声耦合流程准备本人的授权程序和前置数据。

1. 本例可以重建什么能量差#

在同一Γ点,取第5带与第4带的Kohn–Sham能量,加各自自能实部修正后相减:

ΔΓ(T) = [ε5 + ReΣ5(T)] - [ε4 + ReΣ4(T)]
ReΣ = Re(Fan) + DW

这是固定晶胞、选定两态的在壳能量差参考。它不是遍历全布里渊区得到的基本带隙,也没有包含热膨胀或完整准粒子方程求解。

python - <<'PYDATA'
import json
r=json.load(open('analysis/RESULTS.json'))
a=r['si-selfen6']['accumulators'][0]
print('bare Gamma:',a['bare_Gamma_b5_minus_b4_eV'])
for t,e in zip(a['temperatures_K'],a['corrected_selected_Gamma_b5_minus_b4_eV']):
    print(t,e)
PYDATA

2. 实际网格和δ对照#

主计算为4×4×4网格,电子–声子稠密网格分别为6×6×6和8×8×8;每份文件各有δ=0.05/0.10eV两组。以下是从同一批真实数组提取的选定Γ点能量差:

稠密网格 δ / eV 0K / eV 300K / eV 600K / eV
6×6×6 0.05 2.48496165 2.45684502 2.39592926
6×6×6 0.10 2.48163848 2.45390805 2.39360868
8×8×8 0.05 2.50475314 2.47697477 2.42377468
8×8×8 0.10 2.49596115 2.46800758 2.41439087

固定晶胞下选定Γ点第5–4带的实际在壳修正

裸的Γ点差约2.538833eV。表格多位小数便于核对文件,不代表材料预测精度。网格与δ改变后结果仍有差异,不能把本页三点温度曲线当作Si的收敛实验带隙温度关系。

3. 查看产生这些数据的输入记录#

cat inputs/si-selfen6/INCAR
cat inputs/si-selfen6/KPOINTS_ELPH

关键设置为:

NBANDS = 24
ELPH_RUN = .TRUE.
ELPH_SELFEN_IKPT = 1
ELPH_SELFEN_BAND_START = 4
ELPH_SELFEN_BAND_STOP = 5
ELPH_MODE = RENORM
ELPH_DRIVER = EL
ELPH_NBANDS = 16
ELPH_SELFEN_GAPS = .FALSE.
ELPH_SELFEN_TEMPS = 0 300 600
ELPH_SELFEN_DELTA = 0.05 0.10

NBANDS控制主计算的带数,ELPH_NBANDS控制稠密电子–声子步骤,含义不同。实际输出包含1–5带,后处理按原生映射选第4/5带。KPOINTS_ELPH内容例如:

Dense mesh
0
Gamma
6 6 6
0 0 0

这是数据来源说明,不是把这些行单独交给VASP就能重算;需要前置的phelel势导数等资料,完整链条见VASP自能与线宽。

4. 为什么bandgap接口有2个累加器,却没有带隙数组#

python - <<'PYDATA'
import py4vasp
c=py4vasp.Calculation.from_path('inputs/si-selfen6')
g=c.electron_phonon.bandgap
print(g.read())
print(g[0].to_dict())
print(len(c.electron_phonon.transport))
PYDATA

本例bandgap累加器计数为2,但direct、direct_renorm、fundamental、fundamental_renorm均为None;输运实例数为0。这与本例手动选态、ELPH_SELFEN_GAPS=.FALSE.的使用场景相符。不能只据计数非零就发布“基本带隙”,也不能将本页自己构造的Γ点差填回这些缺失字段。

需要基本带隙重整化时,应先按VASP带隙重整化说明选择正确状态和计算模式,再检查原生结果确实存在;新的结果仍需各项收敛。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗