VTST专题

VTST:Cube转换、密度单位与点值提取

使用个人兼容副本转换Cube、提取密度并区分四种采样方法。

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

同一份VASP电荷网格可以转为Cube供可视化程序读取,也可以在指定位置采样。需要区分文件单位、局部密度和原子电荷;它们不是同一个量。

下载NaCl真实数据与个人兼容脚本。先解压进入vtst-charge:

bash prepare.sh

这一步从公共VTST1040复制两项工具到自己的toolchain,修正CHGCAR密度转Cube的单位因子以及三次插值的采样点/系数,不修改公共软件。之后使用这里生成的副本;不要把同名公共旧脚本与个人副本混用。

1. CHGCAR里的数值是什么#

这里标量网格存储的是V×ρ。先对网格所有点取平均,得到总价电子数;再除以晶胞体积V,才是e/ų密度。

本例V为46.29825ų,平均值约8。PAW软密度局部可以出现小负值,不应先截断负值再积分。这个文件也不是含所有核电子尖峰的全电子密度。

2. 转为Cube#

mkdir -p work/cube
cd work/cube
cp ../../inputs/CHGCAR_A A
export PERL5LIB=/public/software/vasp/vtstscripts/1040
printf '1\n17 11\n' | perl ../../toolchain/chg2cube.pl A

生成A.cube。第一行选择标准Bohr坐标单位;第二行按文件元素顺序Cl、Na输入原子序数17、11。新体系要改成自己的原子序数,不能照抄。

本例Cube标量密度为e/Bohr³,网格三矢量为Bohr。积分方式为所有标量求和,再乘单网格体积;实际仍是7.9999998230电子。这里保留非正交的三个网格矢量,不能只用三个Cartesian轴长相乘。

LOCPOT表示电势,单位与CHGCAR不同。个人转换副本保留LOCPOT的eV到Hartree分支;这篇实际演示的是CHGCAR密度,不把密度乘电势换算因子。

3. 提取网格内位置的值#

chgvalue.pl读取文件头部列出的坐标作为采样点。下面先在B文件的实际原子位置采样:

cd ../..
perl toolchain/chgvalue.pl inputs/CHGCAR_B 1

线性采样分别得到−0.45160366274和0.56102988649,它们仍是原始V×ρ,除以体积后约为−0.00975423和0.01211773 e/ų。

旧工具输出标题写“eV”,但读取CHGCAR时数值不是电势,不能照这个固定标题标注单位。局部密度也不是Bader或Hirshfeld原子电荷。

4. 线性、二次、三次与最小值#

for mode in 1 2 3 4; do
  perl toolchain/chgvalue.pl inputs/CHGCAR_PROBES "$mode"
done
编号 含义 使用方式
1 三维线性插值 周围2×2×2节点
2 三维二次插值 每轴3个节点
3 三维三次插值 每轴4个节点,使用随包个人修正副本
4 相邻8节点的最小值 不是插值,不能当作平滑点值

CHGCAR_PROBES保持同一实际密度,只把文件头坐标改为两个查询点(0.75123,0.74567,0.75234)和(0.25123,0.24567,0.25234)。这些坐标不是重新移动原子后的DFT结构,不能拿它解释结构变化后的电荷。

第一个查询点靠近软密度变化剧烈的区域:线性约0.022803 e/ų,二次约−0.005722,修正三次约−0.004884;第二个点三种方法均约0.0121 e/ų。不同插值不能自动消除粗网格误差,需要时应增加源密度网格。

实际密度与四种采样方法

本例采用64×64×64等间距计数网格,查询点远离周期边界。这个旧工具的非等维网格坐标换算和跨边界处理不能直接外推;其他情况优先使用明确支持该网格的读取器。

5. 保存哪些结果#

bash results.sh
bash plot.sh
ls figures

保存原始输入、减法顺序、权重、晶胞/网格、单位和查询点坐标。图中的差分是已知平移控制;真正研究电荷转移时,按电荷网格处理准备同晶胞、同网格、同原子对齐的各部分密度。

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

查看配图

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

100%查看原图 ↗