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

2023-11-01 05:12

本文主要是介绍“微磁学”博客专栏的评论区整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 总结


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


前言

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

示例程序 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环境后就行了。

这么久了,不知博主您有没有后续继续跑过第三个示例。我研究了一下,问题应该出在定义时间演化器里面的参数gamma_G,为了将原文里面的/(Oes)转换为m/(As),您使用了gamma_G [expr {1.76e7 * 1e3 / (4 * $pi)}],但其实应该是[expr {1.76e4 * 4 * $pi }],同时吉尔伯特阻尼使用论文里的0.01而不是0.001 。最后应该增加驱动器的run_time到10ns量级。这样运行出来的结果和原文类似,但不知为何还是稍微小一些。

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,并把单位顺便转化为GHzset w [expr {2 * $pi * $frequency * 1e9}]#计算y方向的磁场分量及其对时间的导数,其他方向为0#即y方向H*sinwtset 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,天线宽度为4nmif {$x >= 208e-9 && $x <= 208e-9 + 4e-9} {return "0 $Happ 0"}	#其他区域无外加磁场return  "0 0 0"
}
#使用脚本指定天线区域的矢量场
Specify Oxs_ScriptVectorField:antennaFiled {  script initialAntennaFiledscript_args rawptatlas :atlas
}
#使用此类可生成任意(局域,时变)的外加磁场
Specify Oxs_TransformZeeman [subst { field :antennaFiledcomment "函数返回6个元素,是3个主对角元素及其3个导数"type diagonalscript transformExcitationFiledscript_args total_timecomment "将默认单位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对畴壁区域的空间范围进行切片输出局域内的值。使用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: 网页链接


总结

本文将持续更新直到笔者毕业。

这篇关于“微磁学”博客专栏的评论区整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320716

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

站长常用Shell脚本整理分享(全)

站长常用Shell脚本整理分享 站长常用Shell脚本整理分享1-10 站长常用Shell脚本整理分享11-20 站长常用Shell脚本整理分享21-30 站长常用Shell脚本整理分享31-40 站长常用Shell脚本整理分享41-50 站长常用Shell脚本整理分享51-59 长期更新

搜狗浏览器打开CSDN博客排版错乱问题解决

之前发生过几次,不知道什么原因。 今天一直用着好好的,打开一个csdn连接,显示404,博文被删除了,于是就用百度快照打开试试,百度快照打开显示的排版很乱也没找到有用信息。 后面再浏览CSDN博客就排版错乱,显示一个大大二维码图片。 尝试删除IE缓存无效,使用谷歌浏览是好的。 基本锁定就是搜狗缓存导致的,于是找如何删除搜狗缓存   清除后恢复正常

我自己常用的eclipse 快捷键整理

---------------- 我自己改的快捷键: 复制当前行单下一行  ctrl alt n   --------------------- 自带快捷键: 快速定位到一行  CTRL+L 向上(下)移动选中的行:ALT+UP/DOWN ARROW 删除行(Delete Line):CTRL+D CTRL + 1也很有用     ----------

C/C++ 网络聊天室在线聊天系统(整理重传)

知识点: TCP网络通信 服务端的流程: 1.创建socket套接字 2.给这个socket绑定一个端口号 3.给这个socket开启监听属性 4.等待客户端连接 5.开始通讯 6.关闭连接 解释: socket:类似于接口的东西,只有通过这个才能跟对应的电脑通信。 每一台电脑都有一个IP地址,一台电脑上有多个应用,每个应用都会有一个端口号。 socket一般分为两种类型,一种是通讯,一种是监听

828华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台

华为云征文|基于华为云Flexus云服务器X实例部搭建Halo博客平台 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Halo介绍2.1 Halo 简介2.2 Halo 特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、购买华为云Flexus云服务器X实例4.