VTST专题

VTST:对分布函数与配位壳层

实际处理Si8和NaCl64晶胞,读取G(r)、原子类型选择与几何邻居计数。

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

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。

Si8和NaCl64结构、对分布G(r)及所选类型的几何邻居统计

脚本版本为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时,还应按目标方法加入相应物理模型和采样。

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

查看配图

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

100%查看原图 ↗