# MIF 2.1 # # All units are SI. # # This file must be a valid Tcl script. # # Initialize random number generators with seed=1 RandomSeed 1 set pi [expr {4*atan(1.0)}] set mu0 [expr {4*$pi*1e-7}] set PermalloyMs 800e3 set PermalloyK1 0 Specify Oxs_ImageAtlas:atlas0 { xrange {0 100e-9} yrange {0 0.3e-6} zrange {0e-9 5e-9} viewplane yz image p6.ppm colormap { red top0 white vacuum0 blue bottom0 } } Specify Oxs_ImageAtlas:atlas1 { xrange {0 100e-9} yrange {0.3e-6 0.4e-6} zrange {0e-9 5e-9} viewplane yz image p6.ppm colormap { red top1 white vacuum1 blue bottom2 } } Specify Oxs_ImageAtlas:atlas2 { xrange {0 100e-9} yrange {0.4e-6 0.5e-6} zrange {0e-9 5e-9} viewplane yz image p6.ppm colormap { red top4 white vacuum2 blue bottom5 } } Specify Oxs_ImageAtlas:atlas3 { xrange {0 100e-9} yrange {0.5e-6 3e-6} zrange {0e-9 5e-9} viewplane yz image p6.ppm colormap { red top7 white vacuum3 blue bottom8 } } Specify Oxs_ImageAtlas:atlas4 { xrange {0 100e-9} yrange {3e-6 3.3e-6} zrange {0e-9 5e-9} viewplane yz image p6.ppm colormap { red top41 white vacuum42 blue bottom43 } } Specify Oxs_MultiAtlas:atlas { atlas atlas0 atlas atlas1 atlas atlas2 atlas atlas3 atlas atlas4 } Specify Oxs_RectangularMesh:mesh { cellsize {5e-9 5e-9 1e-9} atlas :atlas } Specify Oxs_Exchange6Ngbr { atlas :atlas default_A 1.3e-11 A { vacuum0 vacuum0 0 vacuum1 vacuum1 0 vacuum2 vacuum2 0 vacuum3 vacuum3 0 vacuum42 vacuum42 0 vacuum0 vacuum1 0 vacuum1 vacuum2 0 vacuum2 vacuum3 0 vacuum3 vacuum42 0 } } Specify Oxs_UniaxialAnisotropy { K1 { Oxs_AtlasScalarField { atlas :atlas default_value 1e-5 values { top0 1e-5 top1 1e-5 top4 1e-5 top7 1e-5 top41 1e-5 bottom0 1e-5 bottom2 1e-5 bottom5 1e-5 bottom8 1e-5 bottom43 1e-5 vacuum0 0 vacuum1 0 vacuum2 0 vacuum3 0 vacuum42 0 } }} axis { Oxs_AtlasVectorField { atlas :atlas values { top0 {1 0 0} top1 {1 0 0} top4 {1 0 0} top7 {1 0 0} top41 {1 0 0} bottom0 {1 0 0} bottom2 {1 0 0} bottom5 {1 0 0} bottom8 {1 0 0} bottom43 {1 0 0} vacuum0 { 0 0 1} vacuum1 { 0 0 1} vacuum2 { 0 0 1} vacuum3 { 0 0 1} vacuum42 { 0 0 1} } norm 1.0 }} } Specify Oxs_UZeeman:AppliedField [subst { multiplier [expr {0.001/$mu0}] Hrange { {0 0 0 0 6 0 1} } }] # Enable demagnetization (self-magnetostatic) field # computation. This block takes no parameters. Specify Oxs_Demag:name { asymptotic_radius 16 } # Runge-Kutta-Fehlberg ODE solver, with default parameter values. Specify Oxs_RungeKuttaEvolve { alpha 0.02 fixed_spins { atlas top0 vacuum0 bottom0 top41 bottom43 vacuum42 } } Specify Oxs_TimeDriver { basename 212_60Oe evolver Oxs_RungeKuttaEvolve stopping_dm_dt 0.01 mesh :mesh Ms { Oxs_AtlasScalarField { atlas :atlas default_value 800e3 values { top0 800e3 top1 800e3 top4 800e3 top7 800e3 top41 800e3 bottom0 800e3 bottom2 800e3 bottom5 800e3 bottom8 800e3 bottom43 800e3 vacuum0 0 vacuum1 0 vacuum2 0 vacuum3 0 vacuum42 0 } }} m0 { Oxs_AtlasVectorField { atlas :atlas values { top0 {0 1 0} top1 {0 1 0} top4 {1 0 0} top7 {0 -1 0} top41 {0 -1 0} bottom0 {0 1 0} bottom2 {0 1 0} bottom5 {-1 0 0} bottom8 {0 -1 0} bottom43 {0 -1 0} vacuum0 { 0 0 1} vacuum1 { 0 0 1} vacuum2 { 0 0 1} vacuum3 { 0 0 1} vacuum42 { 0 0 1} } norm 1.0 }} } # Default outputs Destination hystgraph mmGraph:Hysteresis Destination monitor mmGraph Destination archive mmArchive Schedule DataTable hystgraph Stage 1 Schedule DataTable monitor Step 25 Schedule DataTable archive Stage 1 Schedule Oxs_TimeDriver::Magnetization archive Stage 3 Schedule "Oxs_RungeKuttaEvolve::Total field" archive Stage 3