PLUMED专题

PLUMED批量几何:多距离、位置向量与虚拟原子

32帧非正交四原子实例,实际演示DISTANCES、POSITION、GROUP和ARGS2VATOM,给出完整输入及读数方式。

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

单个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的解释器。

实际第0帧四原子位置和三对距离曲线

这是用于几何算法说明的人工序列,没有进行物理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来读取这组已保存坐标。

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

查看配图

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

100%查看原图 ↗