对应 vaspkit 1.5.1 的 Potential 菜单:422 Linear-Average Potential、 426 Work Function。
LOCPOT:VASP 的静电势文件(LVHAR = .TRUE.或默认输出均可);OUTCAR:用于读取E-fermi;也可用--fermi直接指定;EIGENVAL(可选):用于同时给出 VBM/CBM、电子亲和势与电离能。
| 文件 | 内容 |
|---|---|
PLANAR_AVERAGE.dat |
距离(Å) 平面平均势(eV) |
WORKFUNCTION.dat |
费米能级、真空能级、功函数(可选 EA/IE) |
workfunction.png |
--plot 时的势曲线 |
Φ = E_vacuum - E_Fermi
E_vacuum默认取平面平均势的最大值;--vacuum-window可以把最大值附近 的平台取平均,抑制单个网格点的噪声。- 对有限厚度的 slab,
LOCPOT必须包含足够厚的真空层;否则真空能级没有 平台,结果只是数值最大值,不具备物理意义。 - 若同时给出
EIGENVAL:- 电子亲和势
EA = E_vacuum - CBM; - 电离能
IE = E_vacuum - VBM。
- 电子亲和势
# 最常用:读 LOCPOT + OUTCAR,沿 z 平均
python workfunction/run_workfunction.py --locpot LOCPOT --outcar OUTCAR
# 指定费米能级,并给出 EA/IE
python workfunction/run_workfunction.py --locpot LOCPOT --fermi 3.656 --eigenval EIGENVAL
# 沿 x 方向,平滑真空平台并画图
python workfunction/run_workfunction.py --locpot LOCPOT --outcar OUTCAR \
--axis x --vacuum-window 0.05 --plot平面平均的定义为
V̄(z) = (1/Nx Ny) Σ_{x,y} V(x,y,z)
距离使用晶格矢量长度:d_k = |c|·k/Nz(沿 z)。x/y 方向同理。
示例包中没有可用的 LOCPOT,因此用解析解回归:
- 4×4×8 网格,z ∈ {0,1,6,7} 层势为 5.0 eV,其余为 0;
- 指定
E_F = 1.0 eV; - 期望
E_vacuum = 5.0 eV、Φ = 4.0 eV。
本实现输出与上述解析解一致(见 tests/test_all.py)。
- 只做平面平均,不做偶极修正;有偶极修正的 slab 需要先确认
LOCPOT的真空平台位置。 - 真空能级取最大值,适合两侧真空等价的对称 slab;非对称 slab 若两侧真空 能级不同,可分别截取两侧平台后手动相减。
- 电子亲和势/电离能需要与
LOCPOT同一体系、同一电荷状态的EIGENVAL。