VTST高精度CON转换与原子间距
实际用原生Perl pos2con.pl保留14位坐标,NH₃往返转换并用distatom.pl读取单文件和双文件原子间距。
阅读本篇目录
同样写CON,不同工具保留的坐标精度可能不同。Python转换例子中的旧2con.py写6位小数;原生Perl pos2con.pl写14位坐标,可用于本篇精度更高的NH₃往返操作。
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的解释器。

本例NH₃在12 Å正交盒中,原子顺序为H、H、H、N。图中误差是文件格式往返误差,不表示DFT结构精度达到这些位数。
2. POSCAR转CON,再转回#
vt=/public/software/vasp/vtstscripts/1040
mkdir -p manual/con
cp inputs/NH3.vasp manual/con/POSCAR
cd manual/con
perl "$vt/pos2con.pl" POSCAR model.con
perl "$vt/pos2con.pl" model.con restored.vasp
head -n 16 model.con
head -n 12 restored.vasp
cd ../..
同一个脚本通过输入文件的.con后缀判断反向转换,第二参数指定输出名。输入注释中的元素次序要与实际类型一致;本例首行是H N,对应3H和1N。
本例CON坐标误差约1.78×10⁻¹⁵ Å,返回VASP后的最大坐标误差约4.44×10⁻¹⁵ Å,元素和晶胞保持一致。这解决了本例使用六位坐标写入器时的舍入问题,但不代表任意斜晶胞、手性或部分方向选择性约束都能无损转换;这些信息要单独比较。
3. 单个CON文件中的H–N距离#
cd manual/con
perl "$vt/distatom.pl" model.con 1 4
cd ../..
参数是从1开始的原子编号:H1与N4。原生结果为约1.016793446 Å。它不是0开始编号,也不是第1、4种元素。
4. 两个CON文件各取一个原子#
cd manual/con
cp model.con second.con
perl "$vt/distatom.pl" model.con second.con 1 4
cd ../..
这里取第一个文件的原子1和第二个文件的原子4。本例故意使用同一几何的副本,对照单文件结果一致;不把它称为另一条反应路径或不同物理状态。
cat data/VTST-Perl-CON-pair-distances.csv
两种调用都与独立坐标距离一致。本篇只使用正交盒内这一近距离原子对;若比较不同文件,应先确认它们的盒子、坐标原点、元素顺序和对应关系,不能把不同参考系中的坐标直接当成同一物理距离。
在新解压目录可用bash run.sh顺序完成本篇和周期几何的9个短条件。它们都是结构前后处理,无需启动VASP或提供POTCAR。