尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LAMMPS SPIN 包磁交换相互作用详解:pair_style spin/exchange 与 spin/exchange/biquadratic 的模型、参数拟合与源码实现
科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载pair_style spin/exchange与pair_style spin/exchange/biquadratic是 LAMMPS SPIN 包中用于描述原子磁自旋之间交换相互作用exchange interaction的核心对势风格。本文以官方文档 pair_spin_exchange.rst 为主体系统讲解两种风格的语法、Heisenberg 型哈密顿量与 Bethe-Slater 型径向参数化函数、磁力矩与机械力的推导、pair_coeff参数顺序、offset能量偏移选项并结合仓库源码与examples/SPIN中的铁、镍、钴实际输入文件给出从参数拟合到可运行输入脚本的完整实战方案。读完本文你将掌握如何在atom_style spin体系中正确配置磁交换相互作用、理解其底层实现原理并能为自旋-晶格spin-lattice动力学与磁性能计算如状态方程选择正确的参数。一、命令语法与快速上手示例两种风格的基本语法完全一致仅有一个全局截断距离参数单位采用 metal 单位制的距离单位即 Åpair_style spin/exchange cutoff pair_style spin/exchange/biquadratic cutoff其中cutoff为全局截断距离metal 单位制下的距离单位。官方文档给出的典型示例pair_style spin/exchange 4.0 pair_coeff * * exchange 4.0 0.0446928 0.003496 1.4885 pair_coeff 1 2 exchange 6.0 -0.01575 0.0 1.965 offset yes pair_style spin/exchange/biquadratic 4.0 pair_coeff * * biquadratic 4.0 0.05 0.03 1.48 0.05 0.03 1.48 offset no pair_coeff 1 2 biquadratic 6.0 -0.01 0.0 1.9 0.0 0.1 19注意pair_coeff中* *之后的第一个字符串是子风格名spin/exchange使用exchangespin/exchange/biquadratic使用biquadratic。从源码src/SPIN/pair_spin_exchange.cpp的coeff()函数可以看到该子风格名是强制校验的if (strcmp(arg[2],exchange) ! 0) error-all(FLERR,Incorrect args for pair coefficients ...)且参数个数必须为 7 或 99 个参数对应附加offset关键字源码见。biquadratic风格则校验arg[2]必须为biquadratic参数个数为 10 或 12 源码见。二、物理模型两种交换相互作用哈密顿量2.1 经典 Heisenberg 交换项spin/exchangespin/exchange风格计算一对磁自旋之间的交换相互作用哈密顿量为$$ H_{ex} -\sum_{i,j}^N J_{ij} (r_{ij}) ,\vec{s}_i \cdot \vec{s}_j $$其中 $\vec{s}_i$ 与 $\vec{s}j$ 是两个粒子通常是原子磁自旋的单位向量$r{ij} |\vec{r}_i - \vec{r}j|$ 是两粒子间的原子间距求和覆盖最近邻对。$J(r{ij})$ 是一个描述不同近邻壳层上交换相互作用强度与符号的函数——$J0$ 对应铁磁性自旋平行能量更低$J0$ 对应反铁磁性倾向。2.2 含双二次项的扩展spin/exchange/biquadraticspin/exchange/biquadratic风格在 Heisenberg 项之外额外引入双二次biquadratic交换项$$ H_{bi} -\sum_{i, j}^{N} {J}{ij} \left(r{ij} \right), \vec{s}{i}\cdot \vec{s}{j} -\sum_{i, j}^{N} {K}{ij} \left(r{ij} \right), \left(\vec{s}{i}\cdot \vec{s}{j}\right)^2 $$其中 $\vec{s}i$、$\vec{s}j$、$r{ij}$ 与 $J(r{ij})$ 的定义与上文一致$K(r_{ij})$ 是第二个函数定义双二次项的强度与符号。双二次项对自旋取向的非线性响应能够描述更复杂的磁序如某些多铁性材料与自旋玻璃行为examples/SPIN目录中的 BFO铁酸铋算例即使用多种自旋相互作用叠加建模多铁性材料。三、Bethe-Slater 型径向参数化函数两种相互作用中 $J(r_{ij})$ 与 $K(r_{ij})$ 随原子间距的变化都由同一个函数定义$$ f\left( r_{ij} \right) 4 a \left( \frac{r_{ij}}{d} \right)^2 \left( 1 - b \left( \frac{r_{ij}}{d} \right)^2 \right) e^{-\left( \frac{r_{ij}}{d} \right)^2 }\Theta (R_c - r_{ij}) $$其中 $a$、$b$、$d$ 是三个在相应pair_coeff命令中定义的常系数$R_c$ 是与该对相互作用关联的截断半径$\Theta(R_c - r_{ij})$ 为阶跃函数保证 $r_{ij} \ge R_c$ 时相互作用严格为零。该函数本质上是著名的 Bethe-Slater 曲线的解析拟合形式因子 $e^{-(r_{ij}/d)^2}$ 提供平滑衰减$1 - b(r_{ij}/d)^2$ 提供符号翻转能力使同一函数既能描述铁磁近邻壳层也能描述反铁磁近邻壳层。系数 $a$、$b$、$d$ 需要通过拟合确定使上述函数与所考虑的 $N$ 个近邻壳层上的交换相互作用数值相匹配。对于spin/exchange/biquadratic风格需要拟合六个系数$J(r_{ij})$ 三个、$K(r_{ij})$ 三个。3.1 从源码看函数的具体求值src/SPIN/pair_spin_exchange.cpp中的compute_exchange()函数给出了该函数在代码中的精确实现 源码见ra rsq/J3[itype][jtype]/J3[itype][jtype]; Jex 4.0*J1_mag[itype][jtype]*ra; Jex * (1.0-J2[itype][jtype]*ra); Jex * exp(-ra);这里rsq/J3/J3对应 $(r_{ij}/d)^2$J1_mag即系数 $a$换算为磁力矩时除以约化普朗克常数 $\hbar$对应构造函数中的J1_mag[i][j] j1/hbarJ2即系数 $b$J3即系数 $d$。三行代码与文档公式逐项对应4·a·(r/d)²·(1 − b·(r/d)²)·exp(−(r/d)²)。biquadratic风格的compute_exchange()则对 $J$ 与 $K$ 各求一次该函数并将自旋点积及其平方项组合进磁力矩 源码见。3.2 使用仓库脚本进行参数拟合examples/SPIN目录为铁bcc、镍fcc、钴fcc/hcp等材料提供了完整的交换参数拟合脚本。以镍为例exchange_fit.py 使用 SciPy 的curve_fit对 Bethe-Slater 函数def func(x,a,b,c): return 4*a*((x/c)**2)*(1-b*(x/c)**2)*np.exp(-(x/c)**2)进行拟合数据文件 exchange_fcc_ni.dat 提供各近邻壳层距离与对应的 $J$ 值如2.492 0.0028027、3.524 0.0000816等拟合结果即为pair_coeff中的 $(a,b,d)$。examples/SPIN/README明确指出这些算例的目的在于演示使用方法真实材料模拟需要更精细的参数调优。四、磁力矩与机械力自旋-晶格耦合的桥梁由交换相互作用每个自旋 $i$ 会受到磁力矩 $\vec{\omega}{i}$其关联原子在自旋-晶格计算见 fix nve/spin中还会受到力 $\vec{F}{i}$$$ \vec{\omega}{i} \frac{1}{\hbar} \sum{j}^{Neighb} {J} \left(r_{ij} \right),\vec{s}{j}\mathrm{and}\vec{F}{i} \sum_{j}^{Neighb} \frac{\partial {J} \left(r_{ij} \right)}{ \partial r_{ij}} \left( \vec{s}{i}\cdot \vec{s}{j} \right) \vec{e}_{ij} $$其中 $\hbar$ 是普朗克常数metal 单位制下取约化形式源码中由hbar force-hplanck/MY_2PI计算见 src/SPIN/pair_spin.cpp$\vec{e}_{ij} (\vec{r}_i - \vec{r}_j)/|\vec{r}_i-\vec{r}_j|$ 是两格点间的单位向量。当定义spin/exchange/biquadratic风格时双二次项也会产生等价的力与磁力矩。4.1 源码中的力学实现compute_exchange_mech()实现了机械力计算 源码见。力的大小由对 $J(r_{ij})$ 求导得到Jex_mech 1.0-ra-J2[itype][jtype]*ra*(2.0-ra); Jex_mech * 8.0*Jex*rr*exp(-ra);其中ra rsq·iJ3、rr sqrt(rsq)·iJ3对应 $J(r)$ 的闭式表达式随后乘以自旋点积sdots spi·spj与单位向量eij得到沿径向的机械力分量。在compute()主循环中 源码见每个自旋的磁力矩累加到atom-fm磁力数组机械力累加到atom-f力学数组f[i]加力、f[j]反向减力在newton_pair on或j nlocal时能量通过ev_tally_xyz进行维里统计。这印证了该对势同时驱动自旋进动经 fix nve/spin 辛积分与晶格运动——这正是 Howto_spins 中所描述的磁交换对自旋施加磁力矩同时按自旋取向与原子间距对原子施力的自旋-晶格耦合模型。4.2 磁能输出两种风格都维护一个emag数组用于逐原子磁能累积emag[i] evdwl可通过compute spin输出总磁化、自旋温度与磁能等平均量 文档见或通过compute property/atom输出每个原子的自旋分量与磁力分量 文档见。五、pair_coeff 参数顺序与单位对于spin/exchange风格必须为每对原子类型通过pair_coeff命令或由read_data/read_restart读取的 data 文件、restart 文件按以下顺序定义系数顺序参数含义单位1$R_c$交换相互作用的截断半径距离单位2$a$幅度系数能量标度能量单位3$b$无量纲系数无量纲4$d$特征距离距离单位对于spin/exchange/biquadratic风格需要按以下顺序定义七个系数顺序参数含义单位1$R_c$截断半径距离单位2$a_j$$J(r_{ij})$ 的幅度系数能量单位3$b_j$$J(r_{ij})$ 的无量纲系数无量纲4$d_j$$J(r_{ij})$ 的特征距离距离单位5$a_k$$K(r_{ij})$ 的幅度系数能量单位6$b_k$$K(r_{ij})$ 的无量纲系数无量纲7$d_k$$K(r_{ij})$ 的特征距离距离单位注意$R_c$ 是该交换相互作用的截断半径$a$、$b$、$d$ 是上文 $J(r_{ij})$ 函数的三个参数化系数biquadratic风格中下标j、k分别对应 $J(r_{ij})$ 与 $K(r_{ij})$。所有系数均不可省略如果未指定spin/exchange风格将无法使用。源码中init_one()会检查setflag[i][j]未设置全部 pair coeff 时直接报错All pair coeffs are not set源码见。此外coeff()中参数读取逻辑为arg[3]为 $R_c$arg[4..6]为 $a,b,d$biquadratic风格arg[7..9]为 $a_k,b_k,d_k$arg[7]或arg[10]起可跟offset yes/no关键字这也是文档示例中narg允许为 9exchange与 12biquadratic的原因。六、offset 选项消除磁能的机械残余压力6.1 offset yes 时的能量替换对于自旋-晶格模拟对交换相互作用产生的机械力与能量进行偏移常常很有用offset关键字即用于施加该偏移。当offset设为yes时上面的能量定义替换为$$ H_{ex} -\sum_{i,j}^N J_{ij} (r_{ij}) ,[ \vec{s}_i \cdot \vec{s}_j-1 ] $$$$ H_{bi} -\sum_{i, j}^{N} {J}{ij} \left(r{ij} \right), [ \vec{s}{i}\cdot \vec{s}{j} -1 ] -\sum_{i, j}^{N} {K}{ij} \left(r{ij} \right), [ \left(\vec{s}{i}\cdot \vec{s}{j}\right)^2 -1] $$即把每个自旋对的自旋点积减去 1或其平方减去 1使完全平行排列铁磁基态的自旋对能量贡献为零。6.2 关键性质与使用场景该偏移只影响能量与机械力的计算不修改进动向量的计算因此不影响纯磁学性质。它保证了当所有自旋对齐时磁能与相关的机械力以及磁势产生的压力为零。官方文档特别提醒在状态方程类计算能量-体积、能量-压力曲线中该偏移项可能非常重要。设置offset可确保在晶体基态与平衡磁构型典型为铁磁态下压力为零否则磁力可能产生残余压力污染状态方程结果。当offset设为no时不做偏移这也是默认选项源码构造函数中e_offset 0见 src/SPIN/pair_spin_exchange.cpp。源码实现中compute_energy()与compute_exchange_mech()都通过e_offset标志分支e_offset 1时用(sdots-1.0)及(sdots*sdots-1.0)e_offset 0时用sdots及sdots*sdots源码见非法值直接报错Illegal option in pair exchange/biquadratic command。七、完整实战构建可运行的自旋-晶格算例仓库examples/SPIN提供了多个可运行算例。以下以 bcc 铁为例分析完整输入文件结构 in.spin.ironunits metal atom_style spin dimension 3 boundary p p p atom_modify map array # 串行算法sametag所需 lattice bcc 2.8665 region box block 0.0 5.0 0.0 5.0 0.0 5.0 create_box 1 box create_atoms 1 box mass 1 55.845 set group all spin/random 31 2.2 # 随机初始化自旋磁矩 2.2 μB velocity all create 100 4928459 rot yes dist gaussian pair_style hybrid/overlay eam/alloy spin/exchange 3.5 pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe pair_coeff * * spin/exchange exchange 3.4 0.02726 0.2171 1.841 offset yes neighbor 0.1 bin neigh_modify every 10 check yes delay 20 fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 # 外磁场Zeeman fix_modify 1 energy yes fix 2 all langevin/spin 0.0 0.0 21 # 自旋 Langevin 热浴 fix 3 all nve/spin lattice moving # 自旋-晶格辛积分 timestep 0.0001 compute out_mag all spin compute out_pe all pe compute out_ke all ke compute out_temp all temp variable magz equal c_out_mag[3] variable magnorm equal c_out_mag[4] variable emag equal c_out_mag[5] variable tmag equal c_out_mag[6] thermo_style custom step time v_magnorm v_tmag temp v_emag ke pe press etotal thermo 50 compute outsp all property/atom spx spy spz sp fmx fmy fmz dump 1 all custom 100 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] run 1000要点解读atom_style spin是前提SPIN 包全部pair/spin风格只有在构建时启用了 SPIN 包参见 Build_package且声明了atom_style spin时才可用。源码 pair_spin.cpp 在init_style()中强制检查if (!atom-sp_flag) error-all(FLERR,Pair spin requires atom/spin style)并且要求newton pair on、使用完整邻居列表REQ_FULL还会在未检测到fix nve/spin或fix neb/spin时给出警告。units metal强制PairSpin::settings()校验if (strcmp(update-unit_style,metal) ! 0) error-all(... Spin pair styles require metal units)源码见spin 类对势只能在 metal 单位制下使用。hybrid/overlay组合自旋交换项通常与 EAM 等原子间势叠加铁用Fe_Mishin2006.eam.alloy镍用Ni99.eam.alloy钴用Co_PurjaPun_2012.eam.alloy实现原子势 磁性交换的双通道力计算。offset yes的典型用法铁算例在状态方程类分析中开启偏移避免磁力产生残余压力。fix nve/spin lattice movingmoving表示自旋与晶格耦合运动而 in.spin.bfo 中使用lattice frozen固定晶格仅做纯自旋动力学——BFO 算例还同时叠加spin/magelec与spin/dmi三种自旋相互作用。自旋初始化set group all spin/random seed magmom以随机取向初始化自旋也可用set group all spin mx my mz magmom指定方向。磁量输出compute spin的第 3/4/5/6 列分别对应 $M_z$、总磁化强度模、磁能与自旋温度配合thermo_style custom实时监测compute property/atom spx spy spz sp fmx fmy fmz输出逐原子自旋分量与磁力。7.1 单元测试中的参考实现仓库 unittest/force-styles/tests 提供了两种风格的数值参考如 spin-pair-exchange.yaml 使用pair_style spin/exchange 3.5与pair_coeff * * exchange 3.4 0.02726 0.2171 1.841 offset yes并记录 54 个原子的初末态力、磁力、应力与能量spin-pair-exchange_biquadratic.yaml 则使用pair_style spin/exchange/biquadratic 4.0与pair_coeff * * biquadratic 4.0 0.05 0.03 1.48 0.05 0.03 1.48 offset yes。这些 YAML 测试文件可用于验证自编译 LAMMPS 在相同输入下的数值一致性epsilon 级别为 5e-13。八、限制条件、相关命令与默认值限制所有pair/spin风格都属于 SPIN 包只有在构建 LAMMPS 时启用该包详见 Build_package且声明atom_style spin时才可用此外必须使用 metal 单位制、开启newton pair并要求搭配fix nve/spin或fix neb/spin使用源码 pair_spin.cpp 会发出警告。相关命令atom_style spin、pair_coeff、pair_eam、以及配套的 fix nve/spin、min_spin 与自旋磁矩/磁能输出命令 compute spin。默认值offset关键字默认值为no不施加偏移。参考文献该实现与参数化方法基于 Tranchida, Plimpton, Thibaudeau 与 Thompson 在 Journal of Computational Physics, 372, 406-425 (2018) 发表的关于耦合磁自旋动力学与分子动力学的大规模并行辛算法论文源码头部注释pair_spin_exchange.cpp亦要求引用该文献。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐LAMMPS SPIN 包详解fix precession/spin 磁自旋进动 fix 的参数、公式与源码实现LAMMPS SPIN 包详解fix precession/spin 磁自旋进动 fix 的参数、公式与源码实现 本文围绕 LAMMPS SPIN 包的 fi科研科学计算高性能计算LAMMPS 磁性自旋的偶极-偶极相互作用pair_style spin/dipole/cut 与 spin/dipole/long 完整指南LAMMPS 磁性自旋的偶极 偶极相互作用pair_style spin/dipole/cut 与 spin/dipole/long 完整指南 导读 本文基于科研科学计算高性能计算LAMMPS SPIN 包 fix langevin/spin 详解磁性自旋的 Langevin 热浴与随机 Landau-Lifshitz 方程实现LAMMPS SPIN 包 fix langevin/spin 详解磁性自旋的 Langevin 热浴与随机 Landau Lifshitz 方程实现 fix科研科学计算高性能计算上一篇Capstan-Drive丝杠张力调节原理机械设计与数学建模下一篇Spring Framework Web MVC核心组件DispatcherServlet工作原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

基于MP2642GR-Z与MKV46F256VLH16的两串电池被动均衡方案

基于MP2642GR-Z与MKV46F256VLH16的两串电池被动均衡方案

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

📅 2026/10/17 5:49:09
SPH法入门指南:从核近似到流体仿真实战

SPH法入门指南:从核近似到流体仿真实战

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

📅 2026/10/17 5:44:09
RocketMQ单机环境搭建教程:Windows、Linux与Docker三种部署方式详解

RocketMQ单机环境搭建教程:Windows、Linux与Docker三种部署方式详解

如果你正在学RocketMQ——这个在互联网后端里出场率极高的开源消息中间件——而且已经搞明白了Topic、Consumer Group、死信队列这些基本概念,那下一步多半就是自己动手把环境跑起来。我在刚开始接触的时候,最头疼的不是概念,而是“我该先装哪…

📅 2026/10/17 5:44:09
MORE NEWS

更多资讯

📰

从bf16到8-bit量化:InternVL3-9B-Instruct模型加载与显存优化完全指南

【免费下载链接】InternVL3-9B-Instruct 项目地址: https://ai.gitcode.com/OpenGVLab/InternVL3-9B-Instruct 点击查看 免费下载 InternVL3-9B-Instruct 是上海 AI Lab OpenGVLab 团队开源的 90 亿参数多模态大语言模型(MLLM),支…

📰

SentinelX Core:基于MCP协议的AI内网服务安全调用网关

如果你所在团队正打算把AI助手接入内部系统,你大概率已经撞上过同一个问题:模型能力再强,面对内网里的业务系统、运维接口、数据报表,它只是一个“有权限访问、但没法管理权限”的访客。直接放开网络白名单,风险不可控…

📰

大模型API统一接入与认证中心设计:微服务安全实践

决定把大模型 API 的调用统一收敛到微服务架构里,还要在认证中心上做文章,这件事本身就是个“不做不知道,做了才意识到价值”的工程改造。这两年 AI 能力越来越像基础设施,业务系统里到处是散落的 API Key、各家模型平台的调用地址…

📰

MCreator 实体振动机制实战:「接收振动时」流程的参数详解与源码原理

低代码代码生成桌面应用游戏开发 【免费下载链接】MCreator MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an in…

📰

FPGA实现AD9653四通道125M ADC采集:LVDS接收与SPI配置

做过多通道高速采集的朋友应该都有体会,FPGA端真正麻烦的往往不是算法本身,而是ADC芯片的配置、高速串行数据的接收、跨时钟域的处理这些"地基活"。这篇聊聊我用Vivado做的一个AD9653四通道Verilog工程,采样率125M,涉及…

📰

Multi-DBSCAN多密度聚类算法解析与Python实践

做空间聚类的人大概都遇到过这种尴尬:数据里有几坨挤得很紧的点簇,又有几片散得跟芝麻似的稀疏簇。经典的 DBSCAN 只给一套eps和min_samples,半径定小了,稀疏簇被当成噪声;半径定大了,密集簇又粘成一团。我…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬