/***************************************************************** Description: This mumax3 script computes the threshold current to get a skyrmion through a VCMA gate. This file is written for the mumax3 workshop organised for the spintronic seminar series in the summer of 2020. For more information go to https://www.mumax.ugent.be/mumax3-workshop Authors: Dr. Jonathan Leliaert (jonathan.leliaert@ugent.be) Dr. Jeroen Mulkers (jeroen.mulkers@ugent.be) ******************************************************************/ // Set the grid properties setgridsize(128,64,1) setcellsize(1e-9,1e-9,1e-9) setpbc(4,0,0) // Given material parameters Msat = 580e3 Aex = 15e-12 Dind = 3.0e-3 Ku1 = 0.8e6 AnisU = vector(0,0,1) alpha = 0.1 Pol = 0.4 xi = 0.2 // Relax a skyrmion and save this state (we will need this later) m = neelskyrmion(-1, 1).transl(-40e-9,0,0) minimize() saveas(m,"../m0") flush() // Switch on the VCMA in the center (5% increase of Ku1) defRegion(1,rect(50e-9,inf)) Ku1.setRegion(1, 1.05*Ku1.GetRegion(0)) cutofftime := 1e-8 // Start with a high current density for which the skyrmion will get through the gate // Restart with a slightly lower current density until the skyrmion does not get through for jx:=2e12; jx>0; jx-=1e11 { j = vector(-jx,0,0) print("Set current density:", jx, "A/m2") m.loadfile("m0.ovf") // reset m to the initial state t = 0 // reset the time // run until skyrmion passes x=0 or time exceeds the cut-off time runwhile( ext_bubblepos.Get().X()<0 && t 0 ) { print("Skyrmion got through after", t*1e9 ,"ns") } else { print("Skyrmion didn't get through!") exit() } // adjust cut-off time cutofftime = 2*t }