FMR simulation of a nanowire

74 views
Skip to first unread message

Mohammad Abu Jasem

unread,
Aug 16, 2025, 7:44:41 AMAug 16
to mumax2
Hi everyone,
Currently I'm trying to reproduce the FMR of a microwire using mumax3. I tried so many days long, but fail to reproduce it as I am new in FMR. I am providing the figure
 fmr_setup.jpg
of the setup and the paper . The figure caption is , " Experimental setup. DC (current source and voltmeter) and RF (microwave generator and power sensor) electronics are connected to the wire using a bias tee. "
I successfully set the geometry (wire), but fail apply the fields(H external  and h_rf for I_rf).If anyone help me to reproduce the MW absorption vs applied field when the frequency is fixed, let 10Ghz , it would be helpful for me.
Thank you,
A Mumax3 user

Josh Lauzier

unread,
Aug 22, 2025, 12:56:19 AMAug 22
to mumax2
Hi,

For an example of FMR in general, I would recommend checking out the mumax tutorial here. In particular, the colab notebook example 5. It shows most of what you need to know, including how to apply H_external. Instead of 

B_ext.setregion(1, vector(0.01 * sinc( 2*pi*{fmax}*(t-{T}/2)), 0, {Bz}))

You could do something like B_ext= vector ( H_max*sin(theta),0, H_max*cos(theta))

The example script is slightly different than your use case; the main difference is h_rf. In order to apply h_rf, I think you will have to use B_ext.Add() to add a custom field. Mumax doesn't include Oersted fields when you apply a current. So you would need to generate the magnetic field to that, and then apply it as a custom external field. In general, you can use software like Comsol to find that field, convert the output into and OVF, and import it; or in your case, since your geometry is so simple, you can maybe just use the analytic expression for the magnetic field from a current carrying wire. You can use B_ext.Add() on either a mask (as shown in the spinning hard disk example on the example page), or load in an OVF file.

If you're trying to replicate this paper exactly, one area you will need to tweak is the size. In that paper, they are working with a wire that is ~50 microns diameter and microns long, which is going to be much too large. Micromagnetics is suitable for simulations on the size of a few microns at most and you won't be able to fit the entire thing into memory.

Best,
Josh L.

Mohammad Abu Jasem

unread,
Aug 23, 2025, 1:07:22 AMAug 23
to mumax2
Hi,
  
I set the geometry, applied the field shown in the figure, and plotted the absorption power vs 
powerDbm_From_paper.png
geometry.png
B_ext_ovf.png
absorption_power.png

Josh Lauzier

unread,
Aug 24, 2025, 5:11:23 PMAug 24
to mumax2
Hi,

I see two major issues, at least. One,in your analytic expression for the field, remember that the form   is only valid outside the wire (indeed, it will blow up as r->0 , which you can see in your third attached image. The arrows get quite large). You would need to apply different expressions for inside and outside the wire.

Second, in your for B_bias = 0.25; B_bias >= -0.25; B_bias -= 0.01 loop, you are doing B_ext.add() in each iteration of the loop. This will add a new expression each time, on top of the previous ones. It does not remove the previous ones. You would want to call RemoveCustomFields(). Setting B_ext=(0,0,0) will not remove the custom terms, it will only set the normal non-custom external field (ie, if you had set the bias field using B_Ext=vector(0,0,B_bias), instead of using biasmask, it would zero that out). It will not zero out the B_ext.add() from biasmask or p.

Best,
Josh L.
Reply all
Reply to author
Forward
0 new messages