做微磁学模拟可能会用到oommf这样一个开源软件,它有一个python版本joommf = jupyter + oommf, 最近推出了船新版本
官网提供了一个快速上手的例子,计算一个vortex在磁场下的演化,最后计算了vortex的winding number。有兴趣可以试着模拟一下skyrmion。
首先定义了一个涡旋态:
# initial magnetisation state def m_init(point): x, y, z = point c = 1e9 # (1/m) return (-c*y, c*x, 0.1)
然后求解能量最小值来弛豫系统的磁矩构型:
import oommfc as mc # Micromagnetic Calculator md = mc.MinDriver() md.drive(system) system.m.plane('z').mpl()
winding number的计算公式是
import math m = system.m.orientation.plane('z') q = m @ (m.derivative('x') & m.derivative('y')) S = 1/(4*math.pi) * df.integral(q * df.dx*df.dy) S
得到0.40036,与理论值0.5比较接近。对于skyrmion,winding number为1。
求解器的功能与oommf相似,但是设置起来要简单一些,由于笔者已经很久没用过oommf,故不再赘述,有兴趣的读者可自行探索。
PySCF
Psi4