I'm trying to develop custom induced DMI with different constants along x and y axis to simulate elliptic skyrmion or antiskyrmion. I've modified custom_exchange.mx3 example. Can anybody help to find a mistake because the result of simulation with equal iDMIx == iDMIy differs from the built-in Dind. Here is the listing.
cellsizeX:=2e-9
cellsizeY:=2e-9
cellsizeZ:=8e-9
setgridsize(512, 512, 1)
setcellsize(cellsizeX,cellsizeY, cellsizeZ)
Aex = 5e-12
Ku1 = 3.1e4
AnisU = vector(0,0,1)
alpha = 1
Msat = 200e3
m = BlochSkyrmion(1,-1).scale(7,7,1)
// Dind = 135e-6
iDMIx := 135e-6
iDMIy := 170e-6
prefactorX := Const( (-1 * iDMIx) / (cellsizeX*Msat.Average()))
prefactorY := Const( (-1 * iDMIy) / (cellsizeY*Msat.Average()))
overx := Mul(prefactorX, Cross( constVector(0,1,0) , Add(Shifted(m, 1,0,0), Mul(Const(-1), Shifted(m, -1,0,0))) ) )
overy := Mul(prefactorY, Cross( constVector(-1,0,0) , Add(Shifted(m, 0,1,0), Mul(Const(-1), Shifted(m, 0,-1,0))) ) )
AnisDMI := Add( overx, overy )
AddFieldTerm(AnisDMI)
addEdensTerm(Mul(Const(-0.5),Dot(AnisDMI,M_full)))
MinimizerStop = 5e-5
Minimize()
OutputFormat = OVF1_TEXT
Save(m)