MICROMAGNETICS · HISTORY · COMPUTING
从OOMMF到可微分磁学
微磁模拟软件三十年的四次转向
规则网格、有限元、GPU、自动微分与多物理场:
一条由软件串起的计算范式演化史
磁畴为什么会形成?畴壁为什么会移动?一块几十纳米的磁盘会怎样翻转?电流能不能推动斯格明子?当器件尺度不断缩小,我们还能不能把每一个原子都算进去?
这些问题很难只靠解析公式回答。微磁学给出的折中方案,是把数量巨大的原子磁矩粗粒化为连续磁化场M(r,t),再用Landau-Lifshitz-Gilbert(LLG)方程描述它随时间的演化。真正改变研究方式的,却不只是方程,而是围绕方程逐渐成熟的软件、数值算法和硬件。
回看近三十年,微磁模拟大致经历了四次清晰的转向:从课题组自编代码走向标准化工具;从规则网格走向复杂几何与多物理;从 CPU 走向 GPU;再从“给定参数算结果”走向可微分、可逆向设计的物理计算。OOMMF、MicroMagus、magpar、Nmag、MuMax/MuMax3、magnum.fe、Fidimag、magnum.np、NeuralMag和mumax+,正好串起了这条路线。
在讲软件之前,先澄清一个常被问错的问题:“某软件能模拟1 nm到10 μm吗?”微磁学不是按软件品牌划定尺寸边界。连续介质模型的下限,取决于粗粒化是否仍然成立;数值网格还要足够细,能够解析交换长度、畴壁宽度和材料界面。上限则取决于网格数、内存、退磁场算法、时间积分器以及硬件。更准确的问法是:这个问题适合连续微磁、有限元、有限差分,还是需要显式原子自旋?
第一次转向:把“自己写程序”变成可验证的公共工具
20世纪90年代以前,很多研究组要先实现交换场、退磁场、LLG积分器和数据输出,才能开始研究真正的物理问题。1998年,NIST发布OOMMF(Object Oriented MicroMagnetic Framework)的首个正式版本;1999年的NISTIR 6376用户指南将它定义为可移植、可扩展的公共领域微磁程序[1]。OOMMF用 C++完成核心计算,用Tcl/Tk 组织图形界面和模块,采用规则网格上的有限差分方法(FDM)。

图 1|OOMMF的mmLaunch启动与控制界面。

图2|OOMMF的mmDisp矢量场显示界面。
FDM把样品切成规则长方体网格。它对弯曲边界并不天然友好,却特别适合用快速傅里叶变换(FFT)计算长程退磁场:卷积可以转到频域完成,复杂度和内存都更可控。OOMMF能处理能量弛豫、磁滞、磁化反转、畴壁、磁涡旋和LLG动力学;更重要的是,它与μMAG Standard Problems一起塑造了“不同代码必须在同一问题上交叉验证”的文化。新的求解器至今仍常用这些标准问题作基准。
同一时期,Dmitri Berkov与Natalia Gorn开发的MicroMagus走的是另一条产品化路线。它同样属于有限差分 CPU 求解器,但长期以商业软件形式提供,面向静态和动态再磁化、热涨落、薄膜与多层结构,以及自旋转矩驱动的纳米振荡器等问题。NIST的Standard Problem #4 页面保存了 MicroMagus 5.15的提交结果;Berkov与Gorn也在点接触自旋转矩动力学工作中详细说明了其数值应用[2,3]。它在软件史上的位置,提醒我们早期微磁生态并非只有开源公共代码,也有围绕专门算法、技术支持和高频磁动力学形成的商业工具。

第二次转向:规则网格之外,复杂几何把有限元推到前台
如果研究对象是弯曲纳米线、球形颗粒、真实晶粒、复杂三维磁体或多材料界面,规则网格会产生“阶梯边界”,为了逼近几何还要填入大量无效单元。有限元(FEM)用三角形或四面体贴合边界,更适合真实几何,也更自然地容纳空间变化的材料参数。代价是数据结构和退磁场求解更复杂,GPU化也没有规则网格那么直接。
2003年发表的magpar是这一路线的重要节点。Scholz等人使用线性基函数和四面体网格上的标准Galerkin有限元离散,构建了可扩展并行微磁求解器[4]。它面向静态、动态和磁化反转,并把并行计算带入复杂三维纳米结构。对永久磁体、颗粒体系和真实微结构来说,几何适应性往往比单一的cells/s指标更重要。
2007年的Nmag又向前走了一步:底层仍是有限元,但用户通过Python描述材料、几何与耦合方程。其论文强调的不是“又一个 LLG 程序”,而是把自旋电流、热扩散和各向异性磁阻等多场方程抽象为可扩展框架[5]。Nmag 文档同时明确说明,项目目前缺少持续的人力与资金,应按“as is”状态使用。这个事实也说明:科研软件的寿命不仅取决于算法,还取决于维护、依赖和社区。
2013 年的magnum.fe 则把微磁有限元建立在通用平台FEniCS上。它用 transformation method 或混合 FEM/BEM 处理开放边界退磁场,以弱形式积分LLG,并逐步加入自旋扩散、DMI、热涨落、能垒路径和电势/Maxwell求解[6]。它并不适合与MuMax3在规则薄膜上做简单速度对决;它的价值是复杂三维几何、材料界面和新有限元算法的快速开发。

第三次转向:MuMax 把微磁计算搬上 GPU,但“最快”从来不是一个脱离上下文的数字
2011年,Arne Vansteenkiste与Ben Van de Wiele推出MuMax。有限差分网格、局域场计算和FFT都具有高度并行性,正适合GPU。论文在当时的硬件和大型测试问题上报告了相对CPU OOMMF超过100倍的加速[7]。这个数字非常有历史意义,却不能被搬到今天当作通用结论:它同时包含了年代、硬件、实现、精度和测试规模的差异。
2014年的MuMax3才真正形成了今天熟悉的范式:规则FDM、FFT、CUDA GPU、紧凑脚本语言和实时可视化。它覆盖交换、退磁、各向异性、DMI、热场、Zhang-Li与Slonczewski自旋转矩等常见项,适合大规模薄膜、畴壁、斯格明子、磁振子和自旋电子学前向模拟[8]。

图5|MuMax3在GTX TITAN上的吞吐率。
这张图还有一个常被忽略的信息:GPU并不是对所有尺寸都同样高效。小模型会被调度和kernel启动开销主导;FFT 对网格分解也敏感,含大质因数的尺寸可能造成性能波动。MuMax3的优势是在合适规模上把规则网格和GPU的结构性优势发挥到极致,而不是给出一个跨平台、跨年代永远成立的倍数。
与此同时,Fidimag把问题从“连续场能跑多快”扩展到“模型尺度怎样切换”。它的微磁部分使用有限差分,原子部分使用经典 Heisenberg 自旋模型,主接口为Python,性能关键部分以C/Cython实现;同一框架还提供LLG、随机LLG和Nudged Elastic Band(NEB)能垒计算[9]。当特征接近晶格尺度、需要显式离散自旋,或希望研究微磁与原子自旋之间的模型选择时,Fidimag比单纯的连续FDM更合适。

图6|Fidimag 的模块架构。
第四次转向:求解器成为“可微分的物理模块”,并继续走向多子晶格与多物理
进入2020年代,GPU已不再新鲜。新的问题是:能不能在保留性能的同时,让求解器像现代Python科学计算和机器学习框架一样容易组合、求导和优化?
2023年的magnum.np 建立在PyTorch张量上,使用等距矩形网格的有限差分。CPU与GPU由同一套张量接口驱动,自动微分使材料参数、形状或外场能够直接成为优化变量;本征模、色散、string method、成像和逆向设计可以与普通Python工作流连接[10]。

图7|magnum.np的主要模块。

图8|magnum.np的斯格明子与成像示例。 依次为感应图、欠焦LTEM模拟和磁化z分量。

图9|magnum.np的场项benchmark。 在同一NVIDIA A100 80 GB上分别比较退磁场和交换场计算,适合解释“局域场可被编译优化,而退磁FFT仍是主要瓶颈”。
2025年发表的NeuralMag 更进一步。它不是“用神经网络替代物理”,而是把显式微磁方程放在JAX/PyTorch计算图中,采用节点有限差分(nodal FDM),让正向模拟和梯度计算都成为一等公民[11]。节点自由度也用于更细致地处理材料界面上的参数跳变。它可以做标准静态和动力学,也强调静态/动态反问题、拓扑优化和inverse magnonics。

图10|NeuralMag、MuMax3与magnum.np的完整LLG右端评估。 包含交换场和退磁场,并在同一A100 80 GB上比较 GPU 实现。MuMax3仍最快,NeuralMag 的JAX GPU实现差距小于约2倍。

图11|NeuralMag的永磁体拓扑优化结果。 目标是在样品上方探针点最大化z向杂散场。它代表微磁软件从“给定结构算磁场”走向“给定目标反求结构”。
2026年正式发表的 mumax+则从另一端扩展GPU 微磁。它仍是有限差分与CUDA,但采用C++/CUDA核心和Python接口,强调可扩展对象设计,并加入MuMax3不具备或不易表达的多子晶格、铁磁/亚铁磁/反铁磁、非共线磁序和磁弹耦合等能力[12]。它说明下一代求解器的瓶颈,可能不再只是“一次LLG右端有多快”,而是如何把磁、弹、热、电荷、自旋输运和多子晶格磁序放进可维护的统一框架。

把这些软件放到一张选择表里,会比做“总冠军排行榜”更有用:
软件 | 主要离散/尺度 | 典型硬件与定位 | 更适合的问题 |
OOMMF | 连续微磁,FDM | CPU;标准化、验证与教学 | 标准问题、通用静态/动力学 |
MicroMagus | 连续微磁,FDM | CPU;商业软件、薄膜与自旋转矩 | 多层膜、STNO、热涨落 |
magpar | 连续微磁,FEM | CPU/MPI;四面体并行 | 复杂三维几何、颗粒与永久磁体 |
Nmag | 连续微磁,FEM | CPU;Python、多物理抽象 | 复杂几何与多场方法研究 |
MuMax/MuMax3 | 连续微磁,FDM | NVIDIA GPU;高性能前向模拟 | 大规模薄膜、畴壁、斯格明子、磁振子 |
magnum.fe | 连续微磁,FEM | CPU;FEniCS 研究平台 | 复杂边界、界面、自旋扩散与新算法 |
Fidimag | FDM + 原子自旋 | CPU/OpenMP;Python/C/Cython | 跨尺度模型选择、NEB、热稳定性 |
magnum.np | 连续微磁,FDM | CPU/GPU;PyTorch/autograd | 新算法、后处理、逆向设计 |
NeuralMag | 节点 FDM | CPU/GPU;JAX/PyTorch、端到端可微 | 反问题、拓扑优化、inverse magnonics |
mumax+ | 多子晶格 FDM | NVIDIA GPU;C++/CUDA + Python | FM/FiM/AFM、磁弹耦合与多物理 |
所以,“哪一个最快”必须拆成更具体的问题:相同方程吗?相同精度吗?包含退磁场吗?单场项还是完整LLG右端?单精度还是双精度?同一张GPU吗?网格是否适合FFT?如果这些条件没有控制,数字只能说明各自论文发表时的工程状态,不能组成跨年代排行榜。
更可靠的结论是:规则网格上的大规模前向动力学,MuMax3仍然是高度优化的基准;复杂三维边界,FEM的几何适应性常常比cells/s更重要;接近晶格尺度或需要显式离散自旋时,应考虑原子自旋模型;而在逆向设计、自动微分和算法快速试验中,magnum.np与NeuralMag的架构价值可能比最后一倍速度更重要。
从OOMMF到mumax+,微磁软件真正的进化并不是一个旧程序被一个新程序淘汰,而是研究者能够提出的问题不断变了:先是“能不能可靠地算”,然后是“能不能贴合真实几何”“能不能在GPU上算大”“能不能同时求梯度”,最后变成“能不能把多子晶格、多物理和设计目标装进同一计算图”。这也许才是微磁模拟软件三十年最值得记住的主线。
参考文献与核查来源
1.M. J. Donahue, D. G. Porter, OOMMF User's Guide, Version 1.0, NISTIR 6376 (1999). DOI: 10.6028/NIST.IR.6376(https://doi.org/10.6028/NIST.IR.6376)。
2.NIST μMAG, Standard Problem #4 - MicroMagus 5.15 submission (2007): https://www.ctcms.nist.gov/~rdm/std4/Berkov.html 。
3.D. V. Berkov, N. L. Gorn, Micromagnetic simulations of the magnetization precession induced by a spin-polarized current in a point contact geometry, Journal of Applied Physics 99, 08Q701 (2006). DOI: 10.1063/1.2151800(https://doi.org/10.1063/1.2151800)。
4.W. Scholz et al., Scalable parallel micromagnetic solvers for magnetic nanostructures, Computational Materials Science 28, 366-383 (2003). DOI: 10.1016/S0927-0256(03)00119-8(https://doi.org/10.1016/S0927-0256(03)00119-8)。
5.T. Fischbacher et al., A Systematic Approach to Multiphysics Extensions of Finite-Element-Based Micromagnetic Simulations: Nmag, IEEE Transactions on Magnetics 43, 2896-2898 (2007). DOI: 10.1109/TMAG.2007.893843(https://doi.org/10.1109/TMAG.2007.893843)。
6.C. Abert et al., magnum.fe: A micromagnetic finite-element simulation code based on FEniCS, Journal of Magnetism and Magnetic Materials 345, 29-35 (2013). DOI:10.1016/j.jmmm.2013.05.051(https://doi.org/10.1016/j.jmmm.2013.05.051)。
7.A. Vansteenkiste, B. Van de Wiele, MuMax: a new high-performance micromagnetic simulation tool, Journal of Magnetism and Magnetic Materials 323, 2585-2591 (2011). DOI: 10.1016/j.jmmm.2011.05.037(https://doi.org/10.1016/j.jmmm.2011.05.037)。
8.A. Vansteenkiste et al., The design and verification of MuMax3, AIP Advances 4, 107133 (2014). DOI: 10.1063/1.4899186(https://doi.org/10.1063/1.4899186)。
9.M.-A. Bisotti et al., Fidimag - A Finite Difference Atomistic and Micromagnetic Simulation Package, Journal of Open Research Software 6, 22 (2018). DOI: 10.5334/jors.223(https://doi.org/10.5334/jors.223)。
10.F. Bruckner et al., magnum.np: a PyTorch based GPU enhanced finite difference micromagnetic simulation framework for high level development and inverse design, Scientific Reports 13, 12054 (2023). DOI: 10.1038/s41598-023-39192-5(https://doi.org/10.1038/s41598-023-39192-5)。
11.C. Abert et al., NeuralMag: an open-source nodal finite-difference code for inverse micromagnetics, npj Computational Materials 11, 193 (2025). DOI: 10.1038/s41524-025-01688-1(https://doi.org/10.1038/s41524-025-01688-1)。
12.L. Moreels et al., mumax+: extensible GPU-accelerated micromagnetics and beyond, npj Computational Materials 12, 71 (2026). DOI: 10.1038/s41524-025-01893-y(https://doi.org/10.1038/s41524-025-01893-y)。
13.C. Abert, Micromagnetics and spintronics: models and numerical methods, European Physical Journal B 92, 120 (2019). DOI: 10.1140/epjb/e2019-90599-6(https://doi.org/10.1140/epjb/e2019-90599-6)。
夜雨聆风