“微磁学”博客专栏的评论区整理

文章目录



百尺竿头须进步,十方世界是全身。——景岑《百尺竿头须进步》


前言

临近毕业之际,笔者有必要将“微磁学”博客专栏的部分评论整理成文,主要是为了方便刚入坑的同学通过搜索引擎检索一些常见的问题,其次是为了增加本专栏的搜索权重。在之后的时间里会对本文进行持续更新直到笔者毕业,同时感谢所有在本博客专栏进行评论的同学,也欢迎大家在未来几个月内向笔者讨论一些微磁学模拟相关的内容。

在这里插入图片描述

#######
本文链接:https://blog.csdn.net/qq_43572058/article/details/134150772
CSDN@搬砖工人_0803号
#######

示例程序 stdprob1.mif 描述的是什么问题?

它可能适用于绘制磁滞回线,如果你要计算磁体在特定磁化状态的退磁场和杂散场,在建模时一般采用“airbox”方法包裹该磁体,再在oommf中对这一磁化状态,选择输出demag field或者总的Heff。参考 网页链接,还有一些其他标准问题(FMR,DMI,dispersion等),基本上这些微磁学标准问题都有参考示例程序。

打扰了,请问为什么容器用的Oxs_EllipsoidAtlas,但是在oommf里用mmdisp显示磁场时却不是椭球形呢?

可以参考一下软件自带的示例文件:oommf\app\oxs\examples\ellipsoid.mif,注意里面分配饱和磁化强度Ms时,将椭圆外的区域Ms设置为了0表示无磁性,而椭圆区域有磁性Ms不为0。

前辈打扰一下,请问oommf可以分区域离散化吗?(就是不同区域设置不同的网格大小),如果可以分区域离散化请问该如何设置?设置两个Z方向的Cellsize总是报错,那比如我要仿真CoFe(30A)/Cu(10A)/CoFe(20A)/Ru(8.5A)/CoFe(20A)这个膜系结构,该如何设置厚度方向的Cellsize?只能设置厚度方向Cellsize-Z=0.5A吗?(这样的话网格是不是太小了,仿真是不是会跑很长时间)
请问如何保存输出mmDisp中各层磁矩随仿真过程而变化的图像文件,好像都一些奇怪的格式。该如何对图像文件进行保存并查看呢?

不可以哦,因为在代码里只能设置一个网格对象。基于有限差分法的网格尺寸都是相同的,不同于有限元法可以细分网格。是的,因为你描述的尺寸里出现了0.5nm,所以z方向的最小网格尺寸也要是0.5nm。不过,很多基于合成反铁磁文章的微磁模拟的间隔层厚度都是设置为1nm,虽然RKKY耦合系数是随着间隔层厚度震荡变化的,但在1nm厚度左右其实也能获得较大的耦合系数。
参考手册中关于场文件数据格式的文档说明,方便使用origin绘图: 网页链接;使用origin的详细绘图步骤参考笔记08: 网页链接
若不使用origin绘图的话,参考手册的avf2ppm的文档说明,将场文件映射为图像文件: 网页链接,这部分可以参考笔记03: 网页链接

oommf如何定时保存模拟进度,方便重启后恢复模拟进度?(即检查点文件问题)

这里对上文中检查点文件进行一些补充说明。
所有经历过办公室断电的人肯定需要oommf恢复到上次的模拟进度,这需要利用oommf保存检查点文件的功能。或许是旧版本软件导致的,也或许是以前不严谨的测试方法导致的,在以前的mif文件中通过盲目的禁用该功能从而避免报错。
但现在,使用当前的OOMMF 2.0 beta 0版本,测过测试,可以通过如下方式设置mif文件中的(两种)驱动器类,实现定时保存检查点文件,并在需要时重启oommf恢复上次模拟进度:
1.设置checkpoint_interval参数为保存检查点文件的时间间隔(默认值是15,单位:分钟),比如“checkpoint_interval 9.5”表示每9.5分钟保存一次检查点文件。
2.设置checkpoint_disposal参数,这里只推荐将它设置为“never”, 即oommf不会自动删除检查点文件。 不太推荐将它设置为“done_only”,在某些情况下,它仍然会导致oommf恢复模拟进度报错,并且会自动删除检查点文件,令人猝不及防。 不能将它设置为“standard”(默认值),在任何情况下,它都会会导致恢复模拟进度报错,并且会自动删除检查点文件。
最后建议:尽量让oommf的所有工作文件夹都是英文名称,避免中文字符。

请问可以指导一下如何将.omf转换成.bmp格式吗?

可以先在mmdisp里面调好矢量图的显示设置,达到你认为的最佳显示效果,之后把mmdisp的显示设置保存为一个.config文件,最后利用avf2ppm,把设置配置文件的参数设置为你保存的.config文件,就可以了。命令类似如下:
tclsh oommf.tcl avf2ppm //主命令
-config 图片显示配置文件\display.config //配置文件的路径
-format B24 //指定输出图片格式为BMP
-ipat 待转换的磁化矢量文件*.omf //输入文件所在的目录
-opatexp 待转换的磁化矢量文件 //使用正则表达式替换输出目录
-opatsub 转化后的图片 //使用正则表达式替换输出目录

请问出现couldn’t read file “oommf.tcl”: no such file or directory是什么原因?我是直接打开cmd后输入tclsh oommf.tcl avf2odt 命令。大概这样
C:\Users\001>tclsh oommf.tcl avf2odt
couldn’t read file “oommf.tcl”: no such file or directory

首先使用文件管理器打开到oommf的根目录,即文件oommf.tcl所在的目录。
接着在该目录下启动命令行窗口,若是Windows系统的话,直接在文件管理器的上面的目录栏输入 cmd 并回车,即可进入当前目录的命令行窗口。
接着在打开的命令行窗口输入命令:
tclsh oommf.tcl 命令行程序名称 参数名1 参数值1 参数名2 参数值2。。。

请问我使用Oxs_ImageAtlas读入图片的颜色来划分,但我不确定是否正确读入,有什么办法可以验证吗,通过mmdisp无法直接看出,能否把mmdisp导出成ppm格式的图片来看?

Oxs_ImageAtlas是定义容器形状的类,mmdisp是查看矢量场的程序,你定义的特殊形状的容器,可以在mmdisp的不同视图轴观看,如果不明显的话,可以试着修改不同区域的磁属性,比如说,不同区域的初始磁化m0不同,如此加以区分不同区域。

如何对矢量场文件批量作差、批量转换文件格式,即命令行程序avfdiff和avf2ovf的用法?

对命令行工具avfdiff和avf2ovf的用法再进行补充,使其更好用。
avfdiff单进程多文件版本.bat :

@ rem 请将该批处理文件放在oommf安装根目录

@ rem 资源占用少,适合于电脑资源不足使用,耗时最多
@ rem 单进程调用avfdiff,单个avfdiff可以同时处理个文件
@ rem 构造的文件列表达到最大数量后avfdiff会自动执行命令,防止文件列表过长,导致avfdiff无法识别过多的参数

@ rem 开启变量延迟
@ setlocal enabledelayedexpansion

@ rem 注意待处理的磁化文件相对于本文件的位置
@ set ovf_directory=D:\mif_run_dir\M_dynamic\*.omf
@ rem 基态矢量文件
@ set ovf_ground=D:\mif_run_dir\W@60#P@28#N@48#SkyMag@+z_relaxed.omf

@ rem 用于构造输入文件名称列表的字符串变量
@ set fileList=
@ rem 记录同时处理的文件数量
@ set /A fileList_length=0
@ rem 能同时处理的最大文件数量,设置的太大的话文件顺序发生混乱
@ set /A max_length=30

@ rem 以下命令是使用avfdiff的命令,请先理解它的命令参数
@ rem %%i是输入omf文件的名称
for %%i in (%ovf_directory%) do (
@ set fileName=%%i
@ set namePostfix=!fileName:~-3,3!
@ if !namePostfix! equ omf (
@ set fileList=!fileList!%%i 
@ set /A fileList_length+=1
@ if !fileList_length! equ %max_length% (
tclsh oommf.tcl avfdiff %ovf_ground% !fileList!
@ set /A fileList_length=0
@ set fileList=
)
)
)
@ rem 将单独处理余下不满max_length数量的文件列表
tclsh oommf.tcl avfdiff %ovf_ground% !fileList!

avf2ovf多进程单文件版本.bat :

@ rem 请将该批处理文件放在oommf安装根目录,并修改后缀名为.bat
 
@ rem 资源占用多,适合于电脑空闲时间使用,耗时最少
@ rem 多进程批量调用avf2ovf,且每一个avf2ovf只处理一个文件
@ rem 进程达到最大数量后会自动暂停几秒等待进程运行结束,防止电脑死机
 
@ rem 开启变量延迟
@ setlocal enabledelayedexpansion
 
@ rem 注意待处理的磁化文件相对于本文件的位置
@ set ovf_directory=D:\mif_run_dir\boundSW_modulation\SW_sin#F@2.96GHz#A@2000\only_WG#up@+z#down@-z\M_dynamic\*.omf
 
@ rem 输出文件的名称与输入文件名称相同,否侧会打乱文件顺序
 
@ rem 记录开启的进程数量
@ set /A process_num=0
@ rem 最大进程数
@ set /A max_process=10
@ rem 等待的最长时间(秒)
@ set /A max_timeout=4
 
@ rem 以下命令是使用avf2ovf的命令,请先理解它的命令参数
@ rem %%i是输入omf文件的名称
for %%i in (%ovf_directory%) do (
start /min cmd /c "tclsh oommf.tcl avf2ovf -dataformat text -fileformat ovf 2 %%i %%i"
@ set /A process_num+=1
@ if !process_num! equ %max_process% (
@ timeout /t %max_timeout%
@ set /A process_num=0
)
)

23/8/17补充版本:
在之前的示例中,由于oommf的avf2ovf程序不支持文件夹中指定后缀名为输入参数,只支持单个文件名称作为输入参数,所以这极大的限制了转换OVF文件数据格式的速度。不过幸好,mumax3自带的命令行程序mumax3-convert.exe支持上述操作,速度贼快,需要构造的命令行如下:

@ rem 开启变量延迟
@ setlocal enabledelayedexpansion
 
@ rem 注意mumax3-convert.exe所在的全路径名称
@ set mumax3_convert=F:\software\microMag\mumax3\mumax3-convert.exe
 
@ rem 注意待处理的磁化文件相对于本文件的位置
@ set ovf_directory=D:\mif_run_dir\test\30#30#1560#center@sin\f@1.08GHz\M_dynamic\*.omf
 
@ rem mumax3-convert的命令参数:"text""binary"
@ set convert_cmdPrefix=-ovf2 text
 
@ rem 使用命令行附带相关参数运行mumax3-convert.exe
!mumax3_convert! !convert_cmdPrefix! !ovf_directory!

想问一下博主,我按上面的顺序安装了oommf但是打不开Oxsii界面是什么原因呢?报错内容是cant find package Oc 2 while executing"package require Oc 2"。然后后面指出了文件oxsii.tcl的第六行出现了这个问题。

已解决,是由于老哥同时安装了两个Tcl环境导致oommf报错的,卸载之后重新安装一个Tcl环境后就行了。

Oxs_TransformZeeman具体应用于什么场景呢?

可以说这个类适用于任何形式的外加磁场,比如说在需要在磁体系的局域位置施加时变的微波磁场,即就是文章中常说的天线,那么就可以用这个类。若要使用这个类来定义一个外加磁场,就要预先定义好一个矢量场,在这个矢量场中分配好所有单元格的矢量值(比如某个单元格的矢量值是(0 0 0 )就表示排除了该单元格),接着在Oxs_TransformZeeman类中,使用自定义函数(参数有:时间,单元格坐标)来改变每个单元格的矢量值,让变化后的矢量值作为该单元格受到的外加磁场。举个例子来说,在天线区域施加时变的外加磁场的部分代码类似如下所示:

##########施加激发自旋波的外加磁场###########
#激发自旋波的微波磁场的振幅,这里的单位为mT,表示40*pi Oe
Parameter Happ        [expr {4*$pi}] 
 
#激发自旋波的微波磁场的频率,这里的单位为GHz
Parameter frequency         1
 
#对初始的矢量场initialAntennaFiled进行变化,
#使其成为激发自旋波的外加磁场:H= Happ(ysinwt)
proc transformExcitationFiled { total_time } {
   global frequency pi
   
   #计算w=2*pi*f,并把单位顺便转化为GHz
   set w [expr {2 * $pi * $frequency * 1e9}]
   #计算y方向的磁场分量及其对时间的导数,其他方向为0
   #即y方向H*sinwt
   set Hy [expr {sin($w  * $total_time)}]
   set dHy [expr {cos($w  * $total_time) * $w}]
   #返回6个元素的列表,即变换矩阵的3个主对角元素及其3个导数
   return [list 0 $Hy 0 0 $dHy 0]
}
 
#指定天线区域的矢量场(后面转化为磁场):H= (0 Happ 0),其他区域H=(0 0 0)
proc initialAntennaFiled { x y z } { 
	global nanowire_x Happ
	#天线距离纳米线左端208nm,天线宽度为4nm
	if {$x >= 208e-9 && $x <= 208e-9 + 4e-9} {
	return "0 $Happ 0"
	}	
	#其他区域无外加磁场
	return  "0 0 0"
}
#使用脚本指定天线区域的矢量场
Specify Oxs_ScriptVectorField:antennaFiled {  
	script initialAntennaFiled
	script_args rawpt
	atlas :atlas
}
#使用此类可生成任意(局域,时变)的外加磁场
Specify Oxs_TransformZeeman [subst { 
	field :antennaFiled
	comment "函数返回6个元素,是3个主对角元素及其3个导数"
	type diagonal
	script transformExcitationFiled
	script_args total_time
	comment "将默认单位A/m换算为mT"
	multiplier [expr {0.001/$mu0}]
	comment "将stage_count设为0(默认值),让模拟的所有阶段都存在该塞曼能"
	stage_count 0
}]
 
##########施加激发自旋波的外加磁场###########

博主,您好,请问下您这个模拟的动态图片是怎么弄的呢,是用软件录制的吗?

在本文中是使用录屏软件录的,不过在后面的笔记里都是将一系列磁化状态的矢量场文件转化为图片,再把图片连接成动图(视频)的。请参考笔记03的一.2小节,里面展示了矢量文件转化成图片并制作GIF动图的每一个步骤。

请问一下怎么能让仿真速度变快呢?

就我使用经验而言,运算速度取决于计算机上CPU的数量,基本和内存和硬盘情况无关。一般而言,运算速度大致上取决于你微磁模型里面划分的总的单元格数量,和你定义的能量项的数量,单元格和能量项越多,速度越慢。所以通常而言,对于一个确定的磁体系,似乎只有减少模型的总的单元格数量来加速运行了,但单元格的尺寸划分又有着一个限制:为了使相邻单元格中的磁矩之间的夹角不能太大(具体几十度忘了,大概小于60度?)所以单元格尺寸不能大于磁体系的交换长度lex,常见的就坡莫合金而言,它的单元格尺寸可以最大为5X5X5nm。

请问您的mif文件是哪个软件编译生成的,这些代码可以用mage来写吗,初学请指点?
还有就是宏自旋模型这里的能量是只考虑了外加磁场的塞曼能吗?

mif文件是oommf程序包专用的微磁问题描述文件,其内容是由Tcl脚本级语言+特有的类组成,以此来定义几何模型,材料参数,外界激励等。至于Tcl脚本语言和Python脚本语言也是类似,都是脚本级解释型语言,和Java和C等编译型语言不同,所以不需要预先编译。可以使用任意的文本代码编辑器来编写mif文件,我觉得比较好用的是notepad++,建议初学者先看一遍oommf的帮助文档,对整个微磁模拟的流程有个大概的理解。
应该是的,不过这些早期的博客并没有什么参考价值,若要形象理解其他磁场的作用效果可以参考ubermag的文档: 网页链接

为了计算自旋波的频谱和色散,该如何处理*.omf磁化文件?

在使用MFA程序包分析自旋波的频谱和色散时,参考笔记05: 网页链接 中的三.2的公式(8-1),应该把输入的磁化文件应进行这样的预处理:将模拟结束后得到的所有磁化文件M(r,t) ”减去“ 基态磁化状态M0(r),即利用avfdiff命令行工具处理(该工具的具体使用方法见笔记04的六)。这样得到的差值磁化文件只包含了磁体系的动态磁化状态即自旋波的磁化分量,如此进行傅里叶变换后得到的频谱图和色散图就不包含直流(即零频)了。
原文中通过按名称升序的方式遍历输入文件夹中的每一个矢量场文件,但是通过原文中的方式来定义输出文件名(即构造outFileFullName变量)的时候需要注意:输出文件名中追加的“数字”为文本格式,而非真正的数字,所以当所有文件转化完成后,比如依次生成了100个文件:m_0.ovf,m_1.ovf,m_2.ovf,,,m_99.ovf,看起来是按照升序依次排列的,但实际上它们的名称升序顺序为:m_0.ovf,m_1.ovf,m_10.ovf,m_11.ovf,,,m_19.ovf,m_2.ovf,m_20.ovf,,,m_29.ovf,m_3.ovf,,,最简单的检验方法就是利用mmDisp的File->Open功能来浏览这些文件,来查看它们的排列顺序。
问题导致的后果:这种自定义输出文件名的数字导致了这些文件没有按常规的顺序排列,这在读取这些磁化文件做傅里叶变化时会出现错误(不是按照采样时间升序排列的)。
问题解决:最简单的方式就是不自定义输出文件名,而是和输入文件名相同,这样就相当于将转化后的矢量场文件直接替换原来的矢量场文件。这种批处理的命令如下:

@ rem 请将该批处理文件放在oommf安装根目录,并修改后缀名为.bat
@ rem 开启变量延迟
@ setlocal enabledelayedexpansion
 
@ rem 注意待处理的磁化文件相对于本文件的位置
@ set inFileFilter=矢量场文件夹全路径\*.omf
 
@ rem 输出文件的名称与输入文件名称相同,否侧会打乱文件顺序
 
@ rem %%i是输入omf文件的名称
 
@ rem 以下命令是使用avf2ovf的命令,请先理解它的命令参数
for %%i in (%inFileFilter%) do (
start /min cmd /c "tclsh oommf.tcl avf2ovf -dataformat text -fileformat ovf 2 %%i %%i"
)

博主关注过磁畴动力学嘛?想看博主出一期磁畴壁运动的模拟

没有深入了解过,模拟的部分可以给你推荐一篇通俗易懂的文章DOI: 10.1103/PhysRevB.87.020402

博主你好,我用你第二节编写的mif文件生成的2500个.omf文件去MFA运行为什么会报错 而直接用例子给的ovf可以画出图来,请问大佬遇到类似问题了么?

你好,其实本文的内容是我当初在完全不懂自旋波FFT的情况下写的,所以给大家造成了误导。。。本文没有事先进行“获取动态磁化”的处理(M(r,t)-M(r,t0)),所以本文的所有有关FFT的结果都是不准确的。关于利用FFT获取自旋波的频谱和色散请参考笔记05: 网页链接,和笔记: 网页链接

关于“自旋流对参考层有没有影响?”,我也看到过类似的问题说:自旋流(分别是面内STT,面外STT,SOT转矩)对磁化状态固定的体系的能量有什么影响?你可以试着模拟一下对比能量变化曲线并将结果附在评论区。

这个问题参考这篇文章( 网页链接)审稿人提出的问题:Reviewer 3 Report:10.Can authors explain why the final energy of the system (see Fig. 3) after skyrmions enters SAF region is different depending of the spin-torque mechanism (SOV Vs STT)? The current itself does not contribute to the system energy.
我昨天试了一下:通过在Oxs_SpinXferEvolve(Slonczewski形式STT、SOT)和Anv_SpinTEvolve(Zhang-Li形式STT)中设置fixed_spins参数,将整个磁体系的磁化状态固定住,施加电流后获取总的能量曲线随时间的变化,观察到总能量始终保持不变,这也说明磁体系的总能量是由磁化状态决定的,而自旋流的转矩是通过影响磁化状态进而影响总能量的。

请问博主 oommf这种复杂的几何结构是怎么通过图像来构建的,是要用到其他的软件还是?谢谢

从本文也可以看出来使用图片建模的大致流程,其关键点在于:
1.图片中的每一个像素点都表示微磁模型中对应位置的一个单元格(于是不会涉及图片缩放相关的问题)。由于图片的每一个像素点只有x,y两个位置坐标,但是所需的微磁模型可能不止是单层,对于多层的结构,就需要一层模型对应一张图片。
2.使用Oxs_ImageAtlas类去识别图片中每一个像素点的颜色,然后根据不同的颜色,将该像素点对应的单元格划分到不同的“区域”,后续可以按区域分配材料的磁性参数。

你好!请问那种susceptibility - frequency 关系曲线是如何通过OOMMF微磁模拟导出的吗?那就麻烦你浏览一下这篇文章( 网页链接)的Figure 1, 3, 4 或者 论文(doi:10.1088/0957-4484/15/10/022)Figure 2, 3. 我感觉没有很难, 但是就是弄不出来。 好像是在外加场H(t)下, 经过傅里叶变换?谢谢~~

从你给的文章(doi:10.1088/0957-4484/15/10/022)中第2页的原文:After the equilibrium magnetization was obtained, a small external pulse H(t) = 1000 exp(−109t)(t ? 0) was applied perpendicular to the long axis of the pillar (z-direction). Here, H(t) is in A m−1 and t is in seconds. The amplitude of the pulse field was small enough to remain in the linear response region. The corresponding H(ω) was obtained by using a fast Fourier transform or analytically as H(ω) = 1000/(109 + 2πiω). The imaginary part of the susceptibility was computed by dividing the Fourier transform of the response (M(ω)) by the Fourier transform of the excitation (H(ω)).

可以看到susceptibility - frequency 关系曲线的获取方式:首先,进行微磁模拟,将一个给定的外加脉冲磁场H(t)施加在已经达到稳态的磁体系的给定方向上,按照不小于奈奎斯特采样频率的条件保存一系列等时间间隔的磁化文件,得到M(t)。
接着,对外加磁场和磁化文件进行快速傅里叶变换(FFT),H(t) 经过FFT之后得到 H’(w),M(t) 经过FFT之后得到 M’(w)。关于如何对函数和磁化文件进行FFT的详细步骤请参考笔记05。
最后,将M’(w)除以H’(w)即可得到所需曲线关系(✗’(w))。即对于M’(w)和H’(w)的每一个频率点来说,将它们的傅里叶振幅相除。

请问博主没有看到或者尝试把STT和SOT结合起来同时在OOMMF中使用呢?

参考Slonczewski形式的STT: 网页链接,可看到若将式中Lambda 设为1,P设为自旋霍尔角,从而该Slonczewski形式就变换成了SOT的形式;而参考ZhangLi形式STT: 网页链接,它适用于面内电流通过磁体的情况。当要同时考虑SOT和ZhangLi形式的转矩时,应该就是这两个式子共四项直接追加到LLG方程的右边,但似乎并没有OOMMF的相关扩展模块实现这个功能,但或许该参考文献使用的软件LLG可以实现。不过每一个微磁软件都能让用户直接扩展LLG方程,或许你可以试一下。

关于已有的自旋波分析程序,这里再补充一个?

参考mumax3官方教程: 网页链接里面包含频谱和色散的计算方法,但我个人觉得,里面的代码比较晦涩难懂。

您好,请问色散关系那一章节中计算图上每一点的值即傅里叶振幅,与构造信号的振幅不一致啊?

是的,但我也没找到有关如何获取原始的平面波分量的振幅的相关参考文章。关于更多的对二维FFT后得到的二维输出矩阵的数值处理可以参考:Numerical calculation of spin wave dispersions in magnetic nanostructures(DOI :10.1088/0022-3727/45/1/015001)

获取自旋波模式的空间分布?

下载链接: 网页链接。新增功能:获取特定频率模式的空间分布(振幅和相位的空间分布),它们的每个频率点的结果保存为4列数据:前三列分别为空间点的x,y,z坐标(nm),第4列为该点的振幅/相位值,于是通过Origin的3D散点图绘制。

博主,您好。我在安装完ubermag后,在Anaconda Power Prompt(miniconda)里输入mumax3,显示以下输出:mumax3 : 无法将“mumax3”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径
正确,然后再试一次。
所在位置 行:1 字符: 1
+mumax3
+~~~~~~
+CategoryInfo : ObjectNotFound: (mumax3:String) [], CommandNotFoundException
+FullyQualifiedErrorId : CommandNotFoundException
您感觉这可能是哪方面原因呢?我安装卸载了很多次每次都是这样。感谢

感谢您的建议,我之前少安装了几个python模块文件,现在显式指定路径后可以正常运行啦。期待您接下来的更新

您好!请问博主有机会能出一篇关于铁磁共振(FMR)相关的文章吗?类似于画频率磁化率图之类的,感觉大部分文献说的太模糊了,看起来不难,但对于我这种新手小菜鸡来说有很多细节不知道下手

关于FMR铁磁共振的内容可以参考文章"Proposal of a micromagnetic standard problem for ferromagnetic resonance simulations"(DOI:10.1016/j.jmmm.2016.08.009),在该文中详细讲解了获取FMR频谱的一种方式,在文章的参考文献[23]里给出了oommf代码和分析数据的程序。
作为微磁模拟的标准问题之一,这篇文章可以帮助初学者深入了解铁磁体达到FMR时振幅和相位的空间分布,与局域共振模式之间的差异。

博主,文件为啥没了?还有一个问题,二维频谱曲线后续数据怎么处理?

我更新了一下原来的文件,可能需要等审核几个小时才能看见。
通常来说,采样得到一维含时间数据列表经过一维FFT之后会得到的一维的复数列表;
1.复数的虚部相对实部求反正切arctan2(虚部,实部)(即直接使用angle函数,angle(复数)),可得到所有频率的相位(范围[-pi,pi]);
2.对复数取模值(即使用abs函数),可得到幅度(magnitude);
3.对0Hz之外的所有频率的幅度(magnitude)÷采样点数×2,0Hz的幅度÷采样点数,可得到所有频率的振幅(amplitude);
4.一般情况下,直接对振幅(amplitude)取平方,可得到功率。

采样得到二维含时空数据矩阵经过二维FFT之后会得到的二维的复数矩阵
1.首先使用np.fft.fft2函数作用在时空数据矩阵,会得到一个复数矩阵fftMatrix;
2.接着使用np.fft.fftshift函数作用在复数矩阵fftMatrix,如此将零频移到矩阵中心;
3.接着对复数矩阵fftMatrix使用np.abs函数取模值;
4.之后要转换为色散矩阵,可以直接对模值矩阵取平方,然后取对数,但这些操作都是对所有数值同时缩放,这可能只对色散图像的清晰度有影响,所以可以手动选择缩放以让图像有最佳显示效果。

计算斯格明子的拓扑电荷?

计算斯格明子的拓扑电荷的方式参考: 网页链接,分为两步:1.使用discretisedfield.io.field_from_ovf(filename)函数( 网页链接)读取OVF矢量场文件并得到discretisedfield.Field实例对象。2.使用discretisedfield.tools.topological_charge(field, /, method=‘continuous’, absolute=False)函数( 网页链接)从该矢量场对象计算拓扑电荷。

用程序可以算出畴壁处的有效场吗?

在mumax和oommf的模拟过程中可以选择保存所有单元格的有效场的功能,这会输出一个OVF格式的矢量场文件,接着可以用oommf的命令行程序avf2odt对畴壁区域的空间范围进行切片输出局域内的值。mumax中可以使用Save(B_eff)可以保存一次当前磁化状态的总有效场,使用AutoSave(B_eff, 10e-12)可以实现每间隔10ps保存一次B_eff

博主,请教一下。椭圆纳米阵列仿出来的自旋波数据怎么分析呀?就是FFT和色散图,要选取整个仿真区域还是单个椭圆呢?微磁仿真软件是不是不包括单元外空间自旋波的传输

你好,
0.磁性单元的周期阵列一般是磁振子晶体(Mcs),对于你描述的纳米椭圆柱阵列若是仅通过偶极相互作用耦合并形成允带和带隙的情况,则当自旋波在一个磁体中传播时,会在磁体外的空间中的辐射动态杂散场,并通过这个动态杂散场在下一个磁体中诱导出自旋波。
1.对于一维磁振子晶体(只在单个方向有周期性)的频谱和色散研究可以参考:Numerical calculation of spin wave dispersions in magnetic nanostructures(DOI:10.1088/0022-3727/45/1/015001),里面介绍了沿不同切片路径采样磁化数据并得到色散关系的差异。
2.可以参考笔记03中演示的另一个一维磁振子晶体: 网页链接,可以参考那篇文章的图像表达和采用的程序。
3.具体的FFT计算可以参考semargl: 网页链接 和 笔记05: 网页链接

关于微磁软件建模的问题?

oommf中微磁模型的创建请参考回答:https://ask.csdn.net/questions/7880153 ,主要思想是分配单元格到指定区域中,并将无磁性区域的Ms设置为0即可。

然而mumax3则稍微不同,它的几何模型用 Geometry 来描述,我们需要为它设置Shape,所以要将无磁性的单元格分配到自定义的无磁性的Shape中,并在设置 Geometry 时减去无磁性Shape(总Shape.Sub(无磁性Shape))才能得到无磁性(缺陷)区域。关于mumax3软件的更多相关教程可以参考“Tutorial: Simulating modern magnetic material systems in mumax3”(DOI:10.1063/5.0160988)。

博主能推荐一些微磁模拟软件输出的矢量场文件的3D可视化的软件吗?

当然可以。虽然我们可以使用origin绘制OVF格式的矢量场文件的2D映射图像,但当我们需要更快速的绘图和更好的视觉效果时,则需要考虑一些3D显示软件,并在三维空间中绘制矢量箭头,渲染颜色,调整视图角度等等。

1.Muview:https://github.com/grahamrow/Muview2/releases

在这里插入图片描述
上次更新是在2019年,该软件使用起来非常简单和顺手,可以使用箭头/方块/圆锥形状显示矢量并自定义形状的相关参数,可自定义颜色映射,可以空间切片显示等等。但是该软件只支持导出(复制和保存文件)位图,不支持导出矢量图。此外,该软件不能显示坐标系。

2.SpinView:https://mxjk851.github.io/SpinView/

在这里插入图片描述
应该是新上线的3D可视化软件,除了支持oommf和mumax3输出的OVF格式的矢量场文件之外,还支持Vampire输出文件的3D可视化。根据其官网的介绍,它的功能覆盖了Muview,并支持许多其他可视化的高级选项,UI也比较符合现代人的审美。


总结

本文将持续更新直到笔者毕业。
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖工人_0803号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值