LAMMPS索引区域与文件操作
真实NDX原子组往返、region2vmd脚本输出以及工作目录内的文件操作与正常退出。
阅读本篇目录
原子组有时需要保存到外部文件,或与GROMACS、Colvars和可视化工具共享。本篇实际保存一个球形区域中的14个原子、删除组后重新读回,并生成VMD区域脚本;最后练习只作用于当前工作目录的文件操作。
下载六组输入、真实轨迹、分区日志、NDX、VMD脚本与绘图工具,解压进入run.sh目录。
1 提交完整流程#
sbatch submit.slurm
核时P100模板申请1GPU4CPU,顺序运行六组短流程;本篇使用P100构建中的普通CPU与OPENMP路径,不启用GPU后缀,不作GPU加速或线程性能结论。构建LAMMPS30Sep2026、GNU C++13.3.0/C++17、Open MPI5.0.10;分析ASE3.29.0。
套餐用户用yskit生成所属分区脚本,保留4个CPU核,在已分配资源中执行bash run.sh;不要在登录节点模拟。脚本在分配的CPU亲和范围内选择最多4核。inputs为新输入,reference为本文实际输出,work为新运行;已有work请重新解压。
2 NDX往返与区域脚本完整输入#
units lj
atom_style atomic
atom_modify map array
boundary p p p
lattice fcc 0.8442
region box block 0 3 0 3 0 3
create_box 1 box
create_atoms 1 box
mass 1 1.0
pair_style lj/cut 2.5
pair_coeff * * 1.0 1.0 2.5
pair_modify shift yes
neighbor 0.3 bin
neigh_modify delay 0 every 1 check yes
region core sphere 2.5 2.5 2.5 1.5 units box
group selected region core
group2ndx before.ndx selected
group selected delete
ndx2group before.ndx selected
group2ndx restored.ndx selected
region2vmd regions.vmd material Transparent color blue region box color red region core
thermo_style custom step atoms pe
thermo_modify norm no format float %.16g
run 0
write_dump all custom atoms.dump id type x y z modify sort id format float %.16g
atom_modify map array在建盒前启用原子ID映射,ndx2group需要它。group selected region core选择球内原子,group2ndx只写出selected组;删除组后用ndx2group按索引重新创建,最后再次导出以核对成员。
NDX保存原子编号,不包含坐标或拓扑。若在导出后重新编号、删原子或更换原子顺序,需要先核对映射;不能把别的体系相同数字的ID当作同一组原子。
cat work/cases/index-and-region/before.ndx
cat work/cases/index-and-region/restored.ndx
head -n 18 work/cases/index-and-region/regions.vmd
本例两份NDX的成员与顺序完全相同,共14个原子;分析脚本还用实际坐标重新检查这些ID位于中心(2.5,2.5,2.5)、半径1.5的球内。
3 region2vmd生成了什么#
region2vmd把box与core两个已定义区域写成原生VMD Tcl图形命令。本例分别使用蓝色盒和红色球;它输出的是区域图形脚本,没有替代原子轨迹。当前下载包中已实际生成regions.vmd,下面的图片根据实际坐标和NDX成员重画,并非VMD渲染截图。
在自己已安装VMD的电脑上,先加载需要显示的原子结构,再在VMD命令行执行:
play regions.vmd
这个命令提供给本地VMD用户,本例未运行VMD渲染。region2vmd支持部分基本区域类型,union/intersect及旋转区域有适用限制;不把所有region都视为可直接导出。

4 文件操作与正常退出#
file-helper目录的seed.txt是附带的普通文本。下面的完整输入只创建当前目录下的generated、复制和移动自己的示例文件,再正常退出:
shell mkdir generated
shell /bin/cp seed.txt generated/fetched.txt
shell mv generated/fetched.txt generated/renamed.txt
print "FILE_HELPER_FINISHED"
quit 0
print "UNREACHABLE_AFTER_QUIT"
shell内置mkdir和mv处理路径;/bin/cp调用外部复制程序。对外部命令,LAMMPS不一定能可靠判断每一种错误,所以后处理还比较实际生成文件与seed.txt的字节内容。
quit 0表示正常结束输入处理,后面的UNREACHABLE_AFTER_QUIT不会执行或出现在实际日志中。这个示例只演示控制流程,不会删除用户文件。
cat work/cases/file-helper/generated/renamed.txt
grep FILE_HELPER_FINISHED work/cases/file-helper/launcher.log
geturl也可用于读取URL,但当前lammps/30Sep2026-p100-gpu未启用所需libcurl支持,不能直接执行该命令。本包使用普通本地复制完成流程;需要外部材料时,先在允许联网的环境下载并核对来源和哈希,再传入计算目录。
提取与重画#
module load ase/3.29.0
python analyze.py work
python plot_results.py work
python check_results.py work
cat work/analysis/short-nve.csv
ls work/figures
CSV包含线程路径与独立分区的初始温度、最终温度、总能和短轨迹能量变化;JSON保存完整热力学采样、逐原子对照和索引成员。查看本文数据时将work改成reference。