magnetization of coreshell nanoparticles

28 views
Skip to first unread message

Miroslav Polach

unread,
Nov 25, 2025, 10:09:09 AMNov 25
to mumax2
Dear all,
I am currently working on a simulation of magnetization of a coreshell nanoparticle. That means the core of a cubic geometry is antiferromagnetic and the shell is ferromagnetic material. Now, I am trying to simulate this in mumax+. I hope my code (below "...===...") explains my idea, however I am not sure whether it works as I would like.
Any suggestions are appreciated. Thank you.
Sincerely,
Miroslav Polách

=====================================================================
import numpy as np
from mumaxplus import Antiferromagnet, Grid, World
from mumaxplus.util import plot_field


# cell size
length, width, thickness = 3e-9, 3e-9, 3e-9
world = World(cellsize=(length, width, thickness))
# number of cells
n=8
nx, ny, nz = n, n, n
grid = Grid((nx, ny, nz))

# define "shell" as region 1
regions = np.zeros(grid.shape)
layers = [0, 1, -1, -2]
regions[:, :, layers] = 1
regions[:, layers, :] = 1
regions[layers, :, :] = 1

# magnet envirnment
np.random.seed(1984)
AFM = Antiferromagnet(world, grid, regions=regions, name="coreshell")

# material parameters - Wustite FeO
AFM.afmex_cell.set_in_region = (0, 2.7e-12)
AFM.afmex_nn.set_in_region = (0, -5.2e-12)

# material parameters - Magnetite Fe3O4
AFM.sub1.msat.set_in_region = (1, 0.48e6)
AFM.sub1.aex.set_in_region = (1, 7e-12)
AFM.sub1.kc1.set_in_region = (1, -13e3)
AFM.sub1.anisC1.set_in_region = (1, (1,0,0))
AFM.sub1.anisC2.set_in_region = (1, (0,1,0))
AFM.sub1.alpha.set_in_region = (1, 0.03)

AFM.sub2.msat.set_in_region = (1, 0.48e6)
AFM.sub2.aex.set_in_region = (1, 7e-12)
AFM.sub2.kc1.set_in_region = (1, -13e3)
AFM.sub2.anisC1.set_in_region = (1, (1,0,0))
AFM.sub2.anisC2.set_in_region = (1, (0,1,0))
AFM.sub2.alpha.set_in_region = (1, 0.03)


plot_field(AFM.full_magnetization, arrow_size=1, show=True, layer=n//2, title=False)

AFM.minimize(tol=1e-9, nsamples=20)

plot_field(AFM.full_magnetization, arrow_size=1, show=True, layer=n//2, title=False, out_of_plane_axis='z')
plot_field(AFM.full_magnetization, arrow_size=1, show=True, layer=n//2, title=False, out_of_plane_axis='x')
plot_field(AFM.full_magnetization, arrow_size=1, show=True, layer=n//2, title=False, out_of_plane_axis='y')


Ian Lateur

unread,
Nov 27, 2025, 11:57:33 AMNov 27
to mumax2
Hi,

I think your core (region 0?) does not have enough parameters. Both sublattices of an antiferromagnet still need all ferromagnetic parameters to be set, such as msat, aex and alpha (and anisotropy). afmex_cell and afmex_nn couple those two ferromagnetic sublattices. To get a ferromagnetic outer shell (region 1?), I would set msat of sub2 to 0 so effectively only 1 ferromagnet remains. This shell can still exchange couple to sub1 and sub2 of the core via aex and afmex_nn respectively, if that's what you want.

I hope this helps.
Ian

Op dinsdag 25 november 2025 om 16:09:09 UTC+1 schreef Miroslav Polach:
Reply all
Reply to author
Forward
0 new messages