Moltemplate专题

Moltemplate模板还原与类型清理

从已有LAMMPS输入还原LT对象,独立构建、读回核对并清理未使用的类型。

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

已有LAMMPS结构,想重新组织成可复用的Moltemplate对象时,可以使用 ltemplify.py。它会尝试读取DATA和相关输入,将类型、坐标、拓扑和支持的参数写成LT;转换后仍需用LAMMPS重新读回检查。本篇沿用轨迹转换教程的12珠子谐链和同一份下载包。

1. 下载与运行顺序#

下载模型、真实轨迹、转换结果与绘图脚本,保存为 example.zip,在自己的工作目录中解压:

python3 -m zipfile -e example.zip .
cd moltemplate-conversion-tools

先看本例已计算的数据和图片:

bash show-reference.sh
head -n 4 chain-energy.csv
head -n 4 conversion-checks.csv

重新计算时,在新的解压目录中提交:

sbatch job.slurm

模板向CPU分区申请56核整节点,短示例实际单进程执行;分区维护时等待资源恢复。在已分配的计算资源中,也可以用 bash run.sh 依次完成建模、500步NVE、转换、原生读回和画图。脚本拒绝覆盖已有 work/。本例使用现有Moltemplate2.22.5/Python3.11,以及Intel oneAPI2024.2、Intel MPI/MKL构建的LAMMPS30Sep2026 CPU版。绘图Python由 sisl/0.16.4 提供,用户不用安装或修改公共环境。

流程是:读取已有LAMMPS输入与DATA → 生成 rebuilt.lt → 在 system.lt 中实例化 → 用 moltemplate.sh 重新生成输入 → LAMMPS run 0 检查。类型清理另用一份带未用类型的副本,不覆盖原始模型。

2. 将现有DATA转成LT对象#

source ./env.sh
cd reference-results/native/chain
ltemplify.py -name Chain system.in.init system.in.settings final-native.data > customer-rebuilt.lt
head -n 20 customer-rebuilt.lt

初始化脚本先写,参数脚本其次,DATA在后。-name Chain 指定输出对象名。生成文件不是完整生产输入的无损备份:需检查所用pair style、通配符参数以及fix等命令是否受支持,特别是多体势、混合力场和外部参数文件。

3. 实例化并重新生成LAMMPS文件#

本例已实际生成的 reference-results/native/roundtrip/system.lt 为:

import "rebuilt.lt"
c=new Chain
write_once("Data Boundary") {
 -10 30 xlo xhi
 -10 30 ylo yhi
 -10 30 zlo zhi
}

在独立目录中构建,防止覆盖已有结果:

source ./env.sh
mkdir customer-roundtrip
cd customer-roundtrip
cp ../reference-results/native/roundtrip/rebuilt.lt .
cp ../inputs/roundtrip-system.lt system.lt
moltemplate.sh system.lt
grep -E 'atoms$|bonds$|atom types$' system.data

本例重建后仍为12个珠子、11条键。LT可能重新编号对象与类型,因此比较时应同时核对几何、连接关系、质量、电荷和参数,而不是要求文本行或ID名称完全相同。

4. 用LAMMPS读回,不重新跑MD#

上一步之后可在同一资源分配中检查:

source ./env.sh
cd customer-roundtrip
cp ../inputs/check0.in .
lmp -var datafile system.data -var dumpfile customer-forces.dump -in check0.in -log customer-check0.log

其中 check0.in 的完整内容:

include system.in.init
read_data ${datafile}
include system.in.settings
neighbor 1.0 bin
neigh_modify delay 0 every 1 check yes
thermo 1
thermo_style custom step atoms pe ke etotal ebond
thermo_modify norm no format float %.16g
run 0
write_dump all custom ${dumpfile} id mol type q x y z fx fy fz modify sort id format float %.16g

run 0 计算当前结构的能量和力,不积分推进时间。本例LT重建后的几何、11条键和谐键力均与第500步结构一致;DATA是否含速度段需另外检查,不能因为结构一致就认为全部动力学状态被保留。

5. 清理没有使用的类型#

测试副本在Masses里额外定义了质量5的未用类型,实际珠子仍全部使用质量1的原类型。清理前保存了 before/,然后在副本目录执行:

source ./env.sh
mkdir customer-cleanup
cp reference-results/native/cleanup/before/system.data customer-cleanup/
cp reference-results/native/cleanup/before/system.in.* customer-cleanup/
cd customer-cleanup
cleanup_moltemplate.sh
grep -E 'atoms$|bonds$|atom types$' system.data

本例声明的原子类型从2减为1,珠子数12、键数11、初始整链势能11均不变。清理可能重编号已用类型;如果外部脚本按旧数字引用类型,须同步检查。cleanup_moltemplate.sh 依赖 ltemplify.py,也继承它对特定势函数与参数写法的限制,不能直接视为适用于所有LAMMPS输入。

类型清理与实际读回对照

6. 最后保留哪些文件#

保留原始LT、原始LAMMPS输入、DATA、实际使用的外部力场文件以及转换后的独立目录。公开包内 reference-results/native/ 是本例的真实原生结果,plots/ 和CSV由绘图脚本生成。要处理自己的模型,先在副本里替换输入、再读回核对,再用于后续MD。

这两篇覆盖7个常用入口;Moltemplate安装中另外的MOL2/PDB转换、聚合物曲线构建和底层模板工具会在相应教程中分别说明,不能把这两个示例当作所有特殊输入均已兼容。

官方说明:ltemplify、cleanup_moltemplate。

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

查看配图

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

100%查看原图 ↗