Moltemplate:接入Packmol外部坐标
生成八个水分子的随机装箱坐标,再用Moltemplate添加分子拓扑,核对24原子的顺序映射和键角。
阅读本篇目录
Packmol安排分子位置,Moltemplate补充分子拓扑与参数。两者按原子顺序传递,工具不会自动判断化学对应关系。以下水模型与分子模板教程一致,使用Moltemplate 2.22.5、Packmol 21.2.3、LAMMPS 30Sep2026。
1. 准备分子与装箱输入#
module load moltemplate/2.22.5 packmol/21.2.3
python prepare.py
cd cases/packmol-water
cat water.xyz
cat packmol.inp
3
Own geometry, OH1A angle109.471220634deg
O 0 0 0
H 0.816496580927726 0 0.577350269189626
H -0.816496580927726 0 0.577350269189626
tolerance 2.5
filetype xyz
output packed.xyz
seed 197053
structure water.xyz
number 8
inside box 0 0 0 18 18 18
end structure
每个水分子按O,H,H排列,共8份、24原子。固定随机种子有助于重复得到相同装箱;2.5 Å是本例的分子间原子排斥距离参数,不是水分子内O–H键长。
2. 用Packmol生成XYZ#
packmol < packmol.inp > packmol.log
head -8 packed.xyz
tail -12 packmol.log
Packmol负责几何排布,不产生LAMMPS的键、角或力场参数。packed.xyz中的第一行应为24,坐标顺序应与八份水模板一致。
3. 接入Moltemplate#
本例system.lt:
import "water.lt"
w=new Water[8]
write_once("Data Boundary") {
-10 30 xlo xhi
-10 30 ylo yhi
-10 30 zlo zhi
}
moltemplate.sh -xyz packed.xyz system.lt
head -20 system.data
module load lammps/30Sep2026-8173m
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 I_MPI_FABRICS=shm
lmp -in run0.in -log lammps.log
实际为24原子、16键、8角、8分子,XYZ到LAMMPS的逐原子坐标映射误差小于10^-6 Å。盒子边界为−10到30 Å,装箱区0到18 Å位于盒内;这是稀疏的教学盒,不是目标密度的液态水。
4. 检查并画图#
cd ../..
/public/toolkit/miniconda3/envs/ase-3.29.0/bin/python analyze.py
cat analysis/models.csv
ls figures/*.png
图见分子模板教程中的八水盒。实际初始化势能约−0.0365663131 kcal/mol,最大力约4.81935 kcal·mol^-1·Å^-1。这里只执行run 0;生产MD应另行设置合理密度、约束、最小化与平衡,并查看初始重叠和力,不能因为数据文件生成成功就直接进行长时间采样。
下载完整可复跑资料包。解压到新目录执行 bash run.sh,脚本最多使用一个CPU线程。这里只做小型建模与六次run 0,没有MD采样;实际生产模拟按作业指南申请资源。每个条件有自己的LT输入、system.data、system.in.init、system.in.settings、run0.in和日志,输出表与图在analysis/、figures/。