-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Hello, I spotted following issue during preparation of simulations on 1.1.0. Later I replicated this issue on 1.1.2.
Here's MWE (this code follows the example on magnetoelastics):
cx, cy, cz = 5e-9, 5e-9, 20e-9
sx, sy, sz = 240e-9, 240e-9, 20e-9
nx, ny, nz = int(round(sx / cx)) + 1, int(round(sy / cy)) + 1, int(round(sz / cz))
time: float = 2.5e-9
steps: int = 250
dt = time / steps
circle_shape = mumaxplus.util.Cylinder(sx, sz)
circle_shape = circle_shape.translate(sx / 2, sy / 2, 0)
cellsize = (cx, cy, cz)
grid = Grid((nx, ny, nz))
world = World(cellsize)
magnet = Ferromagnet(world, grid, geometry=circle_shape)
magnet.msat = 4.9e5
magnet.aex = 8e-12
magnet.alpha = 0
magnet.ku1 = 0
magnet.anisU = (0, 0, 1)
magnet.magnetization = (1, 0, 0)
magnet.enable_elastodynamics = True
magnet.rho = 8.9e3
magnet.B1 = -3.4e6
magnet.B2 = -1e6
magnet.C11 = 246e9
magnet.C44 = 124e9
magnet.C12 = 147e9
magnet.eta = 1e10
magnet.elastic_displacement = (0, 0, 0)
world.minimize()
parameter_array = np.zeros((steps + 1, 3, 3, *magnet.geometry.shape)) # step, parameter, direction, Z, Y, X
from tqdm import tqdm
print("running...")
for i in tqdm(range(1, steps + 1)):
parameter_array[i, 0] = magnet.full_magnetization.eval()
parameter_array[i, 1] = magnet.elastic_displacement.eval()
parameter_array[i, 2] = magnet.elastic_velocity.eval()
world.timesolver.run(dt)
It seems there occurs a generation and amplification of elastics waves -- it's especially destructive in case of curved shapes -- in the case of cx (cy)=2nm, simulation silently becomes malformed (eval()s saved into parameter_array consist only of 0s). Below are snapshots of magnetization and elastic velocity for t=0.26ns (colors depict direction and magnitude):
On magnetization snapshot ripples can be seen, meanwhile elastic velocity has giant values in diagonal regions (up to ~1.8e3) while center remain at <10.
Same effect happens for bigger cx (cy), for 5nm it occurs at ~0.49ns, 10nm -> ~1ns, 20nm -> ~0.89ns.
I suspect that the presence of gaps of non-magnetic medium plays crucial role in this effect -- Cuboid remains stable in much longer timescale (for 5nm it's up to ~3.8ns), but even in such case there are elastic waves generated. Moreover speed of the simulation is elevated -- it takes larger number of steps to drop below 1it/s.
Am I missing something? How can I make magnetoelastics work correctly?