VTST:电荷网格相加、加权与差分
用真实NaCl密度演示VTST逐网格运算、差分方向与电荷守恒。
阅读本篇目录
已经有VASP电荷密度,想把两个网格相加、按权重组合,或做差分,可以用VTST脚本。本例复用鸢算科技集群实际计算的NaCl两原子64³标量网格;不再重复DFT。
为了清楚看懂操作,B由A沿三个分数坐标各周期平移1/4得到,原子一起平移。它是已知的数值控制,不是发生吸附或成键后的电荷转移算例。
unzip vtst-charge-wave704-*.zip
cd vtst-charge
bash results.sh
bash plot.sh

1. 准备文件和环境#
module load vtstscripts/1040
ls inputs
VTST1040为Perl脚本,Python3.11、NumPy2.3.5和Matplotlib负责随包绘图。这里没有新增编译步骤。
NaCl晶胞体积46.29825ų,晶格矢量为:
0.00 2.85 2.85
2.85 0.00 2.85
2.85 2.85 0.00
每个输入含8个价电子,积分实际为7.9999998231。下载文件只保留首个标量网格,没有PAW增广区,因此用于演示后处理,不能作为VASP的CHGCAR重启输入。
实际材料做差分时,应保持晶胞、网格维数、网格原点、赝势与计算参数一致。吸附体系与两个组成部分要用相同晶胞和对齐的原子坐标,不能拿各自优化后不同晶胞的文件直接相减。
2. 先相加#
mkdir -p work/sum
cd work/sum
chgsum.pl ../../inputs/CHGCAR_A ../../inputs/CHGCAR_B
生成CHGCAR_sum。本例A+B积分为15.9999996462个电子。脚本做逐网格算术,不自动重新求自洽密度。
3. 加权组合#
另建目录避免覆盖同名输出:
cd ../..
mkdir -p work/weighted
cd work/weighted
chgsum.pl ../../inputs/CHGCAR_A ../../inputs/CHGCAR_B 0.25 0.75
得到0.25A+0.75B,积分仍为7.9999998231。chgsumf.pl可执行同样的加权运算,并采用另一种科学计数输出格式:
cd ../..
mkdir -p work/weighted-f
cd work/weighted-f
chgsumf.pl ../../inputs/CHGCAR_A ../../inputs/CHGCAR_B 0.25 0.75
格式不同不代表新的物理方法。
4. 注意差分顺序#
cd ../..
mkdir -p work/difference
cd work/difference
chgdiff.pl ../../inputs/CHGCAR_A ../../inputs/CHGCAR_B
这个版本产生CHGCAR_diff,方向为第二个文件减第一个文件,即B−A。本例积分约−4.4E-16个电子,整体守恒;图上同时有正区和负区。
电荷差分图必须写清减法方向。真实吸附差分通常按目标体系减组成部分密度;先确定所需表达式,再按本版本文件顺序组合,不能靠颜色猜正负。
5. 一次运行和绘图#
cd ../..
bash prepare.sh
sbatch postprocess.slurm
模板只申请1个CPU进程,进行这些短后处理及下一篇的Cube和点值操作。CPU分区可用时提交;仅查看已有数据和绘图可以直接使用results.sh和plot.sh。

左图由配套NumPy脚本对固定分数坐标f₃平面求平均。这个NaCl晶胞不是正交晶胞,所以不能把f₃简单当成Cartesian z。chgparavg.pl是旧式电荷及位置平均工具,不是这里的平面平均程序。
接着阅读Cube转换、密度单位与点值提取。