OOMMF是使用最广泛的微磁学模拟程序,它是开源的,跨平台的,底层用C++写成。
- 启动、控制(主界面:tclsh oommf.tcl)
- OOMMF eXtensible Solver (Oxs)是求解三维方格子问题的引擎。Oxs有两个接口
- Oxsii(交互界面)
- Boxsi(批量模式,命令行界面)
- 输入文件是MIF2格式,可以用
mifconvert
来将1.x格式转换成2.x格式。tclsh oommf.tcl mifconvert [-f|--force] [--format fmt] [-h|--help] [--nostagecheck] [-q|--quiet] [--unsafe] [-v|--version] input_file output_file
输入文件里有参数stage,它将整个模拟分成stage个片段。
- 启动:
- 通过图形界面mmLaunch
- 命令行: tclsh oommf.tcl oxsii
- 输入:从硬盘读取mif文件
- 输出:mmDisp等
与Oxsii类似。
Oxs由Oxs_Ext (Oxs Extension)对象组成,由MIF2文件中的block进行指定。标准发行版中共有8种:
atlases
定义空间信息:长、宽、厚。可以定义多个空间大小以备后用。meshes
定义格点离散信息:三个方向上的晶格常数。energies
定义哈密顿量,有以下几种
它们需要在单独的block中进行指定。其中依赖格点变化的参数在 field object spec
条目中指定。
每一种都有三个标准输出,分别是:
- 标量
Energy
(这一项哈密顿量的能量,单位:焦耳 J) - 标量场
Energy density
(能量的空间格点分布,单位:J/m^3) - 矢量场
Field
(pointwise field, 单位:A/m)
- evolvers
- drivers
- scalar field objects
- vector field objects
- MIF support classes
共有两种Evolver:
- time evolver
- Oxs_EulerEvolve
- Oxs_RungeKuttaEvolve
- Oxs_SpinXferEvolve
- minimization evolver
Oxs_CGEvolve
共轭梯度法
Landau-Lifshitz方程: 程序中 gamma 的单位是m/A/s, alpha没有量纲,默认值分别为2.211e5和0.5。 alpha =0.5较实验值略大,但可以更快迟豫。
Drivers是控制Evolver行为的上层模块,在Oxs中有两种driver:
Oxs_TimeDriver
控制time EvolversOxs_MinDriver
控制最小化的Evolver
- 标量场
- 矢量场
mmSolve是oommf二维微磁计算引擎,可以求解定义在二维方格子上的三维自旋问题。这个求解器比前面的Oxs更古老, 并且可拓展性更差。应尽量用oxs。
- 1.1版本的输入文件用于二维求解器
mmSolve2D
,mmProbEd
- 2.1和2.2输入文件用于三维求解器
- 所以版本中的单位都是国际单位制SI