Hysteresis loop under stress/strain

309 views
Skip to first unread message

TuanG

unread,
Sep 6, 2023, 2:35:48 AM9/6/23
to mumax2
Dear all,

I have already installed successfully the Mumax3 and Magnetoelasticity module on my computer. Hower, when I ran the hysteresis loops with various strain/stress, the results are completely the same, and the normstrain is almost zero.
My problem is to estimate the magnetoelastic energy under various stresses/strains, that is why i need hysteresis loop under stress/strain.

I am really looking forward to seeing your respond. 
TG

Ps: my scripts is given bellow. The "m_initialize.ovf" and "u_initialize.ovf" are the magnetic moment and displacement initializers, of which they were obtained with the same manuscript with m=randomMag() and u=uniform(0,0,0) with the second results after the run().
"
SetGridsize(128, 32, 1)
SetCellsize(4e-9, 4e-9, 30e-9)
setgeom(cuboid(512e-9, 128e-9, 30e-9))
saveas(geom, "cuboid")
defregion(1, cuboid(512e-9, 128e-9, 30e-9))
save(regions)

Msat  = 1068918 //ok
Aex   = 1e-11 //ok
alpha = 0.05

m.loadfile("m_initialize.ovf")
u.loadfile("u_initialize.ovf")

//Elastics  parameters
c11 = 229e9 //ok
c12 = 134e9 //ok
c44 = 47.5e9 //ok, c44=(c11_c12)/2
rho = 7.2e3 //ok
eta = 0

//Magnetoelastic parameters
B1 = -9.975e5 // ok, lamda_100=-2/3*((B1)/(c11-c12)) and  lamda_111=-1/3*((B2)/(c44)),  lamda_100= lamda_111=lamda_s=-7e6
B2 = 9.975e5

ezz = 0.3
exx = -0.15
eyy = -0.15

frozenDispLoc.setregion(1,1)
frozenDispVal.setregion(1, vector(0,0,0))
alpha.setregion(1,0.05)
c11.setregion(1,229e9)
c12.setregion(1,134e9)
c44.setregion(1,47.5e9)
ezz.setregion(1,0.3)
exx.setregion(1,-0.15)
eyy.setregion(1,-0.15)
rho.setregion(1,7.2e3)
eta.setregion(1,0)

Bmax  := 100.0e-3
Bstep :=  1.0e-3
TableAdd(B_ext)

for B:=Bmax; B>=-Bmax; B-=Bstep{
    //relax()

    B_ext = vector(B, 0, 0)
    tablesave()
save(m)
save(u)
save(normstrain)

//Solver
fixdt = 1.0e-12
//running
run(1.0e-9)
}
"
A++

Josh Lauzier

unread,
Oct 10, 2023, 1:57:04 AM10/10/23
to mumax2
Hi,

Checking your script:

When using  frozenDispVal, one needs to consider how that relates to the strain. The strain is based on the gradient of the displacement (this equation is given in the magnetoelastic module paper here: https://open-research-europe.ec.europa.eu/articles/1-35/v1 ), as strain=1/2 (∇u+ (∇u)^(T)). If apply a uniform displacement, the gradient is 0, and therefore the strain is zero. Physically, you've simply translated the entire sample together (and therefore there is no strain). Also, keep in mind the magnitude. 1 is unrealistically large for a displacement, you will probably get strange results. Typical displacements are on the order of ~1e-14 or so.

The parameter FreelayerThickness is not related to the magnetoelastic module, it's for the slonczewski torque, so I don't know why it was included.

Trying to set the strain using ezz etc will not work. I am still not totally sure why, unfortunately.

Best,
Josh L.

Reply all
Reply to author
Forward
0 new messages