
科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载导读本文以 LAMMPS 官方命令分类索引页 Commands by category 为主体骨架系统梳理 LAMMPS 全部通用命令按功能划分的 9 大类别——初始化、设置模拟盒子、设置原子、力场、设置、时间步内操作与诊断、输出、动作、输入脚本控制。同时结合仓库中的 输入脚本结构、解析规则、通用命令字母表 以及真实示例 examples/melt/in.melt帮助读者建立命令分类 → 输入脚本编排 → 仿真运行的完整知识链。读完本文你将能读懂任意 LAMMPS 输入脚本并能够按照正确的命令顺序独立编写自己的仿真脚本。命令分类体系9 大功能域一览LAMMPS 的命令按功能划分为 9 个类别该分类页位于文档 Commands_category.rst是整个命令参考手册的导航中枢。完整的字母序命令列表见 Commands_all.rstfix、compute、pair 等样式类命令则分别在 Commands_fix.rst、Commands_compute.rst、Commands_pair.rst、Commands_bond.rst 等独立页面中按字母序排列。理解分类的意义LAMMPS 逐行读取输入脚本每条命令立即生效详见 输入脚本解析规则。按功能分类有助于快速定位此刻我该写什么命令——初始化参数必须放在创建原子之前力场系数必须放在运行之前。这 9 大分类恰好对应了一个仿真从设定环境到执行计算的自然顺序。以下逐一展开每个分类及其命令。一、初始化Initialization本类命令用于设置必须在创建或读入原子之前定义的全局参数共 5 条命令作用文档newton控制牛顿第三定律成对力计算的开启/关闭影响计算效率与数值行为newtonpackage设置 GPU、KOKKOS、OPENMP、INTEL 等加速包的运行时参数如 GPU 数量、线程数packageprocessors指定 MPI 进程如何映射到模拟盒子的 3 个维度如processors 2 2 1processorssuffix设置默认样式后缀如suffix gpu让 LAMMPS 自动选择加速版 fix/pair 等样式suffixunits设置单位制lj、real、metal、si、cgs、electron、micro、nano等units这些命令大多有默认值因此输入脚本中只有需要改变默认行为时才必须显式写出。例如units lj声明无量纲化 Lennard-Jones 单位制配合dimension 3声明三维空间。二、设置模拟盒子Setup simulation box本类 6 条命令负责定义仿真的空间范围与边界拓扑boundary设置 6 个盒面xlo/xhi/ylo/yhi/zlo/zhi的边界条件类型可选p周期性、f固定、s收缩、m镜像详见 boundarychange_box动态修改盒子的尺寸、形状与边界条件支持 triclinic 倾斜盒常配合fix deform使用create_box依据已定义的region创建模拟盒子必须先用region定义空间范围dimension设置仿真维度2 或 3必须在创建盒子前调用lattice定义晶格类型fcc、bcc、sc、hcp、custom等与晶格常数region定义几何区域block、sphere、cylinder、union、intersect等是create_box、create_atoms、group region等命令的基础典型的调用顺序是dimension→lattice→region→create_box例如dimension 3 lattice fcc 0.8442 region box block 0 10 0 10 0 10 create_box 1 box这段代码正是示例 examples/melt/in.melt 中构建 3D 熔化模拟盒子的方式。三、设置原子Setup atoms本类共 17 条命令是输入脚本中体量最大的一类负责向盒子填充原子、定义分组与质量、设置初速度atom_style声明原子数据模型atomic、charge、molecular、bond、ellipsoid、sphere、hybrid等决定每个原子携带哪些属性是创建原子前必须设置的命令详见 atom_styleatom_modify修改原子属性相关设置如 map 数组、sort 频率、边界处 ghost 原子数量balance运行中动态或静态地负载均衡rcb、shift、sort等算法create_atoms按晶格或 region 随机填充原子create_bonds在已有原子间创建键常用于无拓扑结构后处理delete_atoms删除指定区域或类型的原子可选保留键、边界等delete_bonds删除指定原子的键/角/二面角displace_atoms平移、旋转或随机移动原子坐标group按 ID、类型、region、分子或布尔表达式定义原子组几乎所有fix/compute都作用于组mass为原子类型设定质量molecule从分子模板文件读取分子含拓扑配合create_atoms放置read_data从 data 文件读入盒子和原子含力场参数与拓扑详见 read_dataread_dump从 dump 文件恢复原子坐标read_restart从重启文件恢复完整仿真状态replicate将当前系统沿各方向复制拼接扩大模拟规模set批量修改原子属性类型、电荷、坐标、质量等velocity为原子组设置初速度create按温度抽取、set直接赋值、scale缩放等仍以 in.melt 为例该段展示了设置原子的典型链路units lj atom_style atomic lattice fcc 0.8442 region box block 0 10 0 10 0 10 create_box 1 box create_atoms 1 box mass 1 1.0 velocity all create 3.0 87287 loop geom四、力场Force fields本类 17 条命令定义成对势、键角势与长程静电等力场模型及其系数。这也是 LAMMPS 命令索引中样式类style命令最集中的类别pair_style成对相互作用模型lj/cut、eam、tersoff、hybrid、table等详见 pair_stylepair_coeff为指定原子类型对设置 pair 系数I J 两类型可含通配符pair_modify修改 pair 计算细节混合规则、tail 修正、shift 等pair_write将解析式 pair 势按表格写出便于验证或转成 table 样式bond_style/bond_coeff/bond_write键伸缩势模型、系数与表格写出angle_style/angle_coeff键角势模型与系数dihedral_style/dihedral_coeff二面角势模型与系数improper_style/improper_coeff非正常improper势模型与系数kspace_style长程库仑/色散求解器ewald、pppm、msm等kspace_modify修改 kspace 求解参数精度、网格、倾斜修正等dielectric设置全局介电常数影响库仑相互作用缩放special_bonds定义 1-2、1-3、1-4 相邻键连原子间的排除与缩放因子是分子力场的关键设置从源码目录 src/ 可以看到力场样式的实现规模成对势集中在 src/EXTRA-PAIR/、src/MANYBODY/ 等子目录键角势位于 src/MOLECULE/长程求解器位于 src/KSPACE/。Commands_pair.rst 中列举了全部 pair 样式且对加速版本用括号字母标注见后文加速版本后缀一节。in.melt 中力场部分仅两行即完成设置pair_style lj/cut 2.5 pair_coeff 1 1 1.0 1.0 2.5五、设置Settings本类 12 条命令调整仿真运行的全局参数neighbor设置近邻列表构建参数skin厚度、bin/nsq算法neigh_modify调整近邻列表刷新频率、延时、是否检查、排除列表等comm_modify修改通信相关设置ghost 原子交换模式、截断值等comm_style选择通信算法brick或tiledrun_style设置时间积分风格verlet、respa、rRESPA等timestep设置时间步长单位由units决定reset_timestep重置当前步号timer控制计时输出off/partial/full/loopmin_style/min_modify能量最小化算法cg、sd、hftn等及容差、迭代限制info输出系统信息编译选项、加速包、近邻统计等可用于调试partition将整个模拟划分为多个分区multi-partition 运行示例脚本中的近邻设置neighbor 0.3 bin neigh_modify every 20 delay 0 check no其中neighbor 0.3 bin声明 0.3 个长度单位的 skin 厚度并使用 bin 网格算法neigh_modify every 20表示每 20 步重建一次近邻列表。六、时间步内的操作fix与诊断compute本类 6 条命令是 LAMMPS 最富扩展性的机制fix在时间积分循环内注入操作恒温器、外力、约束、输出等compute计算系统诊断量温度、压力、势能等。样式数量极多分别见 Commands_fix.rst数百种与 Commands_compute.rstfix定义时间步内操作语法为fix ID group-ID style args如fix 1 all nve微正则积分、fix 2 all nvt 300.0 300.0 0.1恒温详见 fixfix_modify修改已定义 fix 的附加属性能量/维里贡献开关、输出选项等compute定义诊断计算语法为compute ID group-ID style args如compute ke all ke动能详见 computecompute_modify修改 compute 的附加属性温度计算用的自由度等unfix/uncompute删除此前定义的 fix / compute示例脚本中fix 1 all nve此处在thermo输出温度等热力学量时其温度由compute thermo_temp默认compute temp提供说明 fix 与 compute 的协作贯穿整个时间步循环——这也是文档将该类单列一节的深层原因。七、输出Output本类 13 条命令控制仿真结果的多通道输出thermo周期性打印热力学量温度、能量、压力等语法thermo NN 为步数间隔N 也可用 equal 风格变量如thermo v_s配合logfreq()函数实现变间隔输出详见 thermothermo_style选择打印内容与格式one、custom、multi等可含任意compute与变量thermo_modify调整热力学输出细节打印格式、标题、是否写入 log 文件等dump周期性输出原子轨迹atom、custom、cfg、image、movie等格式详见 dumpdump image输出快照位图如 JPEG/PNGdump movie连续输出并编码为影片如 MPEG两者语法见 dump_imagedump_modify调整 dump 参数输出格式、频率、padding、缩放等undump停止某个 dumprestart周期性写入重启文件write_restart立即写入重启文件write_data写出 data 文件可指定部分/全部原子write_dump立即写出一次 dump 快照write_coeff写出当前力场系数文件in.melt 中展示了典型用法与注释掉的进阶用法thermo 50 #dump id all atom 50 dump.melt #dump 2 all image 25 image.*.jpg type type # axes yes 0.8 0.02 view 60 -30 #dump_modify 2 pad 3thermo 50表示每 50 步打印一次热力学量并在仿真开始与结束时各打印一次。注释中的dump ... image展示了按 25 步输出图片快照、pad 3补齐编号、续行的典型写法。八、动作Actions本类 8 条命令是真正驱动计算执行的命令对应文档 Commands_input.rst 中定义的三类命令中的执行类run运行分子动力学语法run N支持upto、start、stop、pre、post、every等关键字详见 runminimize能量最小化分子静力学语法minimize etol ftol maxiter maxeval详见 minimizererun重放 dump 文件中的历史构型并重新计算诊断量neb/neb_spinNudged Elastic Band 找最小能量路径后者为自旋版本prdParallel Replica Dynamics 加速稀有事件模拟tadTemperature Accelerated Dynamicstemper并行退火副本交换模拟run 命令是其中最常用的其关键字语义值得展开upto表示从当前步运行到指定步号适合长任务断点续算start/stop配合会随时间变化的fix如fix nvt跨多次 run 平滑渐变every可在运行中分段插入命令例如run 100000 start 0 stop 1000000 every 1000 print Protein Rg $r run 100000 every 1000 NULL第一条每 1000 步打印一次回转半径变量第二条每 1000 步空操作分段运行NULL表示不执行命令。示例脚本最后两行即本类命令thermo 50 run 250九、输入脚本控制Input script control本类 14 条命令构成 LAMMPS 的脚本编程能力——变量、条件、循环、子脚本与外部命令调用variable定义变量index、loop、equal、string、atom、python等风格是脚本灵活性的核心详见 variableif/next/label/jump组合实现条件分支与循环label标记 jump回跳 next递增变量是经典循环范式include在当前位置插入执行另一个输入脚本子脚本print打印文本支持变量替换与格式化常配合if、run every使用echo控制命令回显none/screen/log/both便于调试info输出系统/编译/包信息log将后续输出重定向到新日志文件python在脚本中调用 Python 函数与 LAMMPS 双向交换数据需要 PYTHON 包shell执行外部 shell 命令clear清空当前系统状态重新初始化用于在一个输入脚本中串联多个独立任务quit退出 LAMMPSif条件中常用如if ${steps} 1000 then quit配合 变量替换规则可以写出高度参数化的脚本例如用$引用变量、用$(...)直接内联数值表达式variable X equal (xloxhi)/2sqrt(v_area) region 1 block $X 2 INF INF EDGE EDGE variable X delete上面的临时变量可等价替换为立即表达式region 1 block $((xloxhi)/2sqrt(v_area)) 2 INF INF EDGE EDGE甚至附加 C 风格格式化串控制输出精度print Final energy per atom: $(v_ke_per_atomv_pe_per_atom:%10.3f) eV/atom。把分类融入实战输入脚本的四段式结构掌握了 9 大分类后还需要理解命令的组织顺序。官方文档 输入脚本结构 指出一个典型 LAMMPS 输入脚本由 4 个部分组成初始化Initialization在创建/读入原子前设置参数命令即分类一中的units、dimension、newton、processors、boundary、atom_style、atom_modify若 data 文件含力场参数还需提前声明pair_style、bond_style等样式系统定义System definition三种途径——read_data/read_restart读入或latticeregioncreate_boxcreate_atoms自行构建或read_dump需要放大系统用replicate仿真设置Simulation settings力场系数pair_coeff等、仿真参数neighbor、group、timestep、run_style、min_style、fix/compute/variable、输出设置thermo、dump、restart运行仿真Run a simulationrunMD、minimize能量最小化、temper副本交换第 3、4 部分可反复循环——跑一段、改设置、再跑同时Commands_input.rst 强调 LAMMPS逐行执行命令而非先整体解析再运行因此命令顺序有实际后果例如下面两段脚本行为不同——timestep 0.5 run 100 run 100run 100 timestep 0.5 run 100第一段两次 run 都用 0.5 时间步第二段第一次 run 用默认 1.0 步长第二次才用 0.5。另外processors与boundary必须在read_data之前设置才能按预期影响处理器映射与盒边界。解析规则要点命令行的 6 条文法写输入脚本前还应掌握 Commands_parse.rst 的 6 条解析规则续行行末表示命令延续到下一行下一行会拼接续上与换行被移除注释第一个#之后全部视为注释并丢弃注意之后的注释会阻止续行变量替换$触发变量替换${name}用花括号界定变量名$x取单字符变量$(expr)为立即数值表达式分词行按空白空格、Tab切分为词命令名第一个词是命令名其后均为参数引号单引号、双引号、三引号包裹的文本作为一个参数三引号保留换行且其中的#、$不会被当作注释/变量处理适合多行字符串如print输出多行系统状态此外LAMMPS 期望 7-bit ASCII 文本UTF-8 中形似 ASCII 或不可见的非 ASCII 字符可能被替换并给出警告编写输入文件时应避免。完整可运行示例3D Lennard-Jones 熔化将以上 9 大分类与四段式结构合而为一仓库示例 examples/melt/in.melt 是理想的完整范例运行方式lmp -in in.melt或mpirun -np 4 lmp -in in.melt# 3d Lennard-Jones melt units lj # ① 初始化LJ 单位制 atom_style atomic # ① 初始化原子风格 lattice fcc 0.8442 # ② 系统定义fcc 晶格 region box block 0 10 0 10 0 10 create_box 1 box create_atoms 1 box mass 1 1.0 velocity all create 3.0 87287 loop geom # ② 系统定义初始速度 pair_style lj/cut 2.5 # ③ 仿真设置力场 pair_coeff 1 1 1.0 1.0 2.5 neighbor 0.3 bin # ③ 仿真设置近邻 neigh_modify every 20 delay 0 check no fix 1 all nve # ③ 仿真设置NVE 积分 thermo 50 # ③ 仿真设置热力学输出 run 250 # ④ 运行仿真对照分类表第 1-2 行属初始化第 3-11 行属设置模拟盒子/设置原子第 13-19 行属力场/设置fix属时间步内操作thermo属输出run属动作。进阶加速版本后缀与样式索引fix、compute、pair、bond 等样式类命令的许多样式提供加速版本分类页与各样式索引页用括号字母标注g GPU、i INTEL、k KOKKOS、o OPENMP、t OPT。例如 Commands_pair.rst 中的buck (giko)表示 buck 势同时有 GPU/INTEL/KOKKOS/OPENMP 加速版Commands_fix.rst 中的addforce (k)表示 KOKKOS 版本。配合初始化分类中的suffix命令如suffix gpu可自动选择加速样式再以package命令配置加速器资源。总结LAMMPS 的命令体系以9 大功能分类为纲、以四段式输入脚本结构为序初始化确定环境 → 盒子与原子定义系统 → 力场与设置注入物理 → fix/compute 提供机制 → 输出记录结果 → run/minimize 驱动计算 → 脚本控制命令编织流程。任何复杂的 LAMMPS 仿真脚本都可以拆解并归入这张分类图中。建议读者在编写新脚本时对照 Commands_category.rst 逐类自查命令是否齐全、顺序是否合规并使用-skiprun命令行标志跳过 run/minimize 仅做语法检查详见 Commands_input.rst验证脚本正确性后再正式运行。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐Raycast脚本命令输出模式详解从静默到全屏展示Raycast脚本命令输出模式详解从静默到全屏展示 输出模式概述 在Raycast脚本命令开发中输出模式决定了脚本执行结果如何呈现给用户。根据不同的使用场景开发工具桌面应用Python-qrcode命令行工具详解从脚本到批处理的完整方案Python qrcode命令行工具详解从脚本到批处理的完整方案 想要快速生成QR码图片而不写Python代码 Python qrcode命令行工具就是图像处理Yii2 控制台命令完全指南从入口脚本到自定义命令的开发实战Yii2 控制台命令完全指南从入口脚本到自定义命令的开发实战 Yii 框架不仅提供了丰富的 Web 应用开发能力还内置了一套功能强大的控制台Console后端Web框架上一篇Yii 2 RESTful 响应格式详解内容协商、数据序列化与 JSON 输出控制下一篇5步掌握QLExpress动态规则引擎从配置到实时生效的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考