Standing wave in antiferromagnetic multilayer film resonance

47 views
Skip to first unread message

zishuo liu

unread,
Dec 15, 2025, 10:30:33 AM12/15/25
to mumax2
Hello everyone,
I am trying to simulate the resonance of a type-A antiferromagnetic film with a YIG thin film underneath.  
Now I have two questions. First, regarding the resonance results for a single antiferromagnetic material, the out-of-plane mode clearly shows the presence of two standing waves/modes,as shown in Figure 1.As shown in Figure 2, pure YIG does not exhibit many different modes.
The second problem is that the system combining antiferromagnetic material and YIG exhibits many standing waves under an applied magnetic field and resonance conditions, making it difficult to observe the resonance peaks.as shown in Figure 3.
Could someone please tell me how to modify the code to fix these problems?, is it correct to perform an FFT on the overall magnetization of the combined structure?
Thanke you in advance for your help!
CRSBR.pngYIG.pngCRSBR_YIG.png
%%%CODE%%
//////// Structure parameters //////////////////
SetGridsize(50, 50, 43)
SetCellsize(5e-9, 5e-9, 5e-9)
setPBC(1,1,0)
a := cuboid(1000e-9, 1000e-9, 1200e-9).transl(0, 0, 0)
setgeom(a)
saveas(geom, "logicAdd")
for i:=0; i<33; i++ {
    DefRegion(i+1, layer(i+10))
}
Ms_AF  := 2.05e5  
Aex_AF := 0.87e-12
alpha_AF := 5e-3
Ms_YIG  := 1.4e5
Aex_YIG := 3.7e-12
alpha_YIG := 5e-4

Msat = 0
Aex  = 0
alpha = 0
// YIG:region 0
Msat.SetRegion(0, Ms_YIG)
Aex.SetRegion(0, Aex_YIG)
alpha.SetRegion(0, alpha_YIG)
// AFM:regions 1..201
for i:=1; i<=33; i++ {
    Msat.SetRegion(i, Ms_AF)
    Aex.SetRegion(i, Aex_AF)
    alpha.SetRegion(i, alpha_AF)
}

anisU.SetRegion(0, vector(0, 0, 0))
K1 := 2.85e4
u1 := ConstVector(0, 1, 0)
K3 := -1.0e5
u3 := ConstVector(0, 0, 1)
prefactor1 := Const( (2 * K1) / Ms_AF )
prefactor3 := Const( (2 * K3) / Ms_AF )
MyAnis1 := Mul(prefactor1, Mul( Dot(u1, m), u1))
MyAnis3 := Mul(prefactor3, Mul( Dot(u3, m), u3))
shapeAFM := layer(10)
for iz:=11; iz<43; iz++ {
    shapeAFM = shapeAFM.Add(layer(iz))
}
m_AFM := Masked(m, shapeAFM)
shapeYIG := shapeAFM.Inverse()
m_YIG := Masked(m, shapeYIG)
MyAnis1_AF := Masked(MyAnis1, shapeAFM)
MyAnis3_AF := Masked(MyAnis3, shapeAFM)

AddFieldTerm(MyAnis1_AF)
AddFieldTerm(MyAnis3_AF)
for i:=1; i<=32; i++ {
    ext_InterExchange(i, i+1, -0.45e-12)
}
for i:=1; i<=33; i++ {
    if mod(i, 2) == 0.0 {
        m.SetRegion(i, uniform(0.01*rand(), 1, 0))
    } else {
        m.SetRegion(i, uniform(-0.01*rand(), -1, 0))
    }
}
m.SetRegion(0, uniform(-0.01*rand(), -1, 0))

RandomMagSeed(1)

//Temp = 24
save(geom)
save(m)
save(regions)
a1:=0
TableAdd(B_ext)
TableAddVar(a1, "step", "T")
TableAdd(m_YIG)  
TableAdd(m_AFM)  

// (FMR)
Bstep :=0.01
Amp := 0.001
t0 := 1e-10
f := 100e+9
w := 2*pi*f

nstep := 80
for i:=0; i<=nstep; i++ {
a1=i+1
B_bias:=0+Bstep*i
    B_ext = vector(B_bias*0, B_bias, 0)
    print(B_ext)
    TableAutoSave(0)
    RandomMagSeed(1)
    relax()
    Minimize()
    run(2e-9)
    //Minimize()
    B_ext = vector(0, B_bias + Amp*sin(w*(t - t0))/(w*(t - t0)), 0)
    //FixDt = 5e-13
    TableAutoSave(5e-12)
    run(8e-9)  
    //FixDt = 0
}
Reply all
Reply to author
Forward
0 new messages