vasptool电荷网格平移与原子同步
用实际NaCl密度核对半晶格平移、电子数和输出精度。
阅读本篇目录
下载完整输入、结果和复跑脚本。解压后在集群运行 bash run.sh,结果位于 work/,原结果在 reference/。这是19个工具流程的实操资料,不会自动启动新的VASP计算。
1 平移的对象包括网格与原子#
当需要将结构和电荷图一起移动以便显示时,不能只移动POSCAR原子而保留原网格。本例将NaCl实际计算的64×64×64电荷网格沿第一晶格方向平移半个晶胞。
module load vasptool/1.5.2
cp -r inputs/density-shift nacl-shift
cd nacl-shift
vasptool --feature translate-density
按提示依次输入:
0.5 0 0
CHGCAR
输出 CHGCAR_REV.vasp。0.5是分数晶格位移,不是0.5 Å。本例第一方向64格,半胞位移对应32格循环移位,同时原子分数坐标增加(0.5,0,0),跨边界后回到周期晶胞。

2 用ASE读入并核对#
module load ase/3.29.0
python - <<'CHECK'
import numpy as np
from ase.calculators.vasp import VaspChargeDensity
old = VaspChargeDensity('CHGCAR')
new = VaspChargeDensity('CHGCAR_REV.vasp')
x, y = old.chg[0], new.chg[0]
print('网格:', x.shape)
print('原电子数:', x.mean() * old.atoms[0].get_volume())
print('新电子数:', y.mean() * new.atoms[0].get_volume())
print('与32格循环平移的最大差:',
abs(np.roll(x, 32, axis=0) - y).max())
CHECK
ASE这里读取的密度单位为e/ų,因此网格平均乘晶胞体积得到电子数。本次原值7.99999982310,新值7.99999982450,变化约1.4×10⁻⁹个电子;密度最大差约1.08×10⁻⁸ e/ų,与文本有效数字舍入相符。不能要求文本重写后的数组逐字节完全相同。
3 非整数格平移需要另行处理#
本例恰好是32格移位,因此可用 numpy.roll 独立核对。任意小数位移可能涉及网格取整或插值,应先核对当前入口如何处理,再验证电荷积分和结构对齐,不能把本例的精度界限直接推广。
4 这个输出用于什么#
本例输入是经提取的电荷网格,不含PAW增强占据块;输出也不含这些块。可以用于网格显示、平面平均和相同定义下的后处理,不能据此把它当作完整VASP重启电荷文件直接用于ICHARG续算。
处理磁性体系还要检查所有自旋密度分块是否完整。其他通道、增强占据和文件格式没有核对时,应保留原始CHGCAR,不以“文件能显示”作为可以继续电子结构计算的依据。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。