Skip to content

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

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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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