VTST专题

VTST周期结构距离与插值:跨过晶胞边界

原生Perl工具实际处理Si₈中0.98到0.02的周期位移,区分3N距离范数、逐原子向量和最短路径插值。

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

同一原子从分数坐标0.98移动到0.02,可能只是跨过晶胞边界的一小步。直接减笛卡尔坐标会得到长距离,结构比较和路径插值需要使用对应周期像。

1. 下载与实际周期路径#

下载完整输入、真实原生输出和绘图包,保存为example.zip:

python3 -m zipfile -e example.zip .
cd vtst-periodic-perl-geometry
bash results.sh
bash read.sh
bash plot.sh

上述命令先读随包已完成的结果;原生输出在reference-results/,CSV在data/,图在figures/。默认使用集群ASE环境中的Python,其他环境可用YS_ANALYSIS_PYTHON指定含NumPy、ASE和Matplotlib的解释器。

原生最短周期插值与直接笛卡尔长路径的区别

本例为5.43 Å正交Si₈常规胞,仅把原子1的分数x从0.98改到0.02,其他原子不变。这是几何控制,不是重新计算的Si扩散机制。

2. 结构距离#

原工具位于/public/software/vasp/vtstscripts/1040,以下先设置一次变量:

vt=/public/software/vasp/vtstscripts/1040

这些命令只处理结构,不运行VASP或DFT;请在自己的新子目录操作,保留原文件。要顺序运行整个包,在新解压目录执行:

bash run.sh
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
mkdir -p manual/periodic
cp inputs/initial.vasp inputs/final.vasp manual/periodic/
cd manual/periodic
perl "$vt/dist.pl" initial.vasp final.vasp
perl "$vt/diffcon.pl" initial.vasp final.vasp
cd ../..

实际dist.pl输出0.2172 Å,对应0.04个晶胞长度;不考虑周期的直接笛卡尔差为5.2128 Å。

dist.pl给全部原子3N位移分量的欧氏范数,不是每原子平均,也不是RMS位移。本例只有一个原子改变,所以该范数就是该原子的最短周期距离。

3. 逐原子差向量#

diffcon.pl的符号按第一结构减第二结构,所以原子1的x差为−0.2172 Å,其他分量为0。它与讲述“从初态向末态移动”的正方向相反,但距离模长相同。

这个旧脚本末尾Vector字段是完整3N范数;Sum字段在当前脚本中实际打印最后一个原子的位移,不能当作总位移之和。本例最后一个原子不动,因此Sum显示0,而Vector为0.2172。需要总和时,应从逐原子列自行计算,不使用这个有歧义的汇总字段。

4. 生成四分之一和中点结构#

mkdir -p manual/quarter manual/midpoint
cp inputs/initial.vasp inputs/final.vasp manual/quarter/
cp inputs/initial.vasp inputs/final.vasp manual/midpoint/
cd manual/quarter
perl "$vt/posinterp.pl" initial.vasp final.vasp 0.25
cd ../midpoint
perl "$vt/posinterp.pl" initial.vasp final.vasp 0.5
cd ../..

分别生成各自的POSCAR.out。四分之一处的原子1分数x等价于0.99,中点等价于0或1;原生文件可以采用负分数坐标或其他等价周期像,所以比较时应先按晶格周期还原,不能只逐文本比较小数。

head data/VTST-Perl-periodic-interpolation.csv

本例按独立最短周期向量核对两个插值点,原晶胞、元素顺序和其他原子保持不变。这里验证的是正交盒;任意斜晶胞的最近像搜索不能仅靠三个分数分量分别折回,需另检查算法与晶格。

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

查看配图

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

100%查看原图 ↗