资讯动态

LAMMPS `pair_style ldd` 完全指南:BOCS 包局域密度(LD)与平方梯度(SG)势

发布时间:2026/10/16 2:54:30 来源:尧图企业网站定制
科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载pair_style ldd是 LAMMPS BOCS 包src/BOCS中实现的一类多体manybody势能样式它把相互作用定义为中心粒子周围其他粒子的局域密度的函数最早由 Pagonabarraga 与 Frenkel 提出并可由 DeLyser 与 Noid 引入的平方梯度square gradient修正进一步推广。本文基于 pair_ldd.rst 官方文档结合 Howto_ldd.rst 教程与 src/BOCS 源码实现系统讲解其命令语法、势能文件格式、五种指示函数与七种势函数形式、源码级计算流程以及如何通过fix pair输出局域密度数据并给出 examples/PACKAGES/bocs 中的完整可运行示例帮助你直接上手搭建粗粒化CG模型中的局域密度势仿真。命令语法与使用示例Syntaxpair_style ldd pair_coeff * * file.ldd S1 S2 ...lddpair style 名称不带任何参数源码 pair_ldd.cpp 的settings()会拒绝任何多余参数并报错Illegal pair_style ldd command。file.ldd局域密度势能文件名通常以.ldd结尾。S1, S2, ...把 N 个 LAMMPS 原子类型atom type依次映射到势能文件中的物种名species nameN 等于原子类型总数多个原子类型可以映射到同一个物种。示例一两个原子类型分别映射到物种 A 和 B# two atom types mapped to species A and B pair_style ldd pair_coeff * * LDINDSET1.ldd A B示例二通过hybrid/overlay把局域密度相互作用与其他 pair style 叠加详见 pair_hybrid.rst# combine local-density interactions with other pair styles pair_style hybrid/overlay ldd lj/cut 14.0 pair_coeff 1 1 lj/cut 1.0 1.0 pair_coeff * * ldd ld_input_file.ldd A势能文件条目格式势能文件中每个有序物种对占一行Si Sj indicator wtype r0 rc self yes/no potential ptype args [gradient gtype args] [ignore]各关键字含义关键字必选参数说明indicator是wtype r0 rc定义指示函数w(r)的形式、内半径r0与截断rcself是yes/no是否把中心粒子自身 (IJ) 计入局域密度potential是ptype args定义局域密度势U_ρ(ρ)的函数形式与参数gradient否gtype args定义平方梯度系数U_∇(ρ)的函数形式与参数ignore否无关闭该物种对的局域密度相互作用物理原理局域密度势与平方梯度势局域密度的定义考虑一个关于粒子间距的指示函数w(r)满足w(0)1、w(rc)0且在0 ≤ r ≤ rc上连续可微。记[w]为w(r)的空间积分在三维下[w] ∫₀^{rc} 4πr²w(r)dr归一化指示函数为w̄(r) w(r)/[w]。中心粒子I周围的局域密度定义为ρ_I Σ_J w̄(r_IJ)对J的求和是否包含I本身由self yes/self no决定。实践上两者的唯一差别是势函数自变量发生1/[w]的水平平移。LD 势与其对应的对力局域密度势Local DensityLD及其对应的两体力为U_LD(R) Σ_I U_ρ(ρ_I) F_IJ;ρ(R) (F_ρ(ρ_I) F_ρ(ρ_J)) w̄(r_IJ) e_IJ其中F_ρ(x) -dU_ρ(x)/dx。平方梯度SG修正可选的gradient关键字实现 DeLyser 与 Noid 提出的、作为局域密度平方梯度函数的势能项参见 Howto_ldd.rst 与文献Coarse-grained models for local density gradients, J. Chem. Phys. 156, 034106 (2021)U_SG(R) Σ_I U_∇(ρ_I) ‖∇_I ρ_I‖²多物种推广在 Howto_ldd.rst 中给出了 N 物种的一般形式对中心粒子I类型t_I αβ 型粒子围绕它的局域密度为ρ_{β|I} Σ_{J∈S_{β|I}} w̄_{β|α}(r_IJ)其中S_{β|I}是与I之间存在非键相互作用未被 neighbor list 排除的 β 型粒子集合。此时总 LD 势为U_LD(R) Σ_I Σ_β U_{β|t_I}(ρ_{β|I})总 SG 势为U_SG(R) Σ_I Σ_β U_{∇;β|t_I}(ρ_{β|I}) |∇_I ρ_{β|I}|²。一个重要特性是w̄_{β|α}与U_{β|α}关于 α、β 不对称例如 α 代表溶剂、β 代表溶质时可以分别指定溶质周围的溶剂与溶剂周围的溶质两套不同的权重函数与势函数。在势能文件中条目A B表示物种 A 的原子被物种 B 原子包围的相互作用即文献中常写的B|A与B A截然不同。self、ignore与noforce的语义self yes把中心粒子自身对同类物种局域密度的贡献w̄_{α|α}(0)计入。注意若I为 α 型粒子它不可能对围绕I的 ββ≠α型局域密度有贡献因此此时 self 项会被自动排除并产生一条警告源码 pair_ldd.cpp 中coeff_ldd()会检查si sj才允许开启 self。ignore用于只需部分物种对之间存在局域密度势的模拟。一旦某物种对被标记为ignore就不再为其计算任何局域密度与梯度。noforce势仅限potential关键字仍然计算局域密度与梯度供查看但不施加任何力。指示函数indicator五种w(r)形式indicator关键字是必选的形式为indicator wtype r0 rc。除lucy、dpd要求r0 0外其余三种sphere、shell、smooth在r ≤ r0内取值为 1。下面θ(x)为 Heaviside 函数x ≥ 0时为 1否则为 0。lucySPH 中常用的 Lucy 函数要求r0 0w(r) (1 - r/rc)³(1 3r/rc) [w] 16πrc³ / 105 w̄(r) 105(1 - r/rc)³(1 3r/rc)θ(rc - r) / (16πrc³)源码实现见 ldd_indicator_lucy.cpp它以五次多项式系数等价地存储w(r)并对三维情况取norm 16π/105 · rc³w()还做了数值保护r极接近rc时把浮点误差造成的负值截断为 0避免局域密度出现微小负值导致查表势报错。dpd简单二次指示函数要求r0 0w(r) (1 - r/rc)² [w] 2πrc³ / 15 w̄(r) 15(1 - r/rc)²θ(rc - r) / (2πrc³)sphere平滑 Heaviside 指示函数考虑半径X的大球与半径x的小球令r0 X - x、rc X x则w(r)等于两球心相距r时小球被大球覆盖的体积分数w(r) 1 r ≤ r0 w(r) c₃r³ c₁r c₀ c₋₁/r r0 ≤ r ≤ rc w(r) 0 r ≥ rc源码 ldd_indicator_sphere.cpp 中由rs (rc - r0)/2、rb (rc r0)/2推导出四个系数并对 2D/3D 分别解析计算归一化积分norm。shellSanyal 参数化的平滑 Heaviside 函数r ≤ r0时为 1r ≥ rc时为 0中间以连续一阶导数在r0、rc处二阶导数不连续平滑过渡w(r) 1 r ≤ r0 w(r) c₀ c₂r² c₄r⁴ c₆r⁶ r0 ≤ r ≤ rc w(r) 0 r ≥ rcsmooth与shell类似但二阶导数连续w(r) 1 r ≤ r0 w(r) Σ_{i0}^{5} cᵢrⁱ r0 ≤ r ≤ rc w(r) 0 r ≥ rc注意r0与rc必须满足rc 0、r0 ≥ 0、r0 rc。源码 pair_ldd.cpp 在解析indicator时会先做该合法性校验因为所有指示函数在初始化系数时都要除以rc部分还要除以rc - r0。所有指示函数实现共享 ldd_indicator.h 中的抽象接口w(r)、w(r)、w(r)SG 势的对力分解需要用到二阶导数w(r)。势函数与梯度系数potential / gradient的函数形式potential关键字必选定义U_ρ可选gradient关键字定义U_∇。两者都是风格名 风格专属参数下面的X代表ρ或∇F_X -dU_X/dρ。noforce仅用于 potential只计算密度/梯度、不施加力U_ρ(ρ) 0F_ρ(ρ) 0。这是除ignore之外另一种关闭相互作用的方式——它保留密度与梯度的计算以便检查。constant1 个参数cU_X(ρ) c, F_X(ρ) 0常量potential不改变动力学但常量gradient会影响动力学因为U_∇·‖∇ρ‖²中的梯度项依然存在。linear2 个参数斜率m、截距bU_X(ρ) mρ b, F_X(ρ) -mquadratic3 个参数a b cU_X(ρ) aρ² bρ c, F_X(ρ) -2aρ - b示例 examples/PACKAGES/bocs/1_site_just_pair_LD/basic.ldd 中即使用potential quadratic 1 1 1。mdpd1 个参数B应用许多 MDPD 研究如 Warren 2003、Ghoufi 2011中使用的二次局域密度势。与dpd指示函数及 pair_dpd.rst 的pair_style dpd组合时可复现传统的多体 DPD 保守力U_X(ρ) Bπrc⁴ρ² / 30, F_X(ρ) -Bπrc⁴ρ / 15table/lin、table/spline、table/gradlin、table/gradspline1 个参数表文件名table/lin对U_X做线性插值table/spline对U_X用三次样条插值table/gradlin、table/gradspline分别是对应的插值方式专门用于gradient关键字之后的平方梯度系数。表文件每一行包含三个数ρ, U(ρ), -dU/dρ且必须落在均匀的 ρ 网格上源码 ldd_potential.cpp 会校验相邻行间距一致误差超过 1% 即报错get_table_index 在密度超出表范围时同样报错。table/spline与table/gradspline会额外读取/推导节点处的二阶导数用于样条插值见 ldd_potential.h 的t_table结构体。示例表格位于 examples/PACKAGES/bocs/4_sites_LD_SG/nb_interaction_tables例如 LD_table.11.noself.dat 第 1 行为-0.00010 0.000000 0.000000即三列ρ U F。源码级实现从势能文件到对力的计算流程pair_style ldd的核心实现在 src/BOCS/pair_ldd.cpp整体架构如下读文件与物种映射coeff()用map_element2type()建立原子类型 → 物种映射pair_coeff要求参数个数严格等于3 ntypes再调用read_file()pair_ldd.cpp。文件只在 rank 0 读取每行经MPI_Bcast广播各进程构建完全一致的多态相互作用对象。读完后会检查每个有序物种对必须恰好出现一次重复或缺失都会报错若某物种的所有出边均被ignore则它在ignore_me[]中被标记为惰性物种后续计算直接跳过。每步计算局域密度与梯度compute()pair_ldd.cpp先调用LDD_calculate_LDs()pair_ldd.cpp完成一次邻居遍历累加每个原子周围的各物种局域密度与梯度self项通过在初始化时给local_dens[i][itype]加上Inds[itype][itype]-invnorm即1/[w]实现。随后LDD_calculate_energies()pair_ldd.cpp计算每个原子的分物种 LD 能量、SG 能量与总能量。对力分解LD 对力按F (F_ρ(ρ_I) F_ρ(ρ_J))·w̄(r_IJ)/r_IJ · r_IĴ分解pair_ldd.cppSG 对力则包含沿r_IJ方向gf1与沿局域密度梯度方向gf2的两部分分量需要用ev_tally_xyz()正确更新应力张量pair_ldd.cpp。MPI 通信因为一个原子的局域密度依赖其邻居含幽灵原子的贡献LDD_calculate_LDs()之后依次执行reverse_comm汇总幽灵原子贡献与forward_comm把密度与三分量梯度广播给幽灵原子。通信缓冲按4 * ntypes上界在构造函数中预留pair_ldd.cpp这也是该风格必须在建盒之后定义的原因之一。每原子数据导出extract_peratom()pair_ldd.cpp向fix pair暴露五个字段local_density与energy每物种一列grad_density每物种三列x、y、ztotal_energy为标量。各指示函数与势函数通过注册表ldd_indicator_register.cpp、ldd_potential_register.cpp以字符串名动态创建多态子类对象因此新增函数形式只需实现 ldd_indicator.h / ldd_potential.h 定义的虚接口。输出局域密度数据fix pair接口每原子的局域密度、密度梯度与能量每步都重新计算但不会存入 data 或 restart 文件。它们通过 fix_pair.rst 的fix pair命令暴露给 LAMMPS 其余部分支持以下每原子字段每个字段按物种映射顺序每物种一列grad_density每物种三列字段含义local_density每个原子周围各物种的局域密度grad_density局域密度的梯度每物种 x、y、z 三列energy每个物种贡献的U_ρgrad_energy每个物种贡献的U_∇total_energy单个原子上所有局域密度能量之和标量例如fix f all pair 1 ldd local_density 0 total_energy 0创建每原子数组f_f前几列为各物种的局域密度最后一列为总能量随后可用 dump.rst 的dump custom输出或供其他每原子 compute / fix 读取。例如 examples/PACKAGES/bocs/4_sites_LD_SG/in.ldd_molecule 中注释掉的完整用法fix lddout all pair 1 ldd local_density 0 total_energy 0 grad_density 0 grad_energy 0 dump 4 all custom 500 bocs_traj.lmp id x y z vx vy vz fx fy fz f_lddout[*] dump_modify 4 sort id该示例的f_lddout[1..4]为 A、B、C、D 四物种的局域密度f_lddout[5]为总能量f_lddout[6..17]为四物种的梯度三分量f_lddout[18..21]为各物种的梯度能量共 21 列。这类含局域密度信息的轨迹可直接交给 BOCS 工具进行势函数参数化。完整可运行示例示例一单物种解析势atomic 风格examples/PACKAGES/bocs/1_site_just_pair_LD/in.basic_ldd 演示了最简用法普通atomic原子风格用hybrid/overlay把ldd与lj/cut叠加并配套了单/四进程参考日志log.1Jun2026.basic_ldd.g.1units real dimension 3 boundary p p p atom_style atomic newton on timestep 1.0 region my_box block 0.0 53.2587274361 0.0 53.2587274361 0.0 480 create_box 1 my_box create_atoms 1 random 968 13427890 my_box overlap 2 mass 1 32.042 velocity all create 270 22345 dist gaussian loop geom pair_style hybrid/overlay ldd lj/cut 14.0 pair_coeff 1 1 lj/cut 1 1 # map atom type 1 to local-density species A (defined in the potential file) pair_coeff * * ldd basic.ldd A neigh_modify delay 5 every 1 check yes neighbor 2.0 bin thermo 1000 fix 1 all nvt temp 270 270 100.0 run 10000配套势能文件 basic.ldd单物种只有A A一个有序对lucy指示函数 quadratic势# local-density potential for a single species A A A indicator lucy 0.0 5.26850 self yes potential quadratic 1 1 1示例二四物种分子模型LD SG 分层full 风格 查表examples/PACKAGES/bocs/4_sites_LD_SG/in.ldd_molecule 使用full原子风格模拟 A-B-C-D 四珠链分子拓扑文件 ABCD.mol、数据文件 data.ldd_moleculeunits real dimension 3 boundary p p p atom_style full read_data data.ldd_molecule # Use pair_style hybrid to incorporate the LDD interactions with other forces pair_style hybrid/overlay ldd table spline 3000 bond_style harmonic angle_style harmonic dihedral_style harmonic improper_style none include ff_bonded_params.lammps pair_coeff * * table nb_interaction_tables/lammps_nb_ACA_ACA.table nb_ACA_ACA 15.0 # map atom types 1-4 to local-density species A,B,C,D (defined in the file) pair_coeff * * ldd ABCD_mol.ldd A B C D timestep 0.5 neighbor 2.0 bin neigh_modify delay 0 every 1 check yes thermo 500 fix 1 all nvt temp 300.0 300.0 100.0 run 10000对应的势能文件 ABCD_mol.ldd 按中心物种组织16 个有序对全部列出同类对A|A、B|B、C|C、D|D在 LD 势之上再叠加 SG 势gradient table/gradspline交叉对只保留 LD 势A A indicator dpd 0.0 6.5 self no potential table/spline nb_interaction_tables/LD_table.11.noself.dat gradient table/gradspline nb_interaction_tables/SG_table.1.1.noself.dat A B indicator dpd 0.0 6.5 self no potential table/spline nb_interaction_tables/LD_table.11.noself.dat ... B B indicator dpd 0.0 6.5 self no potential table/spline nb_interaction_tables/LD_table.22.noself.dat gradient table/gradspline nb_interaction_tables/SG_table.2.2.noself.dat ...分子体系中的局域密度语义对于分子体系某粒子I周围参与局域密度求和的粒子由非键邻居列表决定被邻居列表排除的粒子同样被排除在局域密度求和之外。以默认 1-2、1-3、1-4 非键排除的五珠链A₁-B₂-C₃-D₄-E₅为例围绕位点 1 的 E 型局域密度ρ_{E|1}包含链端贡献w̄_{E|A}(r₁₅)而围绕位点 1 的 B 型局域密度ρ_{B|1}只包含分子间贡献围绕位点 1 的 A 型局域密度ρ_{A|1}是否包含自贡献w̄_{A|A}(0)则由self yes/no决定。限制与注意事项属于 BOCS 包该 pair style 是 BOCS 包的一部分只有在 LAMMPS 编译时启用该包才可用cmake 构建使用-D PKG_BOCSyes可参考 cmake/packaging/org.lammps.lammps-gui.yml 与 cmake/CMakeLists.txt 中的包列表更多信息见 Build_package.rst。要求newton on源码 pair_ldd.cpp 的init_style()在force-newton_pair 0时直接报错。必须在建盒之后使用pair_style ldd命令必须出现在read_data、read_restart或create_box之后因为它要根据原子类型数确定每类型物种映射与进程间通信缓冲大小settings()会检查domain-box_exist并报错提示见 pair_ldd.cpp。作为多体风格它不从 data 文件读取每类型Pair Coeffs因此无需提前定义。二进制 restart 不支持该风格不写入二进制 restart 文件信息构造函数中restartinfo 0因此从 restart 继续模拟时必须在read_restart之后重新指定pair_style ldd与pair_coeff参见 restart.rst。不支持混合规则没有自动 mixing也不支持 pair_modify.rst 的 shift、table 与 tail 修正选项。关键字完整性每个物种对除非使用ignore否则indicator、self、potential三个关键字缺一不可gradient可选每个有序物种对在文件中必须且只能出现一次。r0约束lucy与dpd要求r0 0sphere、shell、smooth在r0内部取非零值。查表越界即报错table 系列势要求模拟中出现的局域密度落在表的[lo, hi]区间内ldd_potential.cpp超出会终止运行。功能版本该风格为较新加入的功能文档标注versionadded:: 4Jul2026使用时请确认你的 LAMMPS 版本包含 BOCS 包的 ldd 支持。相关命令与参考文献相关命令pair_coeff见 pair_coeff.rst、fix pair见 fix_pair.rst以及完整教程页 Howto_ldd.rst更多多体风格可对照 pair_sw.rst 与 pair_tersoff.rst同为单条pair_coeff * *读取势能文件的 manybody 约定。核心文献(Pagonabarraga)I. Pagonabarraga, D. Frenkel. Dissipative particle dynamics for interacting systems. J. Chem. Phys., 115, 5015 (2001).(DeLyser)M.R. DeLyser, W.G. Noid. Coarse-grained models for local density gradients. J. Chem. Phys., 156, 034106 (2021).(Lucy)L.B. Lucy. A numerical approach to the testing of the fission hypothesis. Astronomical Journal, 82, 1013-1024 (1977).(Sanyal)T. Sanyal, M.S. Shell. Coarse-grained models using local-density potentials optimized with the relative entropy: Application to implicit solvation. J. Chem. Phys., 145, 034109 (2016).(Warren)P.B. Warren. Vapor-liquid coexistence in many-body dissipative particle dynamics. Phys. Rev. E, 68, 066702 (2003).(Ghoufi)A. Ghoufi, P. Malfreyt. Mesoscale modeling of the water liquid-vapor interface: A surface tension calculation. Phys. Rev. E, 83, 051601 (2011).在应用层面LD/SG 势特别适合补充 NPT 系综与界面环境下的粗粒化 pair 势能够显著改善压强-密度状态方程、界面轮廓、液-气共存以及体相/界面体系可迁移性的粗粒化描述SG 势的计算开销高于纯 LD 势因此粗粒化实践中建议先构建 LD 势必要时再叠加 SG 势进行精修。这类 LD/SG 势场可从全原子轨迹数据出发用 BOCS 软件多尺度粗粒化方法参数化得到——这正是 examples/PACKAGES/bocs 中查表格式势文件的典型来源。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐LAMMPS 局部密度依赖势LDD指南从 local density 与 square gradient 势到 BOCS 粗粒化建模LAMMPS 局部密度依赖势LDD指南从 local density 与 square gradient 势到 BOCS 粗粒化建模 导读 本文围绕 L科研科学计算高性能计算LAMMPS pair_style lambda/zone/apip 完全指南APIP 自适应精度势的空间过渡区计算LAMMPS pair_style lambda/zone/apip 完全指南APIP 自适应精度势的空间过渡区计算 pair_style lambda/zo科研科学计算高性能计算LAMMPS EAM 势函数完全指南pair_style eam 家族从原理到实战LAMMPS EAM 势函数完全指南pair_style eam 家族从原理到实战 导读 嵌入原子方法Embedded Atom Method, EAM科研科学计算高性能计算上一篇Falco社区版路线图2025年功能规划下一篇Min浏览器任务自动化专家策略企业流程再造创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑