Está en la página 1de 4

Nx := 2000 //cantidad de celdas en x

Ny := 2000 //cantidad de celdas en y


Nz := 4 //cantidad de celdas efectivas
setgridsize(Nx, Ny, Nz)
c := 5e-9 //tamano de celdas unitaria
setcellsize(c, c, c)
theta := 45 //angulo de aplicación del campo externo theta 0 means en x

size := 10000e-9
sq := circle(size) // square with side size, tamaño del arreglo
D := 320e-9 //Distancia entre centros de poros
dia := 80e-9 //diametro del poro
largo := 120e-9

rectangle := rect(largo, dia)


hole := cylinder(dia,dia)

hole1 := hole.transl(largo/2,0,0)
adot :=rectangle.add(hole1)
hole2 := hole.transl(-largo/2,0,0)
adot2 := adot.add(hole2)
adots := adot2.repeat(D,D,0)

adots2 :=adots.sub(adot2.transl(-4*D,15*D,0))
adots3 :=adots2.sub(adot2.transl(4*D,15*D,0))
adots4 :=adots3.sub(adot2.transl(-7*D,14*D,0))
adots5 :=adots4.sub(adot2.transl(7*D,14*D,0))
adots6 :=adots5.sub(adot2.transl(-9*D,13*D,0))
adots7 :=adots6.sub(adot2.transl(9*D,13*D,0))
adots8 :=adots7.sub(adot2.transl(-10*D,12*D,0))
adots9 :=adots8.sub(adot2.transl(10*D,12*D,0))
adots10 :=adots9.sub(adot2.transl(-11*D,11*D,0))
adots11 :=adots10.sub(adot2.transl(11*D,11*D,0))
adots12 :=adots11.sub(adot2.transl(-12*D,10*D,0))
adots13 :=adots12.sub(adot2.transl(12*D,10*D,0))
adots14 :=adots13.sub(adot2.transl(-13*D,9*D,0))
adots15 :=adots14.sub(adot2.transl(13*D,9*D,0))
adots16 :=adots15.sub(adot2.transl(-14*D,7*D,0))
adots17 :=adots16.sub(adot2.transl(14*D,7*D,0))
adots18 :=adots17.sub(adot2.transl(-15*D,5*D,0))
adots19 :=adots18.sub(adot2.transl(15*D,5*D,0))
adots20 :=adots19.sub(adot2.transl(-15*D,4*D,0))
adots21 :=adots20.sub(adot2.transl(15*D,4*D,0))
adots22 :=adots21.sub(adot2.transl(-15*D,3*D,0))
adots23 :=adots22.sub(adot2.transl(15*D,3*D,0))
adots24 :=adots23.sub(adot2.transl(-4*D,-15*D,0))
adots25 :=adots24.sub(adot2.transl(4*D,-15*D,0))
adots26 :=adots25.sub(adot2.transl(-7*D,-14*D,0))
adots27 :=adots26.sub(adot2.transl(7*D,-14*D,0))
adots28 :=adots27.sub(adot2.transl(-9*D,-13*D,0))
adots29 :=adots28.sub(adot2.transl(9*D,-13*D,0))
adots30 :=adots29.sub(adot2.transl(-10*D,-12*D,0))
adots31 :=adots30.sub(adot2.transl(10*D,-12*D,0))
adots32 :=adots31.sub(adot2.transl(-11*D,-11*D,0))
adots33 :=adots32.sub(adot2.transl(11*D,-11*D,0))
adots34 :=adots33.sub(adot2.transl(-12*D,-10*D,0))
adots35 :=adots34.sub(adot2.transl(12*D,-10*D,0))
adots36 :=adots35.sub(adot2.transl(-13*D,-9*D,0))
adots37 :=adots36.sub(adot2.transl(13*D,-9*D,0))
adots38 :=adots37.sub(adot2.transl(-14*D,-7*D,0))
adots39 :=adots38.sub(adot2.transl(14*D,-7*D,0))
adots40 :=adots39.sub(adot2.transl(-15*D,-5*D,0))
adots41 :=adots40.sub(adot2.transl(15*D,-5*D,0))
adots42 :=adots41.sub(adot2.transl(-15*D,-4*D,0))
adots43 :=adots42.sub(adot2.transl(15*D,-4*D,0))
adots44 :=adots43.sub(adot2.transl(-15*D,-3*D,0))
adots45 :=adots44.sub(adot2.transl(15*D,-3*D,0))
adots46 :=adots45.sub(adot2.transl(-3*D,15*D,0))
adots47 :=adots46.sub(adot2.transl(3*D,15*D,0))
adots48 :=adots47.sub(adot2.transl(-3*D,-15*D,0))
adots49 :=adots48.sub(adot2.transl(3*D,-15*D,0))
adots50 :=adots49.sub(adot2.transl(-6*D,14*D,0))
adots51 :=adots50.sub(adot2.transl(6*D,14*D,0))
adots52 :=adots51.sub(adot2.transl(-6*D,-14*D,0))
adots53 :=adots52.sub(adot2.transl(6*D,-14*D,0))
adots54 :=adots53.sub(adot2.transl(-8*D,13*D,0))
adots55 :=adots54.sub(adot2.transl(8*D,13*D,0))
adots56 :=adots55.sub(adot2.transl(-8*D,-13*D,0))
adots57 :=adots56.sub(adot2.transl(8*D,-13*D,0))
adots58 :=adots57.sub(adot2.transl(-13*D,8*D,0))
adots59 :=adots58.sub(adot2.transl(13*D,8*D,0))
adots60 :=adots59.sub(adot2.transl(-13*D,-8*D,0))
adots61 :=adots60.sub(adot2.transl(13*D,-8*D,0))
adots62 :=adots61.sub(adot2.transl(-14*D,6*D,0))
adots63 :=adots62.sub(adot2.transl(14*D,6*D,0))
adots64 :=adots63.sub(adot2.transl(-14*D,-6*D,0))
adots65 :=adots64.sub(adot2.transl(14*D,-6*D,0))
adots66 :=adots65.sub(adot2.transl(-15*D,3*D,0))
adots67 :=adots66.sub(adot2.transl(15*D,3*D,0))
adots68 :=adots67.sub(adot2.transl(-15*D,-3*D,0))
adots69 :=adots68.sub(adot2.transl(15*D,-3*D,0))
adots70 :=adots69.sub(adot2.transl(-3*D,15*D,0))
adots71 :=adots70.sub(adot2.transl(3*D,15*D,0))
adots72 :=adots71.sub(adot2.transl(-2*D,15*D,0))
adots73 :=adots72.sub(adot2.transl(2*D,15*D,0))
adots74 :=adots73.sub(adot2.transl(1*D,15*D,0))
adots75 :=adots74.sub(adot2.transl(-1*D,15*D,0))
adots76 :=adots75.sub(adot2.transl(0*D,15*D,0))
adots77 :=adots76.sub(adot2.transl(-3*D,-15*D,0))
adots78 :=adots77.sub(adot2.transl(3*D,-15*D,0))
adots79 :=adots78.sub(adot2.transl(-2*D,-15*D,0))
adots80 :=adots79.sub(adot2.transl(2*D,-15*D,0))
adots81 :=adots80.sub(adot2.transl(1*D,-15*D,0))
adots82 :=adots81.sub(adot2.transl(-1*D,-15*D,0))
adots83 :=adots82.sub(adot2.transl(0*D,-15*D,0))
adots84 :=adots83.sub(adot2.transl(5*D,14*D,0))
adots85 :=adots84.sub(adot2.transl(5*D,-14*D,0))
adots86 :=adots85.sub(adot2.transl(-5*D,14*D,0))
adots87 :=adots86.sub(adot2.transl(-5*D,-14*D,0))
adots88 :=adots87.sub(adot2.transl(14*D,5*D,0))
adots89 :=adots88.sub(adot2.transl(-14*D,5*D,0))
adots90 :=adots89.sub(adot2.transl(14*D,-5*D,0))
adots91 :=adots90.sub(adot2.transl(-14*D,-5*D,0))
adots92 :=adots91.sub(adot2.transl(-15*D,0*D,0))
adots93 :=adots92.sub(adot2.transl(15*D,0*D,0))
adots94 :=adots93.sub(adot2.transl(-15*D,1*D,0))
adots95 :=adots94.sub(adot2.transl(15*D,1*D,0))
adots96 :=adots95.sub(adot2.transl(15*D,2*D,0))
adots97 :=adots96.sub(adot2.transl(-15*D,2*D,0))
adots98 :=adots97.sub(adot2.transl(15*D,-1*D,0))
adots99 :=adots98.sub(adot2.transl(-15*D,-1*D,0))
adots100 :=adots99.sub(adot2.transl(15*D,-2*D,0))
adots101 :=adots100.sub(adot2.transl(-15*D,-2*D,0))
adots102 :=adots101.sub(adot2.transl(13*D,7*D,0))
adots103 :=adots102.sub(adot2.transl(12*D,9*D,0))
adots104 :=adots103.sub(adot2.transl(11*D,10*D,0))
adots105 :=adots104.sub(adot2.transl(9*D,12*D,0))
adots106 :=adots105.sub(adot2.transl(7*D,13*D,0))
adots107 :=adots106.sub(adot2.transl(10*D,11*D,0))
adots108 :=adots107.sub(adot2.transl(7*D,13*D,0))
adots109 :=adots108.sub(adot2.transl(7*D,-13*D,0))
adots110 :=adots109.sub(adot2.transl(9*D,-12*D,0))
adots111 :=adots110.sub(adot2.transl(10*D,-11*D,0))
adots112 :=adots111.sub(adot2.transl(11*D,-10*D,0))
adots113 :=adots112.sub(adot2.transl(12*D,-9*D,0))
adots114 :=adots113.sub(adot2.transl(13*D,-7*D,0))
adots115 :=adots114.sub(adot2.transl(-7*D,-13*D,0))
adots116 :=adots115.sub(adot2.transl(-9*D,-12*D,0))
adots117 :=adots116.sub(adot2.transl(-10*D,-11*D,0))
adots118 :=adots117.sub(adot2.transl(-11*D,-10*D,0))
adots119 :=adots118.sub(adot2.transl(-12*D,-9*D,0))
adots120 :=adots119.sub(adot2.transl(-13*D,-7*D,0))
adots121 :=adots120.sub(adot2.transl(-7*D,13*D,0))
adots122 :=adots121.sub(adot2.transl(-9*D,12*D,0))
adots123 :=adots122.sub(adot2.transl(-10*D,11*D,0))
adots124 :=adots123.sub(adot2.transl(-11*D,10*D,0))
adots125 :=adots124.sub(adot2.transl(-12*D,9*D,0))
adots126 :=adots125.sub(adot2.transl(-13*D,7*D,0))
adots127 :=adots126.sub(adot2.transl(14*D,4*D,0))
adots128 :=adots127.sub(adot2.transl(14*D,-4*D,0))
adots129 :=adots128.sub(adot2.transl(-14*D,4*D,0))
adots130 :=adots129.sub(adot2.transl(-14*D,-4*D,0))

adotfib:= sq.sub(adots130)// subtract the circles from the square (makes holes).

setgeom(adotfib)

saveas(geom, "adotfib")

//EdgeSmooth = 8

//setgeom(a.repeat(10e-9,10e-9,0))

//saveas(geom, "test")
Msat = 0.813e6 //A/m Permalloy
Aex = 10.7e-12 //J/m
//Ku1 = 0.0027e5 //A/m

//anisU.setRegion(0, vector(1, 1, 1))anisU.setRegion(0, vector(1, 1, 1))

//anisU.setRegion(2, vector(0, 0, 1))


//m.setRegion(1, uniform(0, 0, 1))
//m.setRegion(2, uniform(0, 0, 1))
m=randomMag()
relax()
save(m)
alpha = 0.5
//Bmax := 0.5 //Campo en mTesla
//Bstep := 5e-3 //pasos de 100 Oe

TableAdd(B_ext)

TableAdd(B_demag)
//TableAdd(E_demag)
//TableAdd(E_exch)
save(m)

Bmax := 50.0e-3
Bstep := 1.0e-3
//MinimizerStop = 1e-6
TableAdd(B_ext)

for B:=Bmax; B>=-Bmax; B-=Bstep{


B_ext = vector( B*cos(theta*pi/180),B*sin(theta*pi/180), 0)
minimize() // small changes best minimized by minimize()
tablesave()
save(m)
}

//for B:=-Bmax; B<=Bmax; B+=Bstep{


// B_ext = vector(B*cos(theta*pi/180), B*sin(theta*pi/180), 0)
//minimize() // small changes best minimized by minimize()
//tablesave()
//}

También podría gustarte