py4vasp 势场分量与截面图
读取NaCl实际总势、离子势、Hartree势和交换关联势,画截面并核对单位。
阅读本篇目录
读取NaCl实际总势、离子势、Hartree势和交换关联势,画截面并核对单位。先用实际数据完成提取和绘图,再按相同顺序准备自己的计算。
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. 从收敛电荷输出势场#
本例为两原子NaCl原胞,晶胞体积46.29825 ų,64³势网格。先前已完成550 eV静态计算,本次直接沿用相同结构、PAW、k网格及收敛CHGCAR,以固定电荷后处理输出势场。VASP6.6.1 CPU/HDF5构建采用Intel oneAPI2024.2、MPI、HDF51.14.6。ALGO=None的日志可能仍有NONE记账行,这不表示又做了电子对角化。
关键设置:
ALGO = None
ICHARG = 11
ISTART = 0
WRT_POTENTIAL = total hartree ionic xc
准备自己的计算时,先复制同一结构、同一PAW和参数产生的CHGCAR,再提交VASP作业。不要用不同晶胞的电荷文件,也不要把本包的读取载体交给VASP续算。WRT_POTENTIAL输出前提见VASP官方说明。
3. 用安装版本的接口读取#
先完成第1节的 bash run.sh,然后在资料根目录执行:
module load py4vasp/0.11.3
python - <<'PYCODE'
import numpy as np
import py4vasp
c = py4vasp.Calculation.from_path('work/NaCl-potential')
p = c.potential.read()
for name in ['total', 'ionic', 'hartree', 'xc']:
print(name, p[name].shape, p[name].min(), p[name].max())
print('分量和误差/eV:', np.max(np.abs(
p['total']-p['ionic']-p['hartree']-p['xc'])))
fig = c.potential.to_contour('total', c=0.5).to_plotly()
fig.write_html('NaCl-total.html', include_plotlyjs='cdn')
PYCODE
0.11.3先用read()读字典,再取p['total'];不要照搬其他版本的read('total')语法。本例四分量加和的最大误差为 1.42×10⁻¹¹ eV,离子势和Hartree势分别采用G=0为零的约定。势的单位已经是eV,不除晶胞体积或网格点数。单个分量的绝对零点有约定,不应直接解释为材料对真空的能级。
4. 看懂截面图#

图取分数坐标c=0.5面。横纵坐标分别是晶格a、b方向的分数坐标;这是斜晶格上的参数平面,不能把它当作正交笛卡尔距离。色标采用保留正负号的对称对数,便于同时看近核峰和远场变化。每幅图保留各自单位和色标,不把不同分量的颜色直接当作相同数值。
数值在results/data/NaCl-potentials.npz,原生交互图在tools-output/NaCl-potential.html。想求真空能级和功函数,继续看表面功函数。
完整计算输入#
下列为对应原生计算的输入,PAW和前置电荷/波函数请按正文说明自行准备。后处理包默认不运行这些计算。
INCAR(完整)
SYSTEM=NaCl-actual-potential-postprocess
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
LAECHG=.FALSE.
LELF=.FALSE.
NPAR=1
NGXF=64
NGYF=64
NGZF=64
ICHARG=11
ISTART=0
WRT_POTENTIAL=total hartree ionic xc
POSCAR(完整)
Cl Na
1.0000000000000000
0.0000000000000000 2.8500000000000001 2.8500000000000001
2.8500000000000001 0.0000000000000000 2.8500000000000001
2.8500000000000001 2.8500000000000001 0.0000000000000000
Cl Na
1 1
Direct
-0.5000000000000000 0.5000000000000000 0.5000000000000000
0.0000000000000000 0.0000000000000000 -0.0000000000000000
KPOINTS(完整)
Gamma mesh
0
Gamma
7 7 7
0 0 0