VTST专题

VTST:电荷网格相加、加权与差分

用真实NaCl密度演示VTST逐网格运算、差分方向与电荷守恒。

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

已经有VASP电荷密度,想把两个网格相加、按权重组合,或做差分,可以用VTST脚本。本例复用鸢算科技集群实际计算的NaCl两原子64³标量网格;不再重复DFT。

为了清楚看懂操作,B由A沿三个分数坐标各周期平移1/4得到,原子一起平移。它是已知的数值控制,不是发生吸附或成键后的电荷转移算例。

下载实际标量网格、原生操作脚本、CSV和绘图脚本。

unzip vtst-charge-wave704-*.zip
cd vtst-charge
bash results.sh
bash plot.sh

实际NaCl密度与已知周期平移差分

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转换、密度单位与点值提取。

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

查看配图

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

100%查看原图 ↗