LAMMPS bond_style mm3 键伸缩势详解:YAFF 包的 MM3 非谐势实现、参数配置与实战应用
科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载导读bond_style mm3是 LAMMPS 中用于描述键伸缩运动的非谐势模型源自 Allinger 等人在 1989 年提出的 MM3 分子力学力场其能量表达式中包含对键长的三次方与四次方修正项比简单的简谐harmonic键势更接近真实分子的键伸缩行为。本文以 doc/src/bond_mm3.rst 为骨架结合 src/YAFF/bond_mm3.cpp 源码实现、单元测试与 MOF 模拟示例完整讲解该势函数的数学形式、系数设定方法、底层实现原理含单位换算与 MM3 论文勘误、加速变体及适用场景。读完本文你将能够在金属有机框架MOF等分子体系的 LAMMPS 输入脚本中正确配置并使用bond_style mm3并理解其能量/力的推导细节。MM3 键伸缩势概述与所属包bond_style mm3定义的是一个在键长方向上非谐的键伸缩势其势函数由 Allinger 等人的 MM3 力场论文提出见 doc/src/bond_mm3.rst 末尾的参考文献 Allinger, Yuh, Lii, JACS, 111(23), 8551-8566 (1989)。该样式属于YAFF 包。从 src/YAFF/README 可以看到YAFF 包实现了使用 QuickFF 工具为金属有机框架MOF模拟生成的典型力场所需要的各类样式。包内除bond_mm3外还包含angle_mm3MM3 角势、pair_mm3_switch3_coulgauss_longMM3 静电/短程相互作用、improper_distharm等配套样式以及 src/YAFF/angle_mm3.cpp、src/YAFF/pair_mm3_switch3_coulgauss_long.cpp 等实现文件。也就是说bond_style mm3通常作为 MOF 全力场中键伸缩部分的一员与角势、二面角势、非键势共同工作。限制说明该样式只有在 LAMMPS 编译时启用了 YAFF 包CMake 选项PKG_YAFF见 cmake/CMakeLists.txt之后才可用。势函数数学形式与单位约定能量公式bond_style mm3的势能表达式为E K (r - r0)^2 [ 1 - 2.55(r - r0) (7/12) * 2.55^2 * (r - r0)^2 ]其中r0键的平衡长度equilibrium bond lengthK键伸缩力常数prefactor即bond_coeff中的第一个系数k2r当前键长。该式本质上是在简谐项K(r-r0)^2的基础上叠加上键长偏差(r-r0)的三次方、四次方修正从而描述非谐anharmonic键伸缩行为当键被拉长或压缩到远离平衡位置时势能曲线不再关于r0对称这符合真实化学键在压缩时变硬、在拉伸时变软的物理特性。系数量纲与单位换算非谐修正项的前置因子带有 Å 量纲-2.55的单位是Å⁻¹(7/12) * 2.55²的单位是Å⁻²。代码内部会自动完成这些因子到当前单位体系的换算。以 src/YAFF/bond_mm3.cpp 为例实现中先根据force-angstrom换算出 K3、K4K3 -2.55/force-angstrom; K4 7.0/12.0*2.55*2.55/force-angstrom/force-angstrom;force-angstrom是 LAMMPS 内部维护的1 Å 在当前单位制下对应的长度数值在real、metal等单位下其值为 1.0在 SI 单位制下为1.0e-10。因此换算对用户完全透明用户在bond_coeff中只需按当前单位给出 K 与 r0 即可。KOKKOS 加速版本在 src/KOKKOS/bond_mm3_kokkos.cpp 中同样在主机端预计算d_K3、d_K4后传入设备端。MM3 论文勘误提示官方文档特别提醒MM3 原始论文中的 Eq.(1) 存在一处笔误——式中(7/12) * 2.55应为(7/12) * 2.55²。LAMMPS 采用修正后的正确形式即本文上述公式。这一点在使用其它工具导出 MM3 参数时值得留意避免参数含义与 LAMMPS 实现不一致。语法与系数设置命令语法bond_style mm3语法极其简洁没有任何额外参数所需系数全部通过bond_coeff命令或数据文件给出。支持的键类型系数对每一种键类型bond type必须通过bond_coeff命令或read_data/read_restart读入的 data 文件 / 重启文件定义两个系数系数符号量纲/单位含义1Kenergy/distance²键伸缩力常数源码中记为k22r0distance键的平衡长度官方文档示例bond_style mm3 bond_coeff 1 100.0 107.0即对键类型 1 设置K 100.0、r0 107.0单位取决于units设置例如real单位下能量为 kcal/mol、距离为 Å。多类型体系的系数设定来自单元测试unittest/force-styles/tests/bond-mm3.yaml 展示了含 5 种键类型的多键型体系如何配置bond_style mm3 bond_coeff 1 250.0 1.5 bond_coeff 2 300.0 1.1 bond_coeff 3 350.0 1.3 bond_coeff 4 650.0 1.2 bond_coeff 5 450.0 1.0该测试同时声明了extract: k2 1与extract: r0 1对应源码中 bond_mm3.cpp 的extract()接口——它允许其它模块如 MC 移动、fix命令按名称提取内部系数数组k2与r0。在 data 文件 / 重启文件中读写系数从源码可以看到系数在各类文件中的读写格式data 文件写入bond_mm3.cpp按type k2 r0的列格式输出1 %g %g\n重启文件读写bond_mm3.cpp分别将k2[1..nbondtypes]与r0[1..nbondtypes]写入读回后由 0 号进程广播MPI_Bcast到所有进程并把setflag全部置 1。因此系数既可以在输入脚本中通过bond_coeff设定也可以预先写在 data 文件的Bond Coeffs段或在重启后直接延续。源码级实现原理compute能量与力的计算核心计算在 src/YAFF/bond_mm3.cpp 的compute()中完成遍历neighbor-bondlist中的每条键由两原子坐标差delx/dely/delz求出键长r sqrt(rsq)偏差dr r - r0[type]计算能量仅当需要能量时ebond k2[type] * dr^2 * (1 K3*dr K4*dr^2)计算力de_bond 2*k2[type]*dr * (1 1.5*K3*dr 2*K4*dr^2) fbond -de_bond / r即F -dE/dr再沿键方向向量分配到两端原子f[i1] delx*fbondf[i2] - delx*fbond并遵循newton_bond标志与局部原子归属判断。力表达式中1.5*K3*dr 2.0*K4*dr^2正是对(1K3*drK4*dr²)求导乘以 2 来自dr²的导数的结果体现了能量表达式与力的自洽性。single单键能量查询single() 用于计算单条键的能量与力供compute bond/local等输出原子级/键级量时调用逻辑与compute完全一致返回k2[type]*dr²*(1K3*drK4*dr²)并通过引用参数fforce输出力值。born_matrix弹性张量接口bond_mm3声明了born_matrix_enable 1bond_mm3.cpp并在 born_matrix() 中提供键势对键长的一阶、二阶导数du、du2du 2*k2*dr 3*K3*dr² 4*K4*dr³ du2 2*k2 6*K3*dr 12*K4*dr²该接口服务于基于 Hessian/弹性矩阵的后续计算如声子、弹性常数类分析说明bond_style mm3在 LAMMPS 内部被当作可提供解析二阶导的完整力场组件来对待。头文件中的类结构src/YAFF/bond_mm3.h 中通过BondStyle(mm3,BondMM3)宏注册样式名BondMM3继承自基类Bond内部仅维护两个系数数组double *r0, *k2并重写compute、coeff、equilibrium_distance、write_restart/read_restart、write_data、single、born_matrix、extract等虚函数。其中equilibrium_distance()返回r0[i]可被需要平衡键长的模块直接调用。加速变体mm3/kk 与 mm3/omp与其它键样式一样bond_style mm3提供两种加速变体Accelerator Variantsmm3/kkKOKKOS与mm3/ompOPENMP。根据 doc/src/accel_styles.rst 的通用说明加速样式在功能上与普通样式完全一致只是针对不同硬件做了优化结果除浮点舍入误差外应当相同。mm3/omp见 src/OPENMP/bond_mm3_omp.cpp继承BondMM3在compute()中通过#pragma omp parallel将键列表按线程切分loop_setup_thr并使用ThrData做线程级累加与归约reduce_thr适用于多核 CPU 共享内存并行。mm3/kk见 src/KOKKOS/bond_mm3_kokkos.cpp使用 Kokkos 的parallel_for/parallel_reduce在设备端GPU/众核执行键遍历k_r0、k_k2等系数数组通过sync/modify在主机与设备间同步。使用方式有三种在输入脚本中显式写bond_style mm3/omp或mm3/kk、通过-suffix命令行开关、或输入脚本内的suffix命令。注意加速变体只有在 LAMMPS 相应编译进 OPENMP / KOKKOS 包时才可用。单元测试验证LAMMPS 自带的力样式回归测试 unittest/force-styles/tests/bond-mm3.yaml 对bond_style mm3做了完整的数值验证前置条件atom full、bond mm3使用 29 个原子的测试体系in.fourmol对应 unittest/force-styles/tests/in.fourmol真实单位制units real给出 5 组bond_coeff、平衡键长校验equilibrium: 5 1.5 1.1 1.3 1.2 1、初始能量init_energy: 4.247265008273143、运行后能量run_energy: 4.190444665774225以及 29 个原子逐项的init_forces/run_forces/init_stress/run_stress参考值测试容差epsilon: 2.5e-13用于验证实现与参考值的严格一致。这说明bond_style mm3的能量、力、应力张量输出都有自动化的数值基准用户若改动实现或怀疑结果可直接运行该测试套件复核。实战应用MOF 体系中的完整力场配置YAFF 包的核心应用场景是用 QuickFF 生成 MOF 力场。仓库自带的示例 examples/PACKAGES/yaff/mof5/in.mof5 给出了一个完整的、使用bond_style mm3的 NPT 模拟输入脚本值得逐段解读units real atom_style full boundary p p p dielectric 1 special_bonds lj 0.000000 0.000000 1.000000 coul 1.000000 1.000000 1.000000 pair_style mm3/switch3/coulgauss/long 12.0000 4.0000 pair_modify table 16 # Accuracy of the table used for real space electrostatics pair_modify mix arithmetic pair_modify tail no bond_style mm3 angle_style hybrid cross mm3 dihedral_style fourier improper_style distharm read_data lammps.data # Data file location kspace_style pppm 0.0000001 # Ewald accuracy neighbor 2.0 bin neigh_modify every 2 delay 4 check yes thermo 10 thermo_style custom step etotal ke temp pe emol evdwl ecoul elong etail vol press timestep 0.5 # in femtosecond velocity all create 0.0 5 fix 1 all npt temp 300.0 300.0 100.0 tri 1.0 1.0 1000.0 tchain 3 mtk yes nreset 1000 run 100要点bond_style mm3与pair_style mm3/switch3/coulgauss/long、angle_style hybrid cross mm3、improper_style distharm等 YAFF 配套样式联合使用构成完整的 MOF 力场键系数由read_data lammps.data读入data 文件Bond Coeffs段格式为type k2 r0配套示例还包括 examples/PACKAGES/yaff/mil53al/in.mil53aMIL-53(Al) 体系bond_style harmonic变体与 examples/PACKAGES/yaff/mof5/lammps.dataMOF-5 数据文件可用作对照学习。构建要求与注意事项必须启用 YAFF 包。CMake 构建时设置-D PKG_YAFFonYAFF 是 cmake/CMakeLists.txt 中列出的标准包默认关闭或用传统 make 方式make yes-yaff后重新编译可参考Build package相关文档页。系数缺失会报错。bond_mm3.cpp 中coeff()要求恰好 3 个参数type、K、r0参数个数不符或类型范围无效时 LAMMPS 会终止并提示Incorrect args for bond coefficients未被bond_coeff或 data 文件覆盖的键类型在运行时将产生未定义行为因此务必确保所有键类型都被赋值。默认值该样式没有额外的默认系数文档 Default: none所有系数必须显式给出。与其它键势的区分bond_style mm3专指 Allinger MM3 力场中的非谐键伸缩项与 LAMMPS 默认的bond_style harmonic简谐势在数学形式、参数含义上均不同不可混用系数。相关命令与进一步阅读bond_coeff设定键类型系数的核心命令read_data、read_restart从 data 文件或重启文件读入系数angle_mm3配套的 MM3 角伸缩势E K(θ-θ0)²[1-0.014(θ-θ0)5.6×10⁻⁵(θ-θ0)²-7.0×10⁻⁷(θ-θ0)³9×10⁻¹⁰(θ-θ0)⁴]θ0 以度为单位、内部换算为弧度pair_mm3_switch3_coulgauss_long配套的非键/静电样式src/YAFF/READMEYAFF 包说明与 QuickFF 方法论参考文献Vanduyfhuys 等J. Comput. Chem. 36(13):1015-1027 (2015) 及 39(16):999-1011 (2018)。总结bond_style mm3以 MM3 力场的非谐键伸缩势为核心通过两个系数力常数K与平衡键长r0即可描述更真实的键伸缩行为。其实现src/YAFF/bond_mm3.cpp完整覆盖了能量、力、单键查询、Born 矩阵与系数提取接口并配套 OPENMP / KOKKOS 加速变体与自动化回归测试。在实际使用中它主要服务于 QuickFF 导出的 MOF 力场见 examples/PACKAGES/yaff/mof5/in.mof5需要以PKG_YAFF编译为前提并注意 MM3 论文原始公式的勘误以及系数必须逐类型完整定义这两点。掌握上述配置与原理后你便可以在自己的 MOF / 分子模拟中正确启用并验证这一非谐键势。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐LAMMPS 的 angle_style mm3 角度势详解公式、系数配置与加速变体实战LAMMPS 的 angle_style mm3 角度势详解公式、系数配置与加速变体实战 angle_style mm3 是 LAMMPS 中实现 MM3 分科研科学计算高性能计算LAMMPS bond_style harmonic/shift/cut 详解位移截断谐振键势的参数、原理与实现LAMMPS bond_style harmonic/shift/cut 详解位移截断谐振键势的参数、原理与实现 导读 bond_style harmonic科研科学计算高性能计算LAMMPS bond_style harmonic 详解谐振键势的参数配置、源码原理与加速变体LAMMPS bond_style harmonic 详解谐振键势的参数配置、源码原理与加速变体 bond_style harmonic 是 LAMMPS 中科研科学计算高性能计算上一篇Wand-Enhancer 完整指南三步解锁 WeMod Pro 功能免费解除时长限制下一篇抖音无水印下载入门指南douyin-downloader 三分钟跑通批量下载创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Flutter Engine Windows 无障碍实现解析:MSAA 与 UI Automation 在 AXPlatformNodeWin 中的落地

Flutter Engine Windows 无障碍实现解析:MSAA 与 UI Automation 在 AXPlatformNodeWin 中的落地

跨平台前端移动开发OpenHarmony 【免费下载链接】flutter_flutter 本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于…

2026/10/15 3:33:41 阅读更多 →
Natron ErodeSmooth 节点完全指南:归一化功率加权腐蚀/膨胀滤镜的参数解析与源码级解读

Natron ErodeSmooth 节点完全指南:归一化功率加权腐蚀/膨胀滤镜的参数解析与源码级解读

音视频视频处理图形学桌面应用 【免费下载链接】Natron Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry. 项目地址: https://gitcode.com/gh_mirrors/na/Natron 点击查看 …

2026/10/15 3:32:41 阅读更多 →
GreaterWMS 移动端构建实战:基于 Quasar CLI 与 Cordova 的 Android 打包安装全流程

GreaterWMS 移动端构建实战:基于 Quasar CLI 与 Cordova 的 Android 打包安装全流程

后端前端企业应用 【免费下载链接】GreaterWMS This Inventory management system is the currently Ford Asia Pacific after-sales logistics warehousing supply chain process . After I leave Ford , I start this project . You can share your vacant warehouse space, …

2026/10/15 3:32:41 阅读更多 →

最新新闻

Linux下C/C++动静态库制作与使用实战指南

Linux下C/C++动静态库制作与使用实战指南

长期以来在Linux下做C/C开发,动静态库始终是绕不开的一个核心技能。无论是自己封装模块、分发二进制产物,还是处理第三方依赖,理解库的制作与使用直接决定了你在编译链接这块能不能少掉头发。我见过不少开发者写业务逻辑很熟练,一…

2026/10/15 4:26:50 阅读更多 →
Flutter鸿蒙开发实战:星座应用跨平台全流程解析

Flutter鸿蒙开发实战:星座应用跨平台全流程解析

1. 项目背景与整体设计思路1.1 为什么选 Flutter 做鸿蒙开发聊到跨平台开发,Flutter 这几年的热度一直在线。原因很简单——一套 Dart 代码,同时跑在 Android、iOS、Windows、macOS、Linux 上,现在还要加上鸿蒙。放在以前,鸿蒙应用…

2026/10/15 4:26:50 阅读更多 →
线上故障排查实战指南:从告警到恢复的黄金步骤

线上故障排查实战指南:从告警到恢复的黄金步骤

半夜两点被电话叫醒,睁开眼看到屏幕上一排红色告警,心跳直接拉满。这种场景,几乎所有做过线上系统的开发者都经历过。告警本身不可怕,可怕的是大脑一片空白,不知道该先点哪里,也不知道哪些命令能救命。这篇…

2026/10/15 4:26:50 阅读更多 →
基于SpringBoot+Vue的个人博客系统开发实战

基于SpringBoot+Vue的个人博客系统开发实战

1. 项目概述与整体技术选型1.1 这个博客系统到底解决了什么问题做个人博客这件事,看起来简单,真做起来坑不少。早期用现成框架,比如WordPress或者各类静态站点生成器,总觉得差了点什么——要么太重,装一堆插件才能用&a…

2026/10/15 4:26:50 阅读更多 →
共享内存IPC实战:从零拷贝原理到信号量同步,提升跨进程通信性能

共享内存IPC实战:从零拷贝原理到信号量同步,提升跨进程通信性能

共享内存(shm)这个老牌IPC方案,我最近在一个数据采集服务里又把它翻了出来。这个服务原本是跨进程传数据,管道和Unix域Socket用得挺顺手,可流量一起来,CPU占用就再也压不下去。换成共享内存之后&#xff0c…

2026/10/15 4:26:50 阅读更多 →
如何判断Ubuntu是否真的关机?三路检查方法与实战探测脚本

如何判断Ubuntu是否真的关机?三路检查方法与实战探测脚本

你有没有遇到过这种情况:在终端里输入了sudo shutdown now,屏幕上日志飞快滚动,最后一切归于黑暗,风扇也慢慢停转,你很自然地认为这台 Ubuntu 机器已经关机了。但我在几年的实践中发现,这个结论经常下得太早…

2026/10/15 4:25:50 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →