资讯动态

LAMMPS pair_style mgpt 命令实战指南:矩阵 MGPT 多体势的原理、配置与运行

发布时间:2026/10/17 2:30:50 来源:尧图企业网站定制
科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载本文围绕 LAMMPS 中的pair_style mgpt命令展开系统讲解基于广义赝势理论GPT的模型 MGPT 多体势在钽Ta、钼Mo、钒V等过渡金属模拟中的完整用法。你将掌握pair_style mgpt的语法、pair_coeff各选项volpress、nbody、precision的含义、parmin/potin 势文件的数据结构、体积依赖性的正确处理方式以及配套示例脚本examples/PACKAGES/mgpt和源码实现src/MGPT/pair_mgpt.cpp的底层原理。MGPT 势的理论背景从 DFT 到矩阵表示MGPTModel Generalized Pseudopotential Theory模型广义赝势理论源于 DFT 框架下的广义赝势理论GPT。GPT 为 d 带过渡金属提供了一种第一性原理的多离子相互作用势方案其真实空间总能泛函可写为E_tot(R_1 ... R_N) N·E_vol(Ω) (1/2)Σ v_2(ij; Ω) (1/6)Σ v_3(ijk; Ω) (1/24)Σ v_4(ijkl; Ω)其中各求和号上的撇号表示排除所有自相互作用项。领头体积项E_vol、两离子中心力对势v_2以及三离子、四离子角力势v_3、v_4都显式依赖于原子体积Ω但与结构无关可迁移到任意体相离子构型——包括有序与无序结构以及含点缺陷、线缺陷的固体。简化后的 MGPT 保留了E_tot的形式通过对E_vol与各v_n施加一系列系统近似而导出这些近似对 d 带接近半满的中周期过渡金属成立。MGPT 存在解析analytic与矩阵matrix两种表示矩阵表示更具一般性还可应用于 f 带锕系金属支持正则与非正则 d/f 带。在矩阵表示中多体势在模拟过程中通过 d 态或 f 态矩阵乘法实时求值驱动离子运动的力以解析方式确定。业界先后独立发展出 Glosli 与 Oppelstrup 两套快速矩阵 MGPT 算法而 LAMMPS 的mgpt对势采用后者。语法与基本用法pair_style mgpt语法极为简洁pair_style mgpt典型的完整调用序列如下pair_style mgpt pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin Omega # 也可以先把势文件复制到本地再通过本地文件名引用 cp ~/lammps/potentials/Ta6.8x.mgpt.parmin parmin cp ~/lammps/potentials/Ta6.8x.mgpt.potin potin pair_coeff * * parmin potin Omega volpress yes nbody 1234 precision double pair_coeff * * parmin potin Omega volpress yes nbody 12其中pair_style mgpt不接受任何额外参数。从源码看PairMGPT::settings() 要求参数个数必须为 0否则报Illegal pair_style command错误。pair_coeff的前两个参数必须是* *源码中coeff()会显式检查第 3、4 个参数是 parmin 与 potin 势文件名第 5 个参数是初始原子体积Omega必须以原子单位 a.u. 给出且必须大于 0源码中vol 0.0会报Invalid volume错误。其余可选参数依次为volpress、nbody、precision。mgpt对势计算力、能量以及单位原子总能E_tot/N。每个材料都需要一对 parmin/potin 势文件并通过pair_coeff指定初始原子体积Ω。parmin 与 potin 势文件数据格式与内容解读所有剩余的势参数与控制数据包括截断半径、原子质量及其他 MGPT 基础变量都存放在 parmin 与 potin 文件中。LAMMPS 的 potentials 目录下随附了 4 套过渡金属 MGPT 势材料势文件对说明钽 TaTa4.mgpt.parmin Ta4.mgpt.potinTa4 势钽 TaTa6.8x.mgpt.parmin Ta6.8x.mgpt.potinTa6.8x 势钼 MoMo5.2.mgpt.parmin Mo5.2.mgpt.potinMo5.2 势钒 VV6.1.mgpt.parmin V6.1.mgpt.potinV6.1 势每个势还配有信息性 README 文件如 potentials/Ta6.8x.mgpt.README、potentials/Mo5.2.mgpt.README其中标明了每个势的体积网格与适用范围并给出对应参考文献。parmin 控制文件以 potentials/Ta6.8x.mgpt.parmin 为例文件内容仅两行0.80 1.08 0.01 121.60 6.00 -4.00 1.00 0.00 2第一行的四个数字定义了体积网格缩放因子x (vol/vol0)^(1/3)的范围为 0.801.08、步长 0.01参考体积vol0 121.60 a.u.。第二行是势函数形式控制参数。与 README 对照可知该体积范围对应的 T0 bcc 压力范围约为 -30 GPa 到 422 GPa密度范围约 13.232.6 g/cc这意味着该势在约 0.51.26 倍平衡体积内有效。potin 数据表potin 文件是一个大型样条数据表。examples/PACKAGES/mgpt/Ta6.8x.mgpt.potin共 11253 行头部形如# DATE: 2015-07-30 CONTRIBUTOR: John Moriarty moriarty2llnl.gov CITATION: see Ta6.8x.mgpt.README in potentials directory ta 0 4 0.00000 2.00000E00 1.53181E02 3.31924E00 1.80948E02 ...第一行是元数据注释势的日期、贡献者、引用说明随后是元素标记ta、轨道角动量相关参数、势函数系数va, vb, vc, vd, ve, p1, al, rp, r00, pn等参见 src/MGPT/mgpt_readpot.h 中potdata结构体之后是大量(r, e, f)形式的径向样条数据行供 src/MGPT/mgpt_splinetab.cpp 中的样条求值函数使用。mgpt对势通过readpot()读取这些文件并按用户给定的Ω在体积网格上插值出当前原子体积下的势参数源码中splinepot.readpot(arg[2],arg[3],vol)见 pair_mgpt.cpp。体积依赖性mgpt 对势的核心特征MGPT 势是显式体积依赖的这是使用中最需要特别关注的一点src/MGPT/README 也专门强调。任何模拟的每个时间步开始时模拟盒总体积V都应满足V Ω × N其中N是金属离子数固体情况下须考虑空位与间隙原子的存在。恒定体积NVT 等模拟这是mgpt对势的正常运行模式。Ω、V、N在模拟全程保持不变均等于初始值因此只需在pair_coeff中指定一次初始原子体积。恒定应力NPT 等模拟盒子体积V会缓慢变化。每个时间步之后代码自动以Ω V/N更新原子体积同时体积项E_vol与各势v_2、v_3、v_4必须在时间步结束时按旧Ω撤销再在新Ω下重新指定。无论哪种模拟Ω都必须保持在材料E_vol与各势所定义的有效体积范围内即 parmin 文件中的网格范围超出会插值失效。日志文件 examples/PACKAGES/mgpt/log.7Feb24.bcc0.g.1 中可以看到邻居列表 cutoff 约为 13.16由 potin 中的截断半径决定即为典型的多体势远程截断特征。pair_coeff 可选参数详解pair_coeff支持三个可选参数源码 PairMGPT::coeff() 中逐一解析参数取值默认含义volpressyes/noyes是否包含计算应力张量与压力所需的全部体积导数项nbody由1、2、3、4组合1234控制E_tot中具体计算的各项precisionsingle/doubledouble矩阵计算的精度影响速度volpress体积压力开关默认的volpress yes包含计算应力张量与压力所需的E_tot全部体积导数。volpress no忽略体积项E_vol对压力的贡献可用于测试与分析目的。源码中以volpres_flag标志位记录并打印Volumetric pressure is on/off提示。nbody多体项选择nbody控制E_tot中具体计算哪几项nbody 1234默认值也是中周期过渡金属与锕系金属的正常选项保留E_tot全部四项体积项、两体、三体、四体。nbody 12仅保留体积项与两体对势项适用于可以无需v_3、v_4良好描述的 GPT 系列末端过渡金属。其他组合如23可用于测试或分析E_tot中任意一项对某个计算性质的贡献。源码中对nbody参数的解析值得一提它允许14的任意组合如1234、12、23并以位标志nbody_flag记录。代码还会根据势文件自动推断默认值——若vc/dvc为 0 则排除三体项若ve/dve为 0 则排除四体项当显式指定的nbody与势本身匹配的默认值不一致时会打印警告见 pair_mgpt.cpp。例如从 Ta6.8x.mgpt.potin 的系数行3.80000E00 1.00000E-05 -3.65805E-01 ...可见 Ta6.8x 势包含非零的三体、四体系数因此默认需要nbody 1234。precision单/双精度切换precision single仅对 x86 架构有效可将矩阵运算从默认的 15 位双精度降为 7 位单精度换取最高约 2 倍的加速precision double显式指定默认选项。源码中通过single_precision标志传给 mgpt_linalg 的构造函数单精度模式下make_bond()会将矩阵数据批量转换为 floatfmatconvdouble,float,7,8见 pair_mgpt.cpp。实际运行examples/PACKAGES/mgpt 示例脚本解析examples/PACKAGES/mgpt 目录下提供了三个循序渐进的示例脚本展示了完成恒定体积计算与模拟的必要步骤。文档强烈建议用户在深入复杂模拟之前先完整走一遍这些例子。脚本 1体相 bcc 的 T0 状态方程in.bcc0examples/PACKAGES/mgpt/in.bcc0 构建 5×5×5 个 bcc 单胞250 个原子的理想体相钽units electron atom_style atomic # Atomic volume for MGPT potential in a.u. variable atomic_vol equal 121.6 # Derive lattice constant from volume variable lattice_constant equal (${atomic_vol}*2.0)^(1.0/3.0) # Create bcc lattice with 5x5x5 unit cells (250 atoms) lattice bcc ${lattice_constant} region box block 0 5 0 5 0 5 create_box 1 box create_atoms 1 box pair_style mgpt pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} velocity all create 0.0 87287 neighbor 0.1 bin neigh_modify every 1 delay 0 check yes fix 1 all nve thermo 10 thermo_style custom step vol temp pe etotal press run 0 # Convert energy to rydbergs and pressure to gpa variable natoms equal count(all) variable voltot equal vol variable atvol equal v_voltot/v_natoms variable etot equal 2.0*pe variable etotry equal v_etot/v_natoms variable ptot equal press variable ptotgpa equal v_ptot/1.0e09 print number of atoms ${natoms} print atomic volume (a.u.) ${atvol} print total energy (ry/atom) ${etotry} print pressure (gpa) ${ptotgpa}要点解读使用units electron原子单位因为 MGPT 势数据以 Rydberg 原子单位存储mgpt对势会自动将能量从 Rydberg 换算为 Hartree 以兼容 LAMMPS 的electron单位详见下文“限制与注意事项”。atomic_vol 121.6对应 Ta6.8x 势的平衡原子体积README 中x1.0行的 vol(au)121.600晶格常数由体积反推a (2·Ω)^(1/3)bcc 每单胞 2 个原子。使用run 0不做积分只构建体系并计算单点能量/压力得到 T0 状态方程数据点。末尾通过变量将能量乘以 2.0Hartree → Rydberg换算为 Rydberg/atom压力除以 1e9 换算为 GPa并打印纯数据行便于批量采集 EOS 曲线。脚本 2含未弛豫空位的 bccin.vac0-bccexamples/PACKAGES/mgpt/in.vac0-bcc 用于在恒定原子体积下计算未弛豫空位形成能units electron atom_style atomic # Atomic volume for MGPT potential in a.u. variable atomic_vol equal 121.6 # Derive effective lattice volume from atomic volume for 249-site cell variable lat_vol equal ${atomic_vol}*249/250 # Derive lattice constant from lattice volume variable lattice_constant equal (${lat_vol}*2.0)^(1.0/3.0) lattice bcc ${lattice_constant} region box block 0 5 0 5 0 5 create_box 1 box create_atoms 1 box # Remove central atom from bcc lattice to create vacancy region vacancy sphere 2.5 2.5 2.5 0.1 units lattice delete_atoms region vacancy pair_style mgpt pair_coeff * * Ta6.8x.mgpt.parmin Ta6.8x.mgpt.potin ${atomic_vol} ... run 0关键之处在于体积的“再分配”250 个格点删除 1 个原子后剩 249 个离子为保持每个离子的原子体积仍为Ω 121.6 a.u.盒子体积须取lat_vol Ω×249/250晶格常数相应由 249 格点体积反推。这正是 MGPT 体积依赖性的实战体现——恒定体积下空位形成能要求空位前后原子体积一致。脚本 3含弛豫空位的 bccin.vacmin-bccexamples/PACKAGES/mgpt/in.vacmin-bcc 用于恒定压力下的弛豫空位形成能计算与脚本 2 的差异在于atomic_vol 121.863压力平衡后的原子体积不同于平衡值 121.6使用min_style cgminimize 1.0e-10 1.0e-10 5000 10000对离子坐标做能量最小化让空位周围原子弛豫。运行结果解读随附日志文件 examples/PACKAGES/mgpt/log.7Feb24.bcc0.g.1 展示了脚本 1 在 1 个 MPI 进程上的实际输出片段Lattice spacing in x,y,z 6.241963 6.241963 6.241963 Created orthogonal box (0 0 0) to (31.209815 31.209815 31.209815) Created 250 atoms Reading potential file Ta6.8x.mgpt.potin with DATE: 2015-07-30 ... Step Volume Temp PotEng TotEng Press 0 30400 0 -74.412503 -74.412503 -1.1594626e09 ... number of atoms 250 atomic volume (a.u.) 121.6 total energy (ry/atom) -0.59530002488734 pressure (gpa) -1.15946260887554由此可以验证体积 30400 121.6×250 严格满足V Ω×N单位原子总能约 -0.5953 Ry/atomT0 bcc Ta 在平衡体积附近压力约 -1.16 GPa接近零压符合平衡态预期。同目录还提供了 4 进程.4版本日志可用于并行一致性对照。源码实现剖析矩阵代数与 x86 优化内核mgpt对势的源码位于 src/MGPT 目录由 Tomas Oppelstrup 与 John MoriartyLLNL贡献。头文件 src/MGPT/pair_mgpt.h 中的注释说明快速 MGPT 算法2015基于 John Moriarty 的矩阵 MGPT v4.4 FORTRAN 程序2006后者由 Jamie Marian 与 Alexander Stukowski 于 2011 年转换为 C 供 LAMMPS 使用。实现要点从源码结构看8×8 矩阵基元Matrix结构体固定为double m[8][8]实际使用维度由lmax决定d 带为 5f 带为 7见transprod/transtrace中的分支。两体、三体、四体能量分别通过对 1、2、3 个 bond 矩阵的转置乘积求迹得到如numderiv3t中的trace(prodmat(Bij.H,Bjk.H),Bki.H)。哈希缓存Hashbond_data, Doublet以原子对为键缓存 bond 矩阵三体与四体项通过get_triplet()复用已计算的 bond避免重复矩阵构造见 pair_mgpt.cpp。邻居列表需求init_style()中请求一个 fullghost 邻居列表和一个 half 列表pair_mgpt.cpp因为三体、四体角力项需要以 ghost 原子为邻居的完整近邻信息日志中的(1) pair mgpt, perpetual ... attributes: full, newton on, ghost即对应这一设置。对齐与 SIMDbond_data与triplet_data结构通过预处理器宏强制 32 字节对齐__attribute__((__aligned__(32)))make_bond()内部用 assert 校验对齐以满足 SSE 向量化内核的要求。专用矩阵内核目录下存在大量手写优化内核文件如 mgpt_mmul3_538.c.h、mgpt_mmul3_748.c.h、mgpt_mmul_bgq_n5_lda8_2x8.c.h、mgpt_ttr_5022.c.h 等针对 5×5 与 7×7 矩阵乘法与转置求迹做了 Intel/AMD x86 架构的深度优化还有 mgpt_bgmul_7.c.h 等通用后备内核。线性代数分发层src/MGPT/mgpt_linalg.h / mgpt_linalg.cpp 根据lmax与单/双精度选择具体内核并在启动时打印当前使用的矩阵内核信息——文档提到“用户会在输出文件中看到正在使用的矩阵内核”。调试辅助force_debug_3t/3v/4通过有限差分numderiv*位移 δ1e-5数值求导并与解析力对比用于验证多体力解析表达式pair_mgpt.cpp。构建与性能调优mgpt对势属于 MGPT 包仅当 LAMMPS 以该包构建时才可用参见 Build_package 文档 了解包管理命令。针对 x86 架构 GNU 编译器文档给出明确的编译建议包含此对势时应以编译器标志-O3 -msse3 -funroll-loops构建以获得良好性能。仓库直接提供了专用构建配置 src/MAKE/OPTIONS/Makefile.mgptfast其CCFLAGS -O3 -msse3 -funroll-loops正是文档推荐组合可用作传统 make 构建的参考make yes-mgpt make -f Makefile.mgptfast使用 CMake 时通过-D PKG_MGPTon启用该包即可。文档同时注明4Jul2026版本已移除对过时的IBM BlueGene 机器的支持相关预处理分支__bgq__保留在头文件中仅作历史兼容。限制、注意事项与单位换算使用pair_style mgpt前必须了解以下限制不支持 pair_modify 的 mix、shift、table、tail 选项——该对势的截断与混合规则由势文件决定参见 pair_modify 文档。不写二进制 restart 文件势信息全部存储在势文件中因此读取 restart 文件的输入脚本必须重新指定pair_style与pair_coeff命令参见 restart 文档。rRESPA 支持受限只能通过run_style respa的pair关键字使用不支持inner、middle、outer关键字参见 run_style 文档。必须开启牛顿对相互作用init_style()中强制检查force-newton_pair若newton pair off会直接报错Pair style mgpt requires newton pair on.参见 newton 文档。单位换算potentials 目录中的 parmin/potin 文件以 Rydberg 原子单位编写能量单位 Rydberg、距离单位 Bohr 半径。mgpt对势会自动将 Rydberg 换算为 Hartree以与 LAMMPS 的electron单位兼容参见 units 文档。这正是示例脚本必须使用units electron的原因。适用体系范围E_tot形式仅适用于元素体相固体与液体包括含空位、间隙原子、晶界、位错等点缺陷与扩展缺陷的固体。合金与自由表面需要显著修正本对势不包含同样地不允许使用hybrid对势让部分原子用 MGPT、其他原子用别的势。电子温度效应potentials 目录提供的标准 MGPT 势是在零电子温度下构造的未包含电子热效应。物理上在接近及超过熔点的 3d如 V与 4d如 Mo过渡金属高温区电子热效应可能很重要。预期未来会补充温度依赖的 MGPT 势。默认值汇总pair_coeff各选项的默认值文档“Default”一节选项默认值volpressyesnbody1234precisiondouble相关命令pair_coeffpair_coeff 文档是pair_style mgpt唯一的参数入口。参考文献Moriarty, Physical Review B, 38, 3199 (1988)GPT 基础理论Moriarty, Physical Review B, 42, 1609 (1990)Physical Review B, 49, 12431 (1994)MGPT 理论Moriarty, Benedict, Glosli, Hood, Orlikowski, Patel, Soderlind, Streitz, Tang, and Yang, Journal of Materials Research, 21, 563 (2006)矩阵 MGPTGlosli, unpublished, 2005Streitz, Glosli, Patel, Chan, Yates, de Supinski, Sexton and Gunnels, Journal of Physics: Conference Series, 46, 254 (2006)Glosli 快速算法Oppelstrup, unpublished, 2015Oppelstrup and Moriarty, to be publishedOppelstrup 快速算法即本对势所用Ta6.8x、Mo5.2 等具体势的专项文献可查阅 potentials 目录下的对应.mgpt.README文件如 Ta6.8x.mgpt.README 列出的 Moriarty Haskins, Phys. Rev. B 90, 054113 (2014) 与 Haskins, Moriarty Hood, Phys. Rev. B 86, 224104 (2012)。综上pair_style mgpt为在 LAMMPS 中开展第一性原理派生的多体势模拟提供了完整方案从理论矩阵 MGPT到数据parmin/potin 势文件、从命令pair_coeff三选项到性能x86 优化内核与单精度模式、再到实战示例脚本的 EOS 与空位形成能计算本文所涉内容均可在当前仓库的文档、源码与示例中逐一验证。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐LAMMPS pair_style atm 三体相互作用势完全指南Axilrod-Teller-Muto 势的配置、原理与并行加速LAMMPS pair_style atm 三体相互作用势完全指南Axilrod Teller Muto 势的配置、原理与并行加速 pair_style at科研科学计算高性能计算LAMMPS 中 MEAM 与 MS-MEAM 多体势的完整配置指南pair_style meam / meam/ms 原理、文件格式与实战解析LAMMPS 中 MEAM 与 MS MEAM 多体势的完整配置指南pair_style meam / meam/ms 原理、文件格式与实战解析 本指南围绕科研科学计算高性能计算LAMMPS pair_style e3b 深度指南显式三体E3B水分子势能模型的原理、配置与实战LAMMPS pair_style e3b 深度指南显式三体E3B水分子势能模型的原理、配置与实战 本指南以 LAMMPS 官方文档 doc/src/pa科研科学计算高性能计算上一篇OneUptime IoT 设备遥测接入指南通过 OTLP 与 MQTT 采集传感器、网关与边缘设备指标下一篇React useState 惰性初始化Lazy State Initialization实践指南让昂贵的初始值只在首屏计算一次创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价 →
↑