☰
LAMMPS APIP 包 fix lambda/la/csp/apip 详解:基于可微中心对称参数的保守自适应精度势
2026/10/16 7:20:37 网站建设 项目流程
  • 科研
  • 科学计算
  • 高性能计算

【免费下载链接】lammps

Public development project of the LAMMPS MD software package

项目地址:https://gitcode.com/gh_mirrors/la/lammps
点击查看免费下载

本指南围绕 LAMMPS APIP(Adaptive-Precision Interatomic Potentials,自适应精度原子间势)包中的fix lambda/la/csp/apip命令展开,系统讲解其语法、五个可选关键字、数学原理(可微 CSP、局部平均、多项式开关/加权函数)以及如何与pair_style hybrid/overlay、eam/fs/apip、pace/apip组合构建保守的自适应精度势。读者读完本文后可独立编写用于表面、空位等局部高精度场景的 APIP 输入脚本,并通过源码理解切换参数 λ 与守恒力的底层实现。

命令定位与适用场景

在 LAMMPS 中,fix 是控制积分过程或对原子施加影响的命令。fix lambda/la/csp/apip(la 即 local averaging,csp 即 centro-symmetry parameter)属于 src/APIP 包,由 David Immel(德国于利希研究中心 FZJ)实现,对应的源码文件为 fix_lambda_la_csp_apip.cpp 与 fix_lambda_la_csp_apip.h,在头文件中通过FixStyle(lambda/la/csp/apip,FixLambdaLACSPAPIP)注册。该 fix 的核心职责是:为每个原子实时计算切换参数 λ_i,并计算由 λ_i 微分化引出的守恒力。

背景上,APIP 的思想是:现代机器学习势(如 ACE)精度接近 DFT,但比经典经验势(如 EAM)慢 100~1000 倍。APIP 用精确但昂贵的势只服务少量"感兴趣"原子,其余原子使用快速势,二者通过连续切换参数 λ_i ∈ [0,1] 插值(详见 Howto_apip.rst)。fix lambda/la/csp/apip即负责在"保守动态切换"模式下计算 λ_i,适用于表面、缺陷、空位等只需局部高精度的模拟场景。

语法与参数速览

官方文档(fix_lambda_la_csp_apip.rst)给出的命令格式为:

fix ID group-ID lambda/la/csp/apip thr_lo thr_hi cut_lo cut_hi lattice keyword args ...

其中前五个必填参数含义如下(thr 相关参数单位为距离平方,cut 相关参数单位为距离):

参数含义
thr_lo可微 CSP 局部平均值低于该值时,切换参数为 1(即全部使用快速势)
thr_hi可微 CSP 局部平均值高于该值时,切换参数为 0(即全部使用精确势)
cut_lo局部平均加权函数在该半径内取 1
cut_hi局部平均加权函数在该半径外取 0(局部平均的最大半径)
latticefcc、bcc或整数 N,N 为 CSP 计算时每个原子考虑的最近邻数目

lattice选项在源码中的解析逻辑为:fcc→ 最近邻数 nnn = 12,bcc→ nnn = 14,否则直接读入整数 N(fix_lambda_la_csp_apip.cpp)。值得说明的是,经典中心对称参数通常取 nnn/2 对最近邻向量求和,因此 nnn 需为偶数,fcc(12)与 bcc(14)正好对应面心立方与体心立方晶格特征配位数。

示例:

fix lambda_la all lambda/la/csp/apip 0.25 1.5 15.0 16.0 bcc fix lambda_la mobile lambda/la/csp/apip 0.24 1.5 11.0 12.0 bcc lambda_non_group fast

可选关键字

除必选参数外,还可追加零个或多个keyword args对,五个关键字的含义与默认值汇总如下(默认值依据文档与源码构造函数一致):

关键字参数含义默认值
csp_cut浮点数CSP 计算中邻域截断半径,超出该半径的邻居不考虑5.0
csp_modedynamic/staticdynamic使用可微 CSP 计算切换参数;static使用不可微原始 CSPstatic
forcesno/yesyes计算由切换参数微分化引起的力yes
lambda_non_groupprecise/fast/ 浮点数不在 group-ID 组内原子的恒定切换参数;precise=0,fast=1,浮点数须在 0~11(即 fast)
store_peratom整数每隔多少个时间步输出一次逐原子统计量∞(不输出)

源码解析(fix_lambda_la_csp_apip.cpp)对每个关键字做了参数校验:例如csp_mode只接受dynamic/static,lambda_non_group需满足 0 ≤ λ ≤ 1,store_peratom频率必须为正整数;同时校验0 <= cut_lo <= cut_hi、0 <= threshold_lo <= threshold_hi(fix_lambda_la_csp_apip.cpp)。

需要注意一个微妙的点:文档中关于csp_mode的描述存在表述反转——文档原文写"original CSP 与csp_mode dynamic一起使用",而源码中dynamic对应const_ngh_flag = false(每次动态重选 CSP 邻居对)、static对应const_ngh_flag = true(使用恒定 CSP 邻居对以获得守恒势)。从源码结构可以推断:使用可微、守恒的 CSP 描述子应选dynamic(邻居对动态更新,配合可微开关函数得到守恒力);static则固定邻居对,使用不可微的原始 CSP,不产生守恒势。实际使用时请结合文档正文("The original CSP is used instead of the differentiable CSP with the option csp_mode dynamic")与源码行为核对。

数学原理:可微 CSP 与局部平均

自适应精度势的势能定义为(文献 Immel, Drautz, Sutmann, J Chem Phys 162, 114119 (2025)):

E_i = λ_i · E_i^fast + (1 − λ_i) · E_i^precise

其中 E_i^fast 为快速势给出的势能,E_i^precise 为精确势给出的势能。由此可得总力:

F_i = Σ_k ( −λ_k ∇_i E_k^fast − (1 − λ_k) ∇_i E_k^precise + (∇_i λ_k)(E_k^precise − E_k^fast) )

前两项由 pair style 计算(分别乘 λ 与 1−λ),最后一项(∇_i λ_k)(E_k^precise − E_k^fast)正是本 fix 计算的"切换参数微分化力"。该力项使总力严格等于势能负梯度F_i = −∇_i Σ_k E_k,从而在无外力时按设计守恒能量与动量——这是"保守自适应精度势"的核心。

fix 的工作流程分三步:

  1. 计算描述子(CSP):对每个原子取 nnn 个最近邻,枚举所有 C(nnn,2) 对邻居,计算"邻居对矢量和"的长度平方,取最小的 nnn/2 个求和得到中心对称参数 csp[i](fix_lambda_la_csp_apip.cpp)。若邻居数不足 nnn,源码直接报错:Atom has only X neighbours, but Y are required to calculate the CSP。
  2. 局部平均:在 cut_hi 半径内用加权函数 w(r) 对 csp 做归一化平均:csp_avg_i = Σ_j csp_j · w(r_ij) / Σ_j w(r_ij)(自项取 w(0)=1)。跨进程的累加通过reverse_comm完成(fix_lambda_la_csp_apip.cpp)。
  3. 计算 λ:对组内原子,λ_i = switching_function_poly(csp_avg_i);对组外原子,λ_i = lambda_non_group(默认 1)。

多项式开关与加权函数

开关函数与加权函数使用同一形式的五次多项式(参照 Phys Rev Mat 6, 013804 (2022) Appendix C 的 cutoff 函数),保证在过渡区边界处前两阶导数为零,从而保证力项连续:

switching_function_poly(x): x ≤ thr_lo → 1 x ≥ thr_hi → 0 否则 → 0.5 + 3.75·(u/4 − u³/6 + u⁵/20),其中 u = 1 − 2·(1 + (x − thr_hi)/thr_width)

加权函数weighting_function_poly(r)形式相同,仅把 thr_lo/thr_hi 换成 cut_lo/cut_hi;其导数der_weighting_function_poly(r)用于力计算(fix_lambda_la_csp_apip.cpp)。源码注释特别提醒:开关函数的导数实现与pair_la_csp_apip.cpp中保持一致(见 fix_lambda_la_csp_apip.cpp)。

与 pair style 的组合:hybrid/overlay 实战模板

文档强调:快速势与精确势必须通过pair_style hybrid/overlay组合。一个完整的保守自适应精度势输入片段:

fix lambda_la all lambda/la/csp/apip 0.24 1.5 11.0 12.0 bcc pair_style hybrid/overlay eam/fs/apip pace/apip pair_coeff * * eam/fs/apip W.eam.fs W pair_coeff * * pace/apip W.yace W

这里eam/fs/apip计算λ_i·E_i^EAM(快速势部分),pace/apip计算(1−λ_i)·E_i^pace(精确势部分),fix 负责 λ 与微分化力,三者共同构成保守势(相关文档见 pair_eam_apip.rst 与 pair_pace_apip.rst)。

仓库自带的完整示例位于 examples/PACKAGES/apip/in.surface.la.cons,它以 Cu 表面(EAM+ACE 耦合)为例,展示了推荐参数选择:

units metal atom_style apip conservative timestep 0.001 fix nve all nve fix lambda_cspavg all lambda/la/csp/apip 0.7 2.0 4.0 8.0 fcc pair_style hybrid/overlay eam/fs/apip pace/apip zero 8.0 pair_coeff * * eam/fs/apip Cu_300K_Immel_2023.eam.fs Cu pair_coeff * * pace/apip Cu-PBE-core-rep.ace Cu pair_coeff * * zero compute lambda all property/atom apip_lambda

(参数在示例中以变量定义:cspavg_csp_lo=0.7、cspavg_csp_hi=2.0、cspavg_r_lo=4.0、cspavg_r_hi=8.0、cspavg_lattice=fcc。注意:示例将store_peratom注释掉,避免高频输出开销。)势文件分别位于 examples/PACKAGES/apip/Cu_300K_Immel_2023.eam.fs 与 potentials/Cu-PBE-core-rep.ace,可直接复用。

逐原子输出与压力/应力贡献

  • store_peratom 逐原子输出:启用后,每 store_peratom 步提供 5 列逐原子向量(size_peratom_cols = 5,见 fix_lambda_la_csp_apip.cpp):

    1. 切换参数微分化力的 x 分量
    2. 微分化力的 y 分量
    3. 微分化力的 z 分量
    4. 可微 CSP 原始值(即 csp,未局部平均)
    5. 用于计算切换参数的局部平均可微 CSP(即 csp_avg)

    这些列可通过compute property/atom或 dump 输出命令访问(参考 Howto_output.rst)。实现上,store_f_lambda_before/after在力计算前后记录差值以提取微分化力(fix_lambda_la_csp_apip.cpp),store_la负责写入 csp 与 csp_avg(fix_lambda_la_csp_apip.cpp)。

  • virial 支持:fix 支持fix_modify virial选项(默认 yes,见文档"Default"一节),将微分化力对全局压力与逐原子应力的贡献计入compute pressure与compute stress/atom;全局压力可通过thermo_style的热力学输出读取(参考 compute_pressure.rst、compute_stress_atom.rst、thermo_style.rst)。源码中virial_global_flag = virial_peratom_flag = thermo_virial = 1在forces yes时被设置(fix_lambda_la_csp_apip.cpp),二体/三体 virial 分别由ev_tally2与ev_tally3实现(fix_lambda_la_csp_apip.cpp)。

  • 全局标量(仅 dynamic 模式):当使用非保守的 dynamic CSP 邻居对时,fix 返回累计的"发生变化的 CSP 邻居对数"作为全局标量。势能守恒的前提是该计数恒定不变(每变化一对都可能改变系统总能量)。该标量可通过输出命令读取,例如示例 in.surface.la.nocons 中的用法:

thermo_style custom step etotal f_lambda_cspavg thermo_modify format 2 "%10.09f" colname 3 "#changedCSPpairs"

限制与注意事项

  • 与势能截断的一致性:fix 在 init 阶段校验:势能截断必须 ≥ cut_hi,且势能截断的平方 ≥ csp_cutsq,否则报错(fix_lambda_la_csp_apip.cpp)。
  • 原子样式要求:fix 要求atom_style apip(即带 λ 属性的原子样式),且要求开启原子 ID(tag_enable);同一模拟中只允许一个fix lambda/la/csp/apip(fix_lambda_la_csp_apip.cpp)。文档示例与 atom_style.rst 均说明atom_style apip conservative适用于保守 APIP(字段为 apip_lambda、apip_lambda_required、apip_e_fast、apip_e_precise)。
  • 重启行为:可微 CSP 的邻居对会写入二进制重启文件(restart_global = 1),保证重启时邻居对连续,从而保持势能守恒;重启时需重新指定本 fix 与 pair 命令(文档"Restart, fix_modify, output"一节;源码见 fix_lambda_la_csp_apip.cpp)。
  • 不支持的选项:本 fix 不支持任何fix_modify选项(virial 除外);其参数不能用于run命令的 start/stop 关键字;能量最小化(minimize)期间该 fix 不会被调用(参考 minimize.rst)。
  • 性能与负载均衡:由于 λ 的计算与微分化发生在 fix 中,无法纳入力计算的负载均衡;如需近似负载权重,应配合fix atom_weight/apip(见 fix_atom_weight_apip.rst)与fix balance(参考 fix_balance.rst)。示例 in.surface.la.cons.balance 展示了带负载均衡的保守 APIP 用法。此外,文档建议comm_style tiled配合 rcb 平衡算法以获得更灵活的域分解。
  • 构建要求:本 fix 属于 APIP 包,仅当 LAMMPS 以该包构建时才可用;pair_style pace/apip还需要安装 lib/pace(ML-PACE 包),见 src/APIP/README 与 Build_package.rst。

相关命令

  • pair_style eam/apip:EAM 快速势的 APIP 变体
  • pair_style pace/apip:ACE(pace)精确势的 APIP 变体
  • Howto_apip.rst:APIP 包总览与三种切换参数模式
  • fix_lambda_apip.rst 与 fix_lambda_thermostat_apip.rst:非保守动态切换与能量校正方案

参考文献

  • (Immel) Immel, Drautz and Sutmann, J Chem Phys, 162, 114119 (2025)——APIP 原始方法
  • (Immel2) Immel, Drautz and Sutmann, arXiv:2512.07693——保守自适应精度势(可微 CSP 局部平均)
  • (Kelchner) Kelchner, Plimpton, Hamilton, Phys Rev B, 58, 11085 (1998)——原始中心对称参数 CSP
  • 科研
  • 科学计算
  • 高性能计算

【免费下载链接】lammps

Public development project of the LAMMPS MD software package

项目地址:https://gitcode.com/gh_mirrors/la/lammps
点击查看免费下载

相关推荐

上一篇:AWS CLI `acm delete-certificate` 完整指南:删除 ACM 证书的命令、前提条件与底层实现
下一篇:OpenFGA CI 流水线加速实战:从 13 分钟到 5 分钟的分阶段优化方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询