py4vasp专题

py4vasp 表面功函数

用Cu(111)平面平均势识别真空平台,读取费米能并分别计算两侧功函数。

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

用Cu(111)平面平均势识别真空平台,读取费米能并分别计算两侧功函数。先用实际数据完成提取和绘图,再按相同顺序准备自己的计算。

1. 先用现成数据走通流程#

下载真实空间数据与终端实操包,解压进入资料目录:

unzip py4vasp-realspace-practical-wave289-*.zip
cd py4vasp-realspace-practical-wave289
bash preview.sh

先在 preview/figures/ 看5张静态图,再执行:

bash run.sh
ls results/data
ls tools-output

run.sh依次准备读取载体、提取数值、调用py4vasp原生绘图、生成静态PNG。四步也可分开运行 bash prepare.sh、bash extract.sh、bash tools.sh、bash plot.sh。脚本保护已存在的输出,重复操作请换一个新解压目录。后处理使用已分配资源内1个CPU;不会重新运行VASP,也不需要GPU。

后处理模块为 py4vasp/0.11.3(Python3.11独立环境);静态图用 pymatgen/2026.9.24 环境的NumPy2.3.5、Matplotlib3.11.2。HTML用浏览器打开,通过CDN加载Plotly;离线查看可直接用PNG。

包内 carriers/*.npz 是本次实际计算导出的自有数值。prepare.sh在work/重建只包含指定数组的最小HDF读取载体,并写明来源;它不是原始完整VASP输出,也不能用来读取未提供的物性。包中不含PAW、波函数或VASP程序。reference/保留独立提取的数据,inputs/提供各例完整INCAR、POSCAR、KPOINTS。

2. 表面模型与势输出#

本例为5层Cu(111)对称薄层,z方向26.39472452 Å,薄层位于晶胞中央。沿用原收敛WAVECAR、CHGCAR、结构、PAW及k点,VASP6.6.1 CPU/HDF5执行固定电荷势后处理(oneAPI2024.2、MPI、HDF51.14.6)。关键参数如下:

ALGO = None
ICHARG = 11
ISTART = 1
LVHAR = .TRUE.
LVACPOTAV = .TRUE.
IDIPOL = 3
LDIPOL = .TRUE.
DIPOL = 0.5 0.5 0.5
WRT_POTENTIAL = total hartree ionic xc

LVHAR选择静电势用于真空平台;IDIPOL方向要与表面法向一致。这里的完整输入用于这份对称Cu薄层,不是任意带电/非对称薄膜的通用模板。自建表面需先收敛层数、真空厚度、k点及偶极修正,再比较功函数。官方功函数流程、LVACPOTAV解释了势参考与自动平均。

3. 读取曲线与费米能#

module load py4vasp/0.11.3
python - <<'PYCODE'
import py4vasp
c = py4vasp.Calculation.from_path('work/Cu-workfunction')
w = c.workfunction.read()
print('费米能/eV:', w['fermi_energy'])
print('自动真空诊断值/eV:', w['vacuum_potential'])
c.workfunction.to_plotly().write_html('Cu-profile.html', include_plotlyjs='cdn')
PYCODE

本例费米能为 0.03893792943 eV,保留原收敛计算的完整精度。金属有限k点上也可能存在最高占据/最低空态的间隔,不能据此把Cu称为有绝缘带隙。

4. 自动平均有警告时,自己选平坦真空区#

这次原始输出出现Did not find any points to average over,因此自动真空值约4.92105/4.92112 eV只作诊断。不要只因为接口能读取就直接采用。这里独立读取实际LOCPOT,沿表面平面平均,在预先选定的z/Lz=0.04–0.12及0.88–0.96两个真空窗口取均值;各窗口起伏小于0.02 eV,两个平台均值差也小于0.02 eV。

cat results/data/manual-workfunction.json
head -5 results/data/Cu-native-workfunction.csv
bash plot.sh

extract.py中对应计算可简写为:

# z与line来自LOCPOT独立平面平均后的CSV,Lz来自真实晶胞
mask = (z > 0.04*Lz) & (z < 0.12*Lz)
vacuum = line[mask].mean()
workfunction = vacuum - fermi_energy

两侧结果如下:

方向 真空平台/eV 功函数Φ=Vvac−EF/eV
下侧 4.92345350 4.88451557
上侧 4.92337657 4.88443864

Cu111真空窗口、费米能与实际功函数

右图放大真空平台,左图保留整个薄层势曲线。平台窗口必须远离原子与偶极不连续面;不要把本例窗口比例直接套给偏离晶胞中心的表面。以上是小模型的操作参考,两个面接近不等于层厚、真空、k点已经全部收敛。最终保留CSV、窗口范围、费米能来源,便于比较不同表面或吸附构型。

完整计算输入#

下列为对应原生计算的输入,PAW和前置电荷/波函数请按正文说明自行准备。后处理包默认不运行这些计算。

INCAR(完整)
SYSTEM=Cu-native-workfunction
ENCUT=550
PREC=Accurate
EDIFF=1E-6
EDIFFG=-0.02
IBRION=-1
NSW=0
ISIF=2
ISMEAR=0
SIGMA=0.05
LREAL=.FALSE.
LASPH=.TRUE.
LWAVE=.FALSE.
LCHARG=.FALSE.
NELM=160
ALGO=None
ISYM=2
LVHAR=.TRUE.
LORBIT=11
ISTART=1
ICHARG=11
NBANDS=33
LVACPOTAV=.TRUE.
IDIPOL=3
LDIPOL=.TRUE.
WRT_POTENTIAL=total hartree ionic xc
DIPOL=0.5 0.5 0.5
POSCAR(完整)
Cu
 1.0000000000000000
     2.5703489492249236    0.0000000000000000    0.0000000000000000
     1.2851744746124618    2.2259874866194220    0.0000000000000000
     0.0000000000000000    0.0000000000000000   26.3947245153332943
 Cu 
   5
Direct
  0.6666666666666642  0.6666666666666644  0.3410627374451473
  0.0000000000000000  0.0000000000000000  0.4203288858368925
  0.3333333333333357  0.3333333333333358  0.5000000000000000
  0.6666666666666642  0.6666666666666644  0.5796711141631075
  0.0000000000000000  0.0000000000000000  0.6589372625548526
Cartesian
  0.0000000000000000  0.0000000000000000  0.0000000000000000
  0.0000000000000000  0.0000000000000000  0.0000000000000000
  0.0000000000000000  0.0000000000000000  0.0000000000000000
  0.0000000000000000  0.0000000000000000  0.0000000000000000
  0.0000000000000000  0.0000000000000000  0.0000000000000000
KPOINTS(完整)
Gamma mesh
0
Gamma
9 9 1
0 0 0

继续阅读#

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

查看配图

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

100%查看原图 ↗