PLUMED批量几何:多距离、位置向量与虚拟原子
32帧非正交四原子实例,实际演示DISTANCES、POSITION、GROUP和ARGS2VATOM,给出完整输入及读数方式。
阅读本篇目录
单个DISTANCE适合一对原子;想同时追踪多对距离或一组坐标,可用向量入口。本篇用32帧四原子人工构型演示,坐标单位nm,保留原生逐分量结果。
1. 下载与实际几何#
下载实际输入、原生结果与数据绘图包,保存为example.zip:
python3 -m zipfile -e example.zip .
cd plumed-geometry-vector-examples
bash results.sh
bash read.sh
bash plot.sh
上述命令先读随包真实结果;CSV在data/,原生输出在reference-results/,图在figures/。默认使用集群ASE环境中的Python,可用YS_ANALYSIS_PYTHON指定含NumPy、ASE和Matplotlib的解释器。

这是用于几何算法说明的人工序列,没有进行物理MD积分,也没有把帧号解释为真实动力学时间。
2. 完整输入#
cat inputs/plumed.dat
head -n 12 inputs/scan.xyz
UNITS LENGTH=nm ENERGY=kj/mol TIME=ps
g: GROUP ATOMS=1-4
d: DISTANCES ATOMS1=1,2 ATOMS2=1,3 ATOMS3=1,4 NOPBC COMPONENTS
dm: DISTANCES ATOMS1=1,2 ATOMS2=1,3 ATOMS3=1,4 NOPBC MEAN
p: POSITION ATOM=2 NOPBC
pv: POSITION ATOMS=1-4 NOPBC
plane: PLANE ATOMS=1,2,3 NOPBC
axis: PROJECTION_ON_AXIS AXIS_ATOMS=1,2 ATOM=3 NOPBC
rgfast: GYRATION_FAST ATOMS=g TYPE=RADIUS NOPBC
vol: VOLUME
unitmass: CONSTANT VALUE=1
zerocharge: CONSTANT VALUE=0
virtual: ARGS2VATOM XPOS=p.x YPOS=p.y ZPOS=p.z MASS=unitmass CHARGE=zerocharge
vd: DISTANCE ATOMS=1,virtual NOPBC
PRINT ARG=p.x,p.y,p.z,plane.x,plane.y,plane.z,axis.proj,axis.ext,rgfast,vol,vd,dm.mean STRIDE=1 FILE=COLVAR FMT=%.14g
DUMPVECTOR ARG=d.x,d.y,d.z STRIDE=1 FILE=distvec.dat FMT=%.14g PRINT_ONE_FILE
DUMPVECTOR ARG=pv.x,pv.y,pv.z STRIDE=1 FILE=positions.dat FMT=%.14g PRINT_ONE_FILE
3. 多距离与位置#
g: GROUP ATOMS=1-4
d: DISTANCES ATOMS1=1,2 ATOMS2=1,3 ATOMS3=1,4 NOPBC COMPONENTS
dm: DISTANCES ATOMS1=1,2 ATOMS2=1,3 ATOMS3=1,4 NOPBC MEAN
p: POSITION ATOM=2 NOPBC
pv: POSITION ATOMS=1-4 NOPBC
ATOMS1/2/3列出三个原子对,不是分别设置三个单原子。d.x/d.y/d.z各为3维向量,对应从原子1指向2、3、4的坐标差,单位nm。dm.mean给三个距离模长的均值。
此2.10.1安装中,COMPONENTS与距离模长均值放在同一个快捷入口会发生分量选择问题,因此本例把它们写成两个DISTANCES动作。它们使用同一套坐标,不需要重复做MD。
POSITION ATOM=2输出一个原子的x/y/z;POSITION ATOMS=1-4输出每个方向4个值。DUMPVECTOR按帧和分量展开,读取器再重排成32×4×3。
4. 从CV建立虚拟原子#
unitmass: CONSTANT VALUE=1
zerocharge: CONSTANT VALUE=0
virtual: ARGS2VATOM XPOS=p.x YPOS=p.y ZPOS=p.z MASS=unitmass CHARGE=zerocharge
vd: DISTANCE ATOMS=1,virtual NOPBC
本例虚拟原子放在原子2的坐标,因此vd应等于实际1–2距离。MASS和CHARGE这里要传入动作标签,不能直接写MASS=1 CHARGE=0。虚拟点只参与分析与后续CV构造,不是在真实轨迹中增加一个动力学粒子。
5. 执行与读结果#
在新解压目录运行短串行driver:
bash run.sh
bash read.sh work analysis-new
bash plot.sh analysis-new figures-new work
只读保存的数据:
head reference-results/COLVAR
head reference-results/distvec.dat
head reference-results/positions.dat
head data/PLUMED-geometric-scalar-checks.csv
本例三个方向的全部距离分量、四原子坐标和虚拟点距离均与独立坐标公式逐项一致,最大误差约5×10⁻¹⁵。换成自己的轨迹时先确认原子编号、长度单位与周期边界;跨周期原子对不应随意使用NOPBC。
环境为CP2K2026.2依赖中的PLUMED2.10.1,底层命令及库路径见随包run.py;无需加载或运行VASP、LAMMPS来读取这组已保存坐标。