py4vasp专题

py4vasp STM恒高与等密度面

用Cu111真实选能窗密度生成恒高对比和等密度面起伏,讲清原生显示量、密度单位与高度坐标。

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

先有表面电子态,再选定费米能附近的能窗,最后用py4vasp提取恒高对比或等密度面起伏。本例使用鸢算科技集群实际计算的5层Cu(111),比较EF−0.5到EF与EF到EF+0.5 eV两种能窗。它是基于局域态密度的简化STM流程,不包含真实针尖态和完整隧穿矩阵元。

1. 下载数据,先看图再重画#

下载Cu表面STM实操包,在新目录解压:

unzip py4vasp-STM-practical-wave295-*.zip
cd py4vasp-STM-practical-wave295
bash preview.sh
bash run.sh

preview/重画三张参考图;results/data/保存提取结果,tools-output/保存8个原生交互HTML,plots/保存重新生成的PNG,随包figures/可直接查看。输出目录受保护,重复运行请换新解压目录。

本步只用已分配资源内1个CPU后处理,不重新运行VASP。环境为py4vasp/0.11.3的Python3.11,以及pymatgen/2026.9.24中的NumPy2.3.5、Matplotlib3.11.2。carriers/保存实际计算导出的自有全分辨率数值与字段配方,运行时重建明确标记的最小HDF读取载体;它不是原始完整VASP输出,不含PAW、波函数或CHGCAR。

2. 准备表面电子态#

自己的体系先按需要优化原子位置与晶胞,再用一致的PAW、截断和k网格收敛电子态,保存WAVECAR。本例复用已有5层Cu111的电子态,550 eV、Gamma9×9×1、33条能带,原胞体积151.019121 ų,c方向真空约18 Å。原生LPARD使用VASP6.6.1 GPU/HDF5、NVHPC25.3、CUDA12.8,P100和V10016G单GPU运行。

实际Cu五层结构、探测平面与两能窗平面密度

图左将5原子原胞按2×2周期图像展示,并非新增20原子计算;图右保留真实平面平均。表面上方的2/3 Å要相对最高原子定义,不能直接取从晶胞原点量起的z=2/3 Å。

3. 在独立目录做能窗密度#

复制输入,保留原始SCF目录:

mkdir STM-filled
cp inputs/Cu-occupied-window/INCAR STM-filled/
cp inputs/Cu-occupied-window/POSCAR STM-filled/
cp inputs/Cu-occupied-window/KPOINTS STM-filled/
# 将自己匹配的POTCAR、WAVECAR、CHGCAR复制到STM-filled

使用普通复制,不把原SCF的CHGCAR软链接或硬链接到这个目录。 本例原生程序会重写任务目录中的CHGCAR,即使LCHARG为false。原SCF文件应留在原处,后续读取本任务的partial-density数据。

关键参数:

ISTART = 1
ICHARG = 11
LPARD = .TRUE.
LPARDH5 = .TRUE.
NBMOD = -3
EINT = -0.5 0
LSEPB = .FALSE.
LSEPK = .FALSE.

NBMOD=-3使EINT相对EF;另一份输入改成EINT=0 0.5。STM接口需要对能带和k点求和,所以这里两项LSEP均为false;不能把逐带4/5密度例中分开保存能带的设置原样套来。

在计算目录保存下面的submit.sh,提交前确认账户分区及软件模块:

#!/bin/bash
#SBATCH --partition=gpu-8p100-hs
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --gres=gpu:p100-16g:1
#SBATCH --time=00:15:00
source /etc/profile
module purge
module load vasp/6.6.1-p100-hdf5
export OMP_NUM_THREADS=1
ulimit -s unlimited
mpirun --bind-to none -np 1 vasp_std > vasp.log
cd STM-filled
sbatch submit.sh
tail vasp.log
ls -lh vaspout.h5

LPARD完成时会输出Finished calculating partial charge density并停止,不应只凭普通SCF迭代行判断这一步的输出。第二个能窗在自己的新目录独立提交,不覆盖第一个结果。

4. 提取恒高图#

在资料包根目录:

module load py4vasp/0.11.3
python - <<'PYCODE'
import py4vasp
c = py4vasp.Calculation.from_path('work/Cu-occupied-window')
print(c.partial_density.bands(), c.partial_density.kpoints())
g = c.partial_density.to_stm('constant_height(total)', tip_height=2, supercell=2)
g.to_plotly().write_html('STM-height.html')
PYCODE

tip_height单位Å,supercell=2只是横向显示2×2图像,不会扩展DFT计算。bands=[0]、kpoints=[0]表示已求和。py4vasp官方partial_density说明列出两种模式和可用设置。

两种实际能窗、两个高度的物理密度对比

本例FFT网格40×40×420,z步长约0.062845 Å。请求2/3 Å映射到最近原生网格后,实际为2.026508/2.969177 Å。图共用色标,既显示能窗差别,也保留离表面更远后密度减小的事实,不把每幅图各自拉满色阶制造对比。

5. 不把软件显示倍率当作实验电流#

本例原生部分电荷满足mean(raw)=50/81与8/9电子,分别对应两个能窗实际选中态的k点加权总量。物理密度为:

rho(e/ų) = raw / cell_volume(ų)

这些数值是选能窗的态权重,不是体系额外注入了相同数量的载流子。

当前0.11.3的to_stm恒高显示量还除以网格点数,并乘enhancement_factor。因此资料包保留原生HTML,同时用正确的rho单位画上面的静态密度图。增强因子只是软件显示倍率,不能据此宣称得到已标定的实验nA电流;更换版本时应重新核对读数约定。

6. 恒流模式读取的是等密度面起伏#

本例选择2 Å最近平面上平滑密度的中位数作为等密度面阈值;两能窗分别约0.00220944、0.000988381 e/ų。对于当前软件接口,把阈值映射成threshold/Ngrid*1E9传给其带nA标签的参数,使程序寻找相应密度面。这是本版接口的阈值映射,不是从密度推导实验电流的公式。

bash tools.sh
ls tools-output/*current*.html
head -9 results/data/Cu-STM-controls.csv

本版本恒流Graph数据来自缩放后的网格索引,不能直接给它贴Å标签。资料脚本按下面的关系转成物理相对高度:

height_Å = native_graph_data × c/Nz × interpolation_factor

高度以整幅图的最小值为零,不是绝对针尖z坐标。脚本还在上方真空中独立求解同一密度阈值的交点,核对这项转换。

实际等密度面相对起伏及原生与独立剖面对照

默认插值因子10与加密50都保留在数据中;因子50的垂直子网格步长约0.001257 Å,与独立交点的最大差约0.00125 Å。插值加密改善读取分辨率,不会创造新的电子结构信息。图中两个面板用各自色标,比较起伏大小应看数值;右图保留原生台阶,没有用平滑曲线替代。

默认Gaussian平滑的sigma是4个网格点,不是4 Å。实际研究需检查网格、平滑、真空、k点、能窗、空带及表面结构;这里不给出完整针尖、势垒或实验电流标定。

完整输入#

以下输入也保留在下载包中;PAW和匹配的前置电子态文件需自行提供。

Cu-occupied-window

INCAR

SYSTEM=Cu-occupied-window
ENCUT=550
PREC=Accurate
EDIFF=1E-6
NSW=0
IBRION=-1
ISMEAR=0
SIGMA=0.05
LREAL=.FALSE.
LASPH=.TRUE.
LWAVE=.FALSE.
LCHARG=.FALSE.
LH5=.FALSE.
ISTART=1
ICHARG=11
NBANDS=33
NSIM=1
ALGO=Normal
NELM=1
LPARD=.TRUE.
LPARDH5=.TRUE.
NBMOD=-3
EINT=-0.5 0
LSEPB=.FALSE.
LSEPK=.FALSE.

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
Cu-empty-window

INCAR

SYSTEM=Cu-empty-window
ENCUT=550
PREC=Accurate
EDIFF=1E-6
NSW=0
IBRION=-1
ISMEAR=0
SIGMA=0.05
LREAL=.FALSE.
LASPH=.TRUE.
LWAVE=.FALSE.
LCHARG=.FALSE.
LH5=.FALSE.
ISTART=1
ICHARG=11
NBANDS=33
NSIM=1
ALGO=Normal
NELM=1
LPARD=.TRUE.
LPARDH5=.TRUE.
NBMOD=-3
EINT=0 0.5
LSEPB=.FALSE.
LSEPK=.FALSE.

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

继续查看py4vasp功能索引。

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

查看配图

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

100%查看原图 ↗