Spin Torque Standard Problem

The script implements a standard problem inlcuding spin transfer torque as proposed by Najafi et al. A square shaped sample with the material parameters of permalloy is relaxed in a vortex state. Then a spin polarized current is applied which results in an exitation of the vortex.

Code

from magnum import *

# Define a world made of permalloy
world = World(
  RectangularMesh((100, 100, 1), (1e-9, 1e-9, 10e-9)), 
  Body("all", Material.Py(xi=0.05,P=1.0, alpha=0.1)))

# Initialize Simulation: Set the magnetization to a predefined state
# with a vortex and relax
solver = create_solver(world, [StrayField, ExchangeField], log=True)
solver.state.M = vortex.magnetizationFunction(
    core_x=50e-9, core_y=50e-9, polarization=1, core_radius=10e-9)    
solver.state.alpha = 0.3
solver.relax()

# save relaxed state for the next step
mag = solver.state.M


# Continue the simulation with the relaxed state and apply
# a DC current
solver = create_solver(world, 
    [StrayField, ExchangeField, SpinTorque, AlternatingCurrent], log=True)
solver.state.M = mag
solver.state.j_offs = (1e12, 0, 0)

# Create step handler that finds and saves the position of the
# vortex as well
odt = DataTableLog("sp5v02.odt")
odt.addColumn(
    ("Vx", "Vortexcore X-pos.", "m"), ("Vy", "Vortexcore Y-pos.", "m"), 
    lambda s: vortex.findCore(solver, 50e-9, 50e-9, "all"))
vtkh = VTKStorage("./", "M")

# Add the step handlers
solver.addStepHandler(odt, condition.EveryNthStep(100))
solver.addStepHandler(vtkh, condition.EveryNthStep(1000))

# Simulate for 10 ns
solver.solve(condition.Time(10e-9))

Results

As described in the paper of Najafi et al. the equilibrium position of the vortex core changes due to the direct spin-polarized current. Since the current is switched on instantaniously the vortex core performs a damped gyration around the new equilibrium position.

The time evolution of the magnetization rendered with ParaView

Time Evolution The contents of the odt file plotted with gnuplot

References