In-Plane and Out-Of-Plane Hysteresis Loop Showing NO Difference

51 views
Skip to first unread message

Firstname Lastname

unread,
Oct 27, 2025, 6:28:52 AM (11 days ago) Oct 27
to mumax2
Dear MUMAX Community,

I've been trying to plot the in-plane (IP) and out-of--plane (OOP) hysteresis loop for 2D Fe3GeTe2 material, which due to its high uniaxial anisotropy should have a much smaller saturation field along the OOP direction and a large one in the IP direction. However, my simulations are showing similar saturation fields at around 1.2T in both directions, which is unexpected.

I've checked most posts regarding hysteresis loop on this forum and I have tried a lot of fixes to make the simulation more realistic, including reducing the cell size below exchange, anisotropy, and DMI lengths, increasing grid size to give more space for possible domains to form, increasing temperature and use run() to simulate thermal assisted switching (I've also tried just using minimize as in tutorial, or a combination of run and minimize), calculating the effective anisotropy to make sure it has a OOP, calculating the anisotropy field to set a maximum sweeping field above that value, but none of these methods worked. I would kindly ask if anyone has clues on how to show the expecting behavior in MUMAX3. Thank you.

The hysteresis loop along x-axis is shown below, the OOP field simulation is achieve by essentially setting B_ext to vector(0, 0, Bz) in the loop instead:

// Define the simulation geometry
setGridSize(256, 256, 8);
setCellSize(2.5e-9, 2.5e-9, 2.5e-9);
setPBC(10, 10, 0);

alpha = 0.2;
anisU = vector(0,0,1);


Aex = 10e-12;
msat = 3.76e5;
ku1 = 3.5e5;
Dind = 1.07e-03;

temp = 100.0;
outputFormat = OVF1_TEXT;

// Set the initial magnetization
m = randomMag();

// Define the parameters for the hysteresis loop
Bmax := 2.0;   // Maximum applied field in Tesla
Bstep := 0.05;   // Field step size in Tesla


// Add the external field and average magnetization to the output table
TableAdd(B_ext);
TableAdd(Edens_Total);
TableAdd(Edens_Exch);
TableAdd(Edens_Anis);
TableAdd(Edens_Demag);
TableAdd(Edens_Zeeman);
TableAdd(Edens_Therm);
TableAdd(ext_topologicalcharge);


tablesave();

relax();
snapshotAs(m, "m_initial_run_relax.jpg");
tablesave();

counter:=1


// Sweep the field from 0 to Bmax
for Bx := Bstep; Bx <= Bmax; Bx += Bstep {
    B_ext = vector(Bx, 0, 0)
    run(1e-9)
    print("Magnetization File was saved at B Field strength of ", Bx)
    tablesave()
    snapshot(m)
    counter += 1
}

// Sweep the field from Bmax to -Bmax
for Bx := Bmax - Bstep; Bx >= -Bmax; Bx -= Bstep {
    B_ext = vector(Bx, 0, 0)
    run(1e-9)
    print("Magnetization File was saved at B Field strength of ", Bx)
    tablesave()
    snapshot(m)
    counter += 1
}

// Sweep the field from -Bmax back to Bmax
for Bx := -Bmax + Bstep; Bx <= Bmax; Bx += Bstep {
    B_ext = vector(Bx, 0, 0)
    run(1e-9)
    print("Magnetization File was saved at B Field strength of ", Bx)
    tablesave()
    snapshot(m)
    counter += 1
}

Any suggestions is appreciated. Thank you.

Best Regards,

PC
Liu_thinFilm_M_vs_B_plot.png
Liu_thinFilm_M_vs_Bz_plot.png

Fatma Al Shanfari

unread,
Oct 27, 2025, 11:53:42 AM (11 days ago) Oct 27
to mum...@googlegroups.com
Hi 
I have two notes that I hope will help you. First for the out of plane hysteresis use the z component of the field. Second keep in mind if there is temperature in the simulation then your solver should change from the default one. Add in your code “ setsolver (6)”. This is best used with temperature. 
I can see that your exchange length is 10 nm and you unit sell is much less then that which is good 👍🏻.  You’re dmi is greater then critical dmi 👍🏻.

--
You received this message because you are subscribed to the Google Groups "mumax2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mumax2+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/mumax2/2b757858-1733-439a-aba2-dd0bb746dedcn%40googlegroups.com.

Firstname Lastname

unread,
Oct 28, 2025, 7:57:49 AM (10 days ago) Oct 28
to mumax2
Hi there,

Thank you for your reply. Yes I did use the OOP component for fields along the z axis for setting up simulations and analysis. I wonder how much the change will be by using a higher order solver, but it is worth to try.

Also I forgot to mention in the previous post that I did apply a symmetry breaking field in the form of B_ext = vector(Bz * cos(theta), 0.0, Bz * sin(theta)), where theta is 1 degree, to break the easy/hard axes, but it did not seem to solve the problem either.

Thank you again for your reply.

Best Regards,

PeiYu Cai

Felipe Garcia

unread,
Oct 28, 2025, 2:47:08 PM (10 days ago) Oct 28
to mum...@googlegroups.com
Dear Pie Yu Cai,

I don't see any problem in your loops. In fact very nice loops, it takes a lot of work to reach that level. Anyway, in theory there is no difference between IP and OPP saturation fields. What you obtain is the typical Stoner-Wohlfarth result for 0 and 90 degrees. If one calculates the effective anisotropy field one gets 1.39T, which is roughly the result from the IP loop. The OOP field is 1.2T from your plot. So actually they are not identical, maybe due to the effect of something else. In experiments both are rather different. The reason for that is that the samples are not perfect and for sure you will have a distribution of properties like grains or something. In fact, this is called Brown’s paradox and your simulations are, as far as I understand, an example. The effect is not temperature in your 1ns scale, your system volume is large and then that can not lead to thermal activation which needs a longer time. For sure if you increase the number of imperfections you will see a difference between both. I don't know what is the purpose of your calculation but to include defects it can be misleading because one does not gain a lot of knowledge of the system unless one has additional studies like grain distribution properties.

Best regards,
Felipe

--

Firstname Lastname

unread,
Oct 29, 2025, 6:25:00 AM (9 days ago) Oct 29
to mumax2
Hi Felipe,

Thank you for your reply.

Your analysis of the simulation were just trying to replicate a perfect uniform rotation described by the S-W model makes sense to me. I also agree that reproducing the observation between IP and OOP saturation fields might not be practical unless there are theories supporting how defects were distributed in the experiment sample. Maybe I will use existing data to analyze the energy competition between various runs instead. Thank you for your insightful reply again.

Best Regards,

PC
Reply all
Reply to author
Forward
0 new messages