VTST:对分布函数与配位壳层
实际处理Si8和NaCl64晶胞,读取G(r)、原子类型选择与几何邻居计数。
阅读本篇目录
VTST可以从结构统计原子间距离。本篇用实际Si₂、NaCl₂计算原胞经过明确整数晶胞变换得到的Si₈和NaCl₆₄结构,演示 pos2pdf.pl 与 pos2exafs.pl 的输入和输出。这里不引入新的电子结构计算。
1. 下载并看实际结构与统计图#
下载结构、实际输出、个人晶胞读取器与绘图脚本,保存为 example.zip:
python3 -m zipfile -e example.zip .
cd vtst-pair-lattice
bash read.sh
bash plot.sh
默认读取附带结果,CSV在 analysis-read,图片在 figures。全部操作只处理结构数据,不会重新计算DFT或MD。

脚本版本为VTST 1040,依赖Perl;读取绘图使用ASE、NumPy和Matplotlib,不需要编译或GPU。
module load vtstscripts/1040 ase/3.29.0
cat inputs/Si8.vasp
head -9 inputs/NaCl64.vasp
Si₈完整输入为:
Si
1.0000000000000000
5.4299999999999997 0.0000000000000000 0.0000000000000000
0.0000000000000000 5.4299999999999997 0.0000000000000000
0.0000000000000000 0.0000000000000000 5.4299999999999997
Si
8
Direct
0.0000000000000000 0.0000000000000000 0.0000000000000000
0.2500000000000000 0.2500000000000000 0.2500000000000000
0.4999999999999999 0.4999999999999999 0.0000000000000000
0.7500000000000000 0.7500000000000000 0.2500000000000000
0.4999999999999999 0.0000000000000000 0.4999999999999999
0.7500000000000000 0.2500000000000000 0.7500000000000000
0.0000000000000000 0.4999999999999999 0.4999999999999999
0.2500000000000000 0.7500000000000000 0.7500000000000000
NaCl₆₄文件中元素排序是 Cl Na,各32个原子。因此下文类型1是Cl,类型2是Na,不能只按体系名称猜类型编号。
2. 计算对分布输出#
mkdir pair-work
cd pair-work
perl "$VTSTSCRIPTS_ROOT/pos2pdf.pl" ../inputs/Si8.vasp 0.05 0 Si-pdf.dat
head Si-pdf.dat
参数依次为结构、分箱宽度(Å)、参考数密度和输出文件名。这里密度写0,由结构的原子数与体积确定。对NaCl₆₄可执行:
perl "$VTSTSCRIPTS_ROOT/pos2pdf.pl" ../inputs/NaCl64.vasp 0.05 0 NaCl-pdf.dat
第一列是距离箱中心(Å),第二列为:
G(r) = 4πrρ [g(r) − 1]
其中ρ是原子数密度,G(r)单位Å⁻²。它不是直接的g(r),也不是概率,因此非峰位置出现负值不代表原子对数量为负。
本版本对本例正交晶胞采用最短边一半作为距离截断,使用最小镜像距离。不要把这里的结果直接外推为任意斜晶胞下都正确的完整邻居搜索。
3. 用pos2exafs选择几何邻居#
仍在 pair-work 中:
perl "$VTSTSCRIPTS_ROOT/pos2exafs.pl" ../inputs/Si8.vasp 0.05 Si-neighbors.dat 0
perl "$VTSTSCRIPTS_ROOT/pos2exafs.pl" ../inputs/NaCl64.vasp 0.05 Cl-Na-neighbors.dat 1 1 2
head Cl-Na-neighbors.dat
0 对所有原子类型统计;1 1 2 表示启用类型选择,以类型1的Cl为中心、统计类型2的Na。本文件第一列为距离箱左端(Å),与PDF文件的箱中心有半个箱宽的区别。
尽管脚本名字含 exafs,本输出是几何邻居距离直方图,没有求散射相位、振幅或吸收谱,不能直接当作EXAFS光谱。
4. “1st NN”标签不等于只含第一配位壳层#
脚本按每个中心原子的最近距离箱,选取小于其两倍的距离箱。这个范围可能包含多个壳层,应结合实际距离识别第一近邻,不能把整列计数直接当作第一配位数。
本例Si₈统计到56个有方向的邻居记录,其中第一近邻为每个Si四个、共32条;其余记录来自更远壳层。Cl→Na选择统计448条记录,也包含多个距离壳层。相同原子对按中心方向计数时,不等于无方向配对的条数。
完整原始直方图在资料包的 reference-results/Si8、reference-results/NaCl64 内;下载统计摘要CSV。
5. 从结构到图的完整顺序#
先准备POSCAR并确认元素排序、晶胞和单位;运行PDF或选定类型的邻居统计;明确箱中心/左端与截断定义;再提取数据绘图。整包重新执行轻量后处理:
cd ..
bash run.sh
bash read.sh work-new
bash plot.sh
程序在新的 work-new 中保留输入副本。原生PDF文件只打印四位小数,读取器同时保留显示精度和由其反推的整数计数,不能假定小数打印包含更高精度的连续分布。
本例只有一份晶体几何,不含热振动或时间平均。需要比较实验PDF或EXAFS时,还应按目标方法加入相应物理模型和采样。