Firstname Lastname
unread,Oct 27, 2025, 6:28:52 AM (11 days ago) Oct 27Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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