Skip to content

Spontaneous generation of elastic velocity waves leading to zeroing parameters during the course of simulation #125

@kbrzusz

Description

@kbrzusz

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):

Image Image

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?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions