From 097bed0257da645ff0b03d467a6ed9383b78b17e Mon Sep 17 00:00:00 2001 From: Xuanyao Fong Date: Thu, 7 Apr 2022 14:40:25 +0800 Subject: [PATCH] cleanup round 2 added doc --- doc/Makefile | 22 + doc/README | 3 + doc/apigen.go | 262 ++ doc/make.go | 246 ++ doc/mask.png | Bin 0 -> 2552 bytes doc/myfile.ovf | Bin 0 -> 49642 bytes doc/static/api39c.html | 3751 ++++++++++++++++++++++++ doc/static/gpus.svg | 822 ++++++ doc/static/mfm.svg | 277 ++ doc/static/nimble-cubes128-xmas.png | Bin 0 -> 13922 bytes doc/static/nimble-cubes128.png | Bin 0 -> 29390 bytes doc/static/style.css | 101 + doc/static/web1.png | Bin 0 -> 141331 bytes doc/static/web2.png | Bin 0 -> 67175 bytes doc/templates/api-template.html | 636 ++++ doc/templates/download-template.html | 34 + doc/templates/examples-template.html | 701 +++++ doc/templates/head.html | 17 + doc/templates/header.html | 16 + doc/templates/headerpage-template.html | 7 + doc/templates/index-template.html | 105 + doc/tex/.gitignore | 2 + doc/tex/Makefile | 7 + doc/tex/umagnus.tex | 79 + test/fixedlayer.mif | 4 +- 25 files changed, 7090 insertions(+), 2 deletions(-) create mode 100644 doc/Makefile create mode 100644 doc/README create mode 100644 doc/apigen.go create mode 100644 doc/make.go create mode 100644 doc/mask.png create mode 100644 doc/myfile.ovf create mode 100644 doc/static/api39c.html create mode 100644 doc/static/gpus.svg create mode 100644 doc/static/mfm.svg create mode 100644 doc/static/nimble-cubes128-xmas.png create mode 100644 doc/static/nimble-cubes128.png create mode 100644 doc/static/style.css create mode 100644 doc/static/web1.png create mode 100644 doc/static/web2.png create mode 100644 doc/templates/api-template.html create mode 100644 doc/templates/download-template.html create mode 100644 doc/templates/examples-template.html create mode 100644 doc/templates/head.html create mode 100644 doc/templates/header.html create mode 100644 doc/templates/headerpage-template.html create mode 100644 doc/templates/index-template.html create mode 100644 doc/tex/.gitignore create mode 100644 doc/tex/Makefile create mode 100644 doc/tex/umagnus.tex diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..1091375 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,22 @@ +BUILDDIR="build" +STATIC="static" + +# build the html pages in ${BUILDDIR} +.PHONY: html +html: doc uMagNUSlibs + mkdir -p ${BUILDDIR} + ./doc -examples -builddir ${BUILDDIR} + cp ${STATIC}/* build + +.PHONY: doc +doc: + go build -v + +.PHONY: mumax3libs +uMagNUSlibs: + $(MAKE) -C $(GOPATH)/src/github.com/seeder-research/uMagNUS uMagNUS + +.PHONY: clean +clean: + rm -rf build + rm -f doc diff --git a/doc/README b/doc/README new file mode 100644 index 0000000..999c436 --- /dev/null +++ b/doc/README @@ -0,0 +1,3 @@ +This directory contains everything needed to build the uMagNUS website (Home page, API, and examples) + +"make html" builds the complete website in ${BUILDDIR}. diff --git a/doc/apigen.go b/doc/apigen.go new file mode 100644 index 0000000..e846789 --- /dev/null +++ b/doc/apigen.go @@ -0,0 +1,262 @@ +// Automatic generation of api.html based on template. +package main + +import ( + "io/ioutil" + "os" + "os/exec" + "path" + "reflect" + "sort" + "strings" + "text/template" + "unicode" + + opencl "github.com/seeder-research/uMagNUS/opencl" + engine "github.com/seeder-research/uMagNUS/engine" +) + +var ( + api_entries entries + api_ident = make(map[string]entry) +) + +type entry struct { + name string + Type reflect.Type + Doc string + touched bool +} + +func buildAPI() { + opencl.Init(0) // gpu 0 + + ident := engine.World.Identifiers + doc := engine.World.Doc + e := make(entries, 0, len(ident)) + for K, v := range doc { + if v == "" { // check if we a docstring in the documantation of the Math package + v = getGoDocString("math", K) + } + k := strings.ToLower(K) + t := ident[k].Type() + entr := entry{K, t, v, false} + e = append(e, &entr) + api_ident[k] = entr + } + sort.Sort(&e) + api_entries = e +} + +func getGoDocString(packageName, identifier string) string { + docString := "" + cmd := exec.Command("go", "doc", packageName, identifier) + stdout, err := cmd.Output() + outputLines := strings.Split(string(stdout), "\n") + if err == nil && outputLines[2][:4] == "func" { // we only look for doc strings of functions + // the doc string of a function is on the fourth line + // (and possible continued on the fifth line, if not, then the fifth line is empty) + docString = strings.Join(outputLines[3:5], " ") + } + return docString +} + +func (e *entry) Name() string { + return e.name +} + +// input parameters +func (e *entry) Ins() string { + t := e.Type.String() + if strings.HasPrefix(t, "func(") { + return cleanType(t[len("func"):]) + } else { + return "" + } +} + +// dumbed-down type +func cleanType(typ string) string { + typ = strings.Replace(typ, "engine.", "", -1) + typ = strings.Replace(typ, "*data.", "", -1) + typ = strings.Replace(typ, "script.", "", -1) + return typ +} + +func (e *entry) Methods() []string { + t := e.Type + // if it's a function, we list the methods on the output type + if t.Kind() == reflect.Func && t.NumOut() == 1 { + t = t.Out(0) + } + nm := t.NumMethod() + M := make([]string, 0, nm) + for i := 0; i < nm; i++ { + m := t.Method(i) + n := m.Name + if unicode.IsUpper(rune(n[0])) && !hidden(n) { + var args string + for i := 1; i < m.Type.NumIn(); i++ { + args += cleanType(m.Type.In(i).String()) + " " + } + M = append(M, n+"( "+args+")") + } + } + return M +} + +// return value +func (e *entry) Ret() string { + t := e.Type + if t.Kind() == reflect.Func && t.NumOut() == 1 { + return cleanType(t.Out(0).String()) + } else { + return "" + } +} + +// hidden methods +func hidden(name string) bool { + switch name { + default: + return false + case "Eval", "InputType", "Type", "Slice", "Name", "Unit", "NComp", "Mesh", "SetValue", "String": + return true + } +} + +// list of examples where entry is used. +func (e *entry) Examples() []int { + return api_examples[strings.ToLower(e.name)] +} + +type api struct { + Entries entries +} + +// include file +func (e *api) Include(fname string) string { + b, err := ioutil.ReadFile(path.Join(templateDir, fname)) + check(err) + return string(b) +} + +// list of entries not used so far +func (a *api) remaining() []*entry { + var E []*entry + for _, e := range a.Entries { + if !e.touched { + E = append(E, e) + } + } + return E +} + +// list of all entries (touched and not touched) +func (a *api) All() []*entry { + var E []*entry + for _, e := range a.Entries { + E = append(E, e) + } + return E +} + +// return all entries, unused so far, which have given type. +func (a *api) FilterType(typ ...string) []*entry { + var E []*entry + for _, e := range a.Entries { + for _, t := range typ { + if match(t, e.Type.String()) && + !strings.HasPrefix(e.name, "ext_") { + e.touched = true + E = append(E, e) + } + } + } + return E +} + +// return all entries, unused so far, which have given return type. +func (a *api) FilterReturn(typ ...string) []*entry { + var E []*entry + for _, e := range a.Entries { + for _, t := range typ { + if match(t, e.Ret()) && + !strings.HasPrefix(e.name, "ext_") { + e.touched = true + E = append(E, e) + } + } + } + return E +} + +// return all entries, unused so far, which have given name. +func (a *api) FilterName(typ ...string) []*entry { + var E []*entry + for _, e := range a.Entries { + for _, t := range typ { + if match(t, e.name) && + !strings.HasPrefix(e.name, "ext_") { + e.touched = true + E = append(E, e) + } + } + } + return E +} + +// return all entries, unused so far, whose name starts with prefix. +func (a *api) FilterPrefix(pre string) []*entry { + var E []*entry + for _, e := range a.Entries { + if strings.HasPrefix(e.name, pre) { + e.touched = true + E = append(E, e) + } + } + return E +} + +// return all entries not yet used. +func (a *api) FilterLeftovers() []*entry { + return a.remaining() +} + +// case insensitive match. +func match(a, b string) bool { + a = strings.ToLower(a) + b = strings.ToLower(b) + match := a == b + return match +} + +func renderAPI() { + e := api_entries + t := template.Must(template.New("api").Parse(templ)) + f, err2 := os.OpenFile(path.Join(buildDir, "api.html"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) + check(err2) + check(t.Execute(f, &api{e})) +} + +var templ = read(path.Join(templateDir, "api-template.html")) + +func read(fname string) string { + b, err := ioutil.ReadFile(fname) + check(err) + return string(b) +} + +type entries []*entry + +func (e *entries) Len() int { + return len(*e) +} + +func (e *entries) Less(i, j int) bool { + return strings.ToLower((*e)[i].name) < strings.ToLower((*e)[j].name) +} + +func (e *entries) Swap(i, j int) { + (*e)[i], (*e)[j] = (*e)[j], (*e)[i] +} diff --git a/doc/make.go b/doc/make.go new file mode 100644 index 0000000..2db18c1 --- /dev/null +++ b/doc/make.go @@ -0,0 +1,246 @@ +package main + +import ( + "flag" + "fmt" + "io/ioutil" + "log" + "os" + "os/exec" + "path" + "regexp" + "sort" + "strings" + "text/template" +) + +var flag_vet = flag.Bool("vet", false, "only vet source files, don't run them") +var flag_examples = flag.Bool("examples", false, "run mumax3 examples") +var flag_forced = flag.Bool("forced", false, "force to re-run mumax3 examples") +var flag_builddir = flag.String("builddir", "build", "build directory") + +var buildDir string + +const templateDir = "templates" + +func main() { + + flag.Parse() + buildDir = *flag_builddir + "/" + + buildAPI() + + // read template + b, err := ioutil.ReadFile(path.Join(templateDir, "examples-template.html")) + check(err) + replaceInRaw(b, '\n', '@') // hack to allow raw strings spanning multi lines + templ := template.Must(template.New("guide").Parse(string(b))) + + // output file + f, err2 := os.OpenFile(path.Join(buildDir, "examples.html"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) + check(err2) + + // execute! + if *flag_examples { + state := &State{} + check(templ.Execute(f, state)) + } + + renderAPI() + + createIndexPage() + createDownloadPage() + createHeaderPage() +} + +func createIndexPage() { + b, err := ioutil.ReadFile(path.Join(templateDir, "index-template.html")) + replaceInRaw(b, '\n', '@') // hack to allow raw strings spanning multi lines + check(err) + templ := template.Must(template.New("guid").Parse(string(b))) + f, err2 := os.OpenFile(path.Join(buildDir, "index.html"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) + check(err2) + state := &State{} + check(templ.Execute(f, state)) +} + +func createDownloadPage() { + b, err := ioutil.ReadFile(path.Join(templateDir, "download-template.html")) + replaceInRaw(b, '\n', '@') // hack to allow raw strings spanning multi lines + check(err) + templ := template.Must(template.New("download").Parse(string(b))) + f, err2 := os.OpenFile(path.Join(buildDir, "download.html"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) + check(err2) + state := &State{} + check(templ.Execute(f, state)) +} + +func createHeaderPage() { + b, err := ioutil.ReadFile(path.Join(templateDir, "headerpage-template.html")) + replaceInRaw(b, '\n', '@') // hack to allow raw strings spanning multi lines + check(err) + templ := template.Must(template.New("headerpage").Parse(string(b))) + f, err2 := os.OpenFile(path.Join(buildDir, "header.html"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666) + check(err2) + state := &State{} + check(templ.Execute(f, state)) +} + +type State struct { + count int +} + +func (s *State) Example(in string) string { + s.count++ + + // extract example source + in = strings.Replace(in, "@", "\n", -1) // undo raw string hack + in = strings.Trim(in, "\n") + + // exec input file + check(ioutil.WriteFile(s.infile(), []byte(in), 0666)) + arg := "-v" + if *flag_vet { + arg = "-vet" + } + + if _, err := os.Stat(s.outfile()); os.IsNotExist(err) || *flag_forced { + cmd("mumax3", "-cache", "/tmp", arg, s.infile()) + } + + recordExamples(in, s.count) + + return `
` + template.HTMLEscapeString(in) + `
` +} + +var api_examples = make(map[string][]int) + +func recordExamples(input string, num int) { + in := strings.ToLower(input) + for k, _ := range api_ident { + if ok, _ := regexp.MatchString(k, in); ok { + api_examples[k] = append(api_examples[k], num) + } + } +} + +func (s *State) Img(fname string) string { + cmd("mumax3-convert", "-png", "-arrows", "16", path.Join(s.outfile(), fname+".ovf")) + pngfile := path.Join(s.relativeOutfile(), fname+".png") + return fmt.Sprintf(` +
+ +
%v
+
`, pngfile, fname) +} + +func (s *State) Include(fname string) string { + b, err := ioutil.ReadFile(path.Join(templateDir, fname)) + check(err) + return string(b) +} + +func (s *State) Output() string { + out := `

output

` + + dir, err := os.Open(s.outfile()) + check(err) + files, err2 := dir.Readdirnames(-1) + check(err2) + sort.Strings(files) + for _, f := range files { + if path.Ext(f) == ".ovf" { + out += s.Img(f[:len(f)-len(".ovf")]) + } + } + out += `
` + + for _, f := range files { + if f == "table.txt" { + cmd("mumax3-plot", path.Join(s.outfile(), f)) + } + } + + dir, err = os.Open(s.outfile()) + check(err) + files, err2 = dir.Readdirnames(-1) + check(err2) + sort.Strings(files) + for _, f := range files { + if path.Ext(f) == ".svg" { + src := path.Join(s.relativeOutfile(), f) + out += fmt.Sprintf(` +
+ +
%v
+
`, src, f) + } + } + return out +} + +// State.output gives a nice otuput for all examples except for the +// hysteresis example. State.OutputHysteresis is the custom output function +// for the hysteresis example. +func (s *State) OutputHysteresis() string { + tableName := path.Join(s.outfile(), "table.txt") + figureName := path.Join(s.outfile(), "hysteresis.svg") + relFigureName := path.Join(s.relativeOutfile(), "hysteresis.svg") + + gnuplotCmd := `set term svg noenhanced size 400 300 font 'Arial,10';` + gnuplotCmd += fmt.Sprintf(`set output "%s";`, figureName) + gnuplotCmd += `set xlabel "B_ext(T)";` + gnuplotCmd += `set ylabel "m_x";` + gnuplotCmd += fmt.Sprintf(`plot "%s" u 5:2 w lp notitle;`, tableName) + gnuplotCmd += "set output;" + + gnuplotOut, err := exec.Command("gnuplot", "-e", gnuplotCmd).CombinedOutput() + os.Stderr.Write(gnuplotOut) + check(err) + + out := fmt.Sprintf(` +

output

+
+ +
`, relFigureName) + + return out +} + +func (s *State) infile() string { + return path.Join(buildDir, fmt.Sprintf("example%v.mx3", s.count)) +} + +func (s *State) outfile() string { + return path.Join(buildDir, fmt.Sprintf("example%v.out", s.count)) +} + +// Relative output directory path from the build directory +func (s *State) relativeOutfile() string { + return fmt.Sprintf("example%v.out", s.count) +} + +func cmd(cmd string, args ...string) { + out, err := exec.Command(cmd, args...).CombinedOutput() + os.Stdout.Write(out) + check(err) + +} + +func replaceInRaw(bytes []byte, old, new byte) { + inraw := false + for i, b := range bytes { + if b == '`' { + inraw = !inraw + } + if inraw && b == old { + bytes[i] = new + } + } +} + +func check(err error) { + if err != nil { + log.Panic(err) + } +} diff --git a/doc/mask.png b/doc/mask.png new file mode 100644 index 0000000000000000000000000000000000000000..9d69dc8fd11a6d656aa8d9a4273031381a6aa9ca GIT binary patch literal 2552 zcmai04K&m1ADa5@_e0)h8_s}djzRUH7O zV~{Rz=~;>0UEh=7+a5Jw zuk%Ppd(VVv0Tu7$$<^vDVn+tMj~?WZO9tJ4={GjRn?Kl(#L<0eb8K3^(*@ z-3Po$@S5L=*JbLRT=cqLI{%^iSkf=-Of*fSm)gz$`f&f|L{e~c^6=!xUHm_yi=u~* zPmHwk3!{b4bMs_Drp70nBtVLiAerw#k`f>y2xJesstdAH1nJ6rga2dr&siYZ1t$r0 zq<>3HI)y^1U@$UIr0k%q3+^O~MfR$EJ77;)k;8 z$mck-CmEdf6qt&#^4*LK$PFKmc#rvLDp>7}_|u1k-4ZE~%*@Q}f&!Pt#l?-ePHD3| z)PwQRN*e9P{QUfGZLGil?E|VHM@NA`U=jOn47NjaGp?wqfy66<>U{-Q+wm5f@{DKP zTT@}Qt*y92hYy!+E>A#2$8Bu<)HCoHQ$5B{`6^0E4pLH5*%ZoW?rVEYd$Nl(MCU<8 zh4K2wk48Dp@RE{}Y!b=A%gc*3$!Wao5fxmoQ8 zTHDyXo$I{m>F(};xT9SXyZnmHN(JLTZ@g7jR(5nQBP~Q7s~it~dBLJSVJ&c)c~MP8 zP0a&=xanPVO(aTqSXIS5DE zEgoFgBjgWLk3+)weL0T4CaR}VsCpa5se2{?*E*gJ4#vjDYAY!P#)pN4nS9*bB$VmS z-ZM%%6%k=dCX-J!1XySicEq1ZYrsRaw6vhSqT>XXT&jcF32SRgQc_YXcl3hAI^Dab zskr!RFA(hFI|JmSPh9U_+1@%v9UB}(C4b$qb*?W_EVA)i^c}wd6$6hLJ20T&bnj8j z(?3ZhB~1N=%-U8&hK?-9Cg#mu)18kgBH*=h8MeSF#o-1}=-NaL7P{?r=FE@9)seiO zW^ctjRF8&+#_Ja^p0&2NzGkyK;BdGJc|c&D`S$Hw@ye9BP#{>W!M3mGnTK45)By~O zf7ssE*4B9_t$YzbRTt!sM)#oU1XVRVSErM z)a?a+mXYhyND&M&bu;Sp5;#or= zu9ZxtS5wcQVUgE|hflw{VDa;^JQ%!pX=J9!La1(=Sif<^sX1YThNh<$`Bl9-uy1M7 zqX<(IKcF~}wT}BaAK!UHVPk11KVSy(O}*&osyc!{3MDTkEe*jUW}3}xwHXZ!zosSZ zh?_ZEfduE3?ptc9Klb(Y{mLKSx3j(o&PUM>VAH<9@%YM_c-qB@Y64$zVDG=+%W~Yd zD|>q|O%VZI;PnyMSF6^0?3o!`17bassnBA0z>7#EHZhqhM0xll<269{NRftF>H2zl zC!gwi&`_Dj+vxODldphmJ*V0g$dFN!FLMTN2C!9TK6GVe>M@kp5Y90?Mz4!s#gKIz zTA{A@XBgPFU%zi)CT@n3rH&}vOM`g<%~v0tdxAE*Bo?iu$gfUMPy1A%!9k?y zmR})PCN7Q8i zk_u#%0WV~vF#KbNr=6m#klQ{2D3rF2&TvOZ$0PSjD+`P4y-G@={+u6nDTy0p)-Sru z_xzznrBVmYg9p#2q@?Kl6skNzJ(k6rpSOa+ieOhhFT^BOR#vhmAn%r!!?)Jfc)hHU z{;@I7MmZvPNy=`6A_-Wj|79)y@)CbLjelB;zu^D&BY)5O%bxr_{Qs`yeAgPx4yTP& Ue|hp5V8}p7_-V&#hx5dL0{}&;c>n+a literal 0 HcmV?d00001 diff --git a/doc/myfile.ovf b/doc/myfile.ovf new file mode 100644 index 0000000000000000000000000000000000000000..e550d142ad2f4fbf350a6abb1a80f47d67be0546 GIT binary patch literal 49642 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 + + + + uMagNUS + + + + + +

Warning! This is the API for uMagNUS, which is based on mumax3.

+ +

uMagNUS API

+ +This is a complete overview of all available functions for writing an input script. + +

Syntax

+ +

+The uMagNUS input syntax is a subset of Go's syntax, somewhat similar to C. It is case-independent however, so msat is the same as Msat or MSAT.

+ +

Defining variables

+ +New variables are declared using :=. Variables have a fixed type, inferred from the declaration's right-hand-side. Assigning to existing variables is done using =. E.g.: + +
i := 7         // defines a new variable i, type automatically detected to be int
+print(i)       // now we can use i
+i = 5          // assign new value, don't use ':=' (attempt to re-declare)
+
+str := "hello" // defines str, type automatically is string
+//str = 1      // would fail, cannot assign int to string
+
+ +

Arithmetic

+Most common arithmetic operations are possible. Also Go's math library and some common constants are available. For raise-to-the-power, pow(x,y) should be used. + +
x := pi*(3+4)/5
+x = pow(x, 3)
+x++
+y := abs(cbrt(cosh(erf(erfc(gamma(J0(Y0(2))))))))
+
+ +

Control structures

+Loops are possible as well: +
for i:=0; i<10; i++{
+	print(i)
+}
+
+ +

Implicit functions

+ +Some of the API features accept a function as argument (e.g.: RunWhile(func()bool), or all input parameters). In that case, and only in this case, the argument is implicitly converted to a function, which is re-evaluated each time it's needed. E.g.: + +
value := sin(pi*t)  // value is a float64, RHS evaluated only once
+Msat = value        // time-independent Msat
+
+versus: +
Msat = sin(pi*t)    // RHS converted to function, re-evaluted every time
+
+ + +

Setting the mesh size

+The simulation mesh defines the size of the box around your magnet. It should be set at the beginning of the script. The number of cells should preferably be powers of two, or at least have small prime factors (2,3,5,7). E.g.: +
Nx := 128
+Ny := 64
+Nz := 2
+sizeX := 500e-9
+sizeY := 250e-9
+sizeZ := 10e-9
+SetGridSize(Nx, Ny, Nz)
+SetCellSize(sizeX/Nx, sizeY/Ny, sizeZ/Nz)
+
+ +

Periodic boundary conditions

+Optionally, periodic boundary conditions can be enabled: +
SetPBC(5, 0, 0)        // 5 extra images on left and right sides.
+SetGridSize(128, 64, 1)
+SetCellSize(5e-9, 5e-9, 5e-9)
+
+Setting a nonzero PBC value in a direction enables wrap-around in that direction. The precise value passed determines how many repetitions are seen by the demag field. E.g., in the above example the demag field behaves as if 5 repetitions are present to the left and to the right side. Choosing a large number may cause long initialization time. + +

Resizing the mesh

+ +The mesh can be changed at any later time in the simulation. This will cause the magnetization to be stretched onto the new mesh if needed, and the geometry and regions to be re-calculated. After resize some cells which had zero magnetization may now fall inside the magnet geometry, they will be initialized to random magnetization. + + +

SetCellSize(float64, float64, float64) +

Sets the X,Y,Z cell size in meters

+ + + +

examples: + + [1] + + [2] + + [3] + + [4] + + [5] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ +

SetGridSize(int, int, int) +

Sets the number of cells for X,Y,Z

+ + + +

examples: + + [1] + + [2] + + [3] + + [4] + + [5] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ +

SetMesh(int, int, int, float64, float64, float64, int, int, int) +

Sets GridSize, CellSize and PBC in once

+ + + + + +

+ +

SetPBC(int, int, int) +

Sets number of repetitions in X,Y,Z

+ + + + + +

+ + + + +

Setting a geometry

+ +Optionally a magnet Shape other than the full simulation box can be specified. One can specify primitive shapes, constructed at the origin (box center), and translate/rotate them if needed. All positions are specified in meters and the origin lies in the center of the simulation box. E.g.: +
 SetGeom(cylinder(400e-9, 20e-9).RotX(45*pi/180).Transl(1e-6,0,0))
+
+ + +

SetGeom(Shape) +

Sets the geometry to a given shape

+ + + +

examples: + + [4] + + [6] + + [7] + + [8] + + [9] + + [11] + + [12] + + [14] + +

+ + +

+ + +

EdgeSmooth +

Geometry edge smoothing with edgeSmooth^3 samples per cell, 0=staircase, ~8=very smooth

+ + + +

examples: + + [4] + +

+ + +

+ + +

Cell(int, int, int) Shape +

Single cell with given integer index (i, j, k)

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [1] + + [2] + + [3] + + [4] + + [5] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ +

Circle(float64) Shape +

2D Circle with diameter in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + + [6] + + [7] + + [8] + + [12] + +

+ + +

+ +

Cuboid(float64, float64, float64) Shape +

Cuboid with sides in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + +

+ + +

+ +

Cylinder(float64, float64) Shape +

3D Cylinder with diameter and height in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + + [5] + + [6] + +

+ + +

+ +

Ellipse(float64, float64) Shape +

2D Ellipse with axes in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [14] + +

+ + +

+ +

Ellipsoid(float64, float64, float64) Shape +

3D Ellipsoid with axes in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + +

+ + +

+ +

GrainRoughness(float64, float64, float64, int) Shape +

Grainy surface with different heights per grain

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + + + +

+ +

ImageShape(string) Shape +

Use black/white image as shape

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + +

+ + +

+ +

Layer(int) Shape +

Single layer (along z), by integer index starting from 0

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + + [13] + + [14] + +

+ + +

+ +

Layers(int, int) Shape +

Part of space between cell layer1 (inclusive) and layer2 (exclusive), in integer indices

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + +

+ + +

+ +

Rect(float64, float64) Shape +

2D rectangle with size in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + + [6] + + [9] + + [11] + + [12] + + [15] + +

+ + +

+ +

Square(float64) Shape +

2D square with size in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [6] + +

+ + +

+ +

Universe() Shape +

Entire space

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + + + +

+ +

XRange(float64, float64) Shape +

Part of space between x1 and x2, in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + +

examples: + + [4] + + [7] + +

+ + +

+ +

YRange(float64, float64) Shape +

Part of space between y1 and y2, in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + + + +

+ +

ZRange(float64, float64) Shape +

Part of space between z1 and z2, in meter

+ + +

methods: + Add( Shape )   Intersect( Shape )   Inverse( )   Repeat( float64 float64 float64 )   RotX( float64 )   RotY( float64 )   RotZ( float64 )   Scale( float64 float64 float64 )   Sub( Shape )   Transl( float64 float64 float64 )   Xor( Shape )   +

+ + + + +

+ + + +

Defining material regions

+Optionally, up to 256 material regions can be defined. Since each cell is made from one material, it is associated with exactly one region. So regions can not overlap. Each cell is assigned material region 0 by default. It's a good idea to output regions to verify whether each cell is assigned to the intended region. Each region can have its own material parameters, and we can output averages over each region. E.g.: +
DefRegion(1, circle(1e-6))
+DefRegion(0, circle(1e-6).Inverse()) // redundant
+save(regions)
+Msat.SetRegion(1, 800e6)
+tableAdd(m.Region(1))    // add average m over region 1 to table
+
+ + +

DefRegion(int, Shape) +

Define a material region with given index (0-255) and shape

+ + + +

examples: + + [7] + + [12] + + [13] + +

+ + +

+ +

DefRegionCell(int, int, int, int) +

Set a material region in one cell by index

+ + + + + +

+ +

regions +

Outputs the region index for each cell

+ + +

methods: + Average( )   GetCell( int int int )   Gpu( )   HostArray( )   HostList( )   LoadFile( string )   SetCell( int int int int )   +

+ + +

examples: + + [7] + + [12] + +

+ + +

+ + + +

Initial magnetization

+ +The initial magnetization is set by assigning a Config to m, setting it in separate regions, or by loading a file directly. +
m = uniform(1, 0, 0)
+m.SetRegion(1, vortex(1, 1))
+m.LoadFile("config.ovf")
+
+ + +

m +

Reduced magnetization (unit length)

+ + +

methods: + Average( )   Buffer( )   Comp( int )   GetCell( int int int )   LoadFile( string )   Region( int )   Set( Config )   SetArray( Slice )   SetCell( int int int data.Vector )   SetInShape( Shape Config )   SetRegion( int Config )   TableData( )   +

+ + +

examples: + + [1] + + [2] + + [3] + + [4] + + [5] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ + +

Antivortex(int, int) Config +

Antivortex magnetization with given circulation and core polarization

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + + + +

+ +

BlochSkyrmion(int, int) Config +

Bloch skyrmion magnetization with given chirality and core polarization

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [5] + +

+ + +

+ +

NeelSkyrmion(int, int) Config +

Néél skyrmion magnetization with given charge and core polarization

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [5] + +

+ + +

+ +

RandomMag() Config +

Random magnetization

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [3] + + [5] + +

+ + +

+ +

RandomMagSeed(int) Config +

Random magnetization with given seed

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + + + +

+ +

TwoDomain(float64, float64, float64, float64, float64, float64, float64, float64, float64) Config +

Twodomain magnetization with with given magnetization in left domain, wall, and right domain

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [5] + + [10] + + [11] + +

+ + +

+ +

Uniform(float64, float64, float64) Config +

Uniform magnetization in given direction

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [1] + + [2] + + [5] + + [6] + + [7] + + [13] + + [14] + + [15] + +

+ + +

+ +

Vortex(int, int) Config +

Vortex magnetization with given circulation and core polarization

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [5] + + [8] + + [9] + + [12] + +

+ + +

+ +

VortexWall(float64, float64, int, int) Config +

Vortex wall magnetization with given mx in left and right domain and core circulation and polarization

+ + +

methods: + Add( float64 Config )   RotZ( float64 )   Scale( float64 float64 float64 )   Transl( float64 float64 float64 )   +

+ + +

examples: + + [5] + +

+ + +

+ + + +

Material parameters

+ +Assigning to a material parameter sets a value in all regions. E.g.: +
Msat  = 800e3
+AnisU = vector(1, 0, 0)
+
+ +When regions are defined, they can also be set region-wise: +
Msat.SetRegion(0, 800e3)
+Msat.SetRegion(1, 540e3)
+
+ +Material parameters can be functions of time as well. E.g.: +
f := 500e6
+Ku1 = 500 * sin(2*pi*f*t)
+
+ + +

Aex +

Exchange stiffness (J/m)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [1] + + [2] + + [3] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ +

alpha +

Landau-Lifshitz damping constant

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [1] + + [6] + + [7] + + [8] + + [10] + + [11] + + [12] + + [14] + + [15] + +

+ + +

+ +

anisC1 +

Cubic anisotropy direction #1

+ + +

methods: + Average( )   Comp( int )   GetRegion( int )   IsUniform( )   Region( int )   SetRegion( int VectorFunction )   SetRegionFn( int func() [3]float64 )   +

+ + +

examples: + + [12] + +

+ + +

+ +

anisC2 +

Cubic anisotorpy directon #2

+ + +

methods: + Average( )   Comp( int )   GetRegion( int )   IsUniform( )   Region( int )   SetRegion( int VectorFunction )   SetRegionFn( int func() [3]float64 )   +

+ + +

examples: + + [12] + +

+ + +

+ +

anisU +

Uniaxial anisotropy direction

+ + +

methods: + Average( )   Comp( int )   GetRegion( int )   IsUniform( )   Region( int )   SetRegion( int VectorFunction )   SetRegionFn( int func() [3]float64 )   +

+ + +

examples: + + [7] + + [10] + + [15] + +

+ + +

+ +

Dbulk +

Bulk Dzyaloshinskii-Moriya strength (J/m2)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

Dind +

Interfacial Dzyaloshinskii-Moriya strength (J/m2)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

EpsilonPrime +

Slonczewski secondairy STT term ε'

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [14] + +

+ + +

+ +

FixedLayer +

Slonczewski fixed layer polarization

+ + +

methods: + Average( )   Comp( int )   GetRegion( int )   IsUniform( )   Region( int )   SetRegion( int VectorFunction )   SetRegionFn( int func() [3]float64 )   +

+ + +

examples: + + [14] + +

+ + +

+ +

frozenspins +

Defines spins that should be fixed

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

Kc1 +

1st order cubic anisotropy constant (J/m3)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [12] + +

+ + +

+ +

Kc2 +

2nd order cubic anisotropy constant (J/m3)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

Kc3 +

3rd order cubic anisotropy constant (J/m3)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

Ku1 +

1st order uniaxial anisotropy constant (J/m3)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [7] + + [10] + + [15] + +

+ + +

+ +

Ku2 +

2nd order uniaxial anisotropy constant (J/m3)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

Lambda +

Slonczewski Λ parameter

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [14] + +

+ + +

+ +

Msat +

Saturation magnetization (A/m)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [1] + + [2] + + [3] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ +

NoDemagSpins +

Disable magnetostatic interaction per-spin (set to 1 to disable)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

Pol +

Electrical current polarization

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [5] + + [10] + + [11] + + [14] + +

+ + +

+ +

Temp +

Temperature (K)

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + + + +

+ +

xi +

Non-adiabaticity of spin-transfer-torque

+ + +

methods: + Average( )   GetRegion( int )   IsUniform( )   Region( int )   Set( float64 )   SetRegion( int ScalarFunction )   SetRegionFuncGo( int func() float64 )   SetRegionValueGo( int float64 )   +

+ + +

examples: + + [10] + + [11] + + [12] + +

+ + +

+ + + +

Excitation

+ +Field or current excitations can be set in the same way as material parameters: +
B_ext = vector(0.01, 1e-6*sin(2*pi*f*t), 0)
+B_ext.SetRegion(1, vector(0, 0, 0.1))
+
+Additionally, an arbitrary number of time- and space-dependent vector fields of the form g(x,y,z) * f(t) may be added. (E.g., to simulate the field of an antenna or an arbitrary current running through the magnet) +
B_ext.Add(LoadFile("antenna.ovf"), sin(2*pi*f*t))
+JPol.Add(LoadFile("current.ovf"), 1)
+
+ + +

B_ext +

Externally applied field (T)

+ + +

methods: + Add( Slice ScalarFunction )   AddGo( Slice func() float64 )   AddTo( Slice )   Average( )   Comp( int )   IsUniform( )   Region( int )   RemoveExtraTerms( )   Set( data.Vector )   SetRegion( int VectorFunction )   SetRegionFn( int func() [3]float64 )   +

+ + +

examples: + + [1] + + [3] + + [15] + +

+ + +

+ +

J +

Electrical current density (A/m2)

+ + +

methods: + Add( Slice ScalarFunction )   AddGo( Slice func() float64 )   AddTo( Slice )   Average( )   Comp( int )   IsUniform( )   Region( int )   RemoveExtraTerms( )   Set( data.Vector )   SetRegion( int VectorFunction )   SetRegionFn( int func() [3]float64 )   +

+ + +

examples: + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ + +

Index2Coord(int, int, int) data.Vector +

Convert cell index to x,y,z coordinate in meter

+ + +

methods: + Add( data.Vector )   Cross( data.Vector )   Div( float64 )   Dot( data.Vector )   Len( )   MAdd( float64 data.Vector )   Mul( float64 )   Sub( data.Vector )   X( )   Y( )   Z( )   +

+ + +

examples: + + [15] + +

+ + +

+ +

LoadFile(string) Slice +

Load a data file (ovf or dump)

+ + +

methods: + CPUAccess( )   Comp( int )   DevPtr( int )   Disable( )   Free( )   GPUAccess( )   Get( int int int int )   Host( )   HostCopy( )   Index( int int int )   IsNil( )   Len( )   MemType( )   Scalars( )   Set( int int int int float64 )   SetScalar( int int int float64 )   SetVector( int int int data.Vector )   Size( )   Tensors( )   Vectors( )   +

+ + +

examples: + + [5] + +

+ + +

+ +

NewSlice(int, int, int, int) Slice +

Makes a 4D array of scalars with given ncomp,x,y,z size

+ + +

methods: + CPUAccess( )   Comp( int )   DevPtr( int )   Disable( )   Free( )   GPUAccess( )   Get( int int int int )   Host( )   HostCopy( )   Index( int int int )   IsNil( )   Len( )   MemType( )   Scalars( )   Set( int int int int float64 )   SetScalar( int int int float64 )   SetVector( int int int data.Vector )   Size( )   Tensors( )   Vectors( )   +

+ + + + +

+ + + +

Magnetic Force Microscopy

+ +

uMagNUS has built-in generation of MFM images from a 2D magnetization. The MFM tip lift can be freely chosen. By default the tip magnetization is modeled as a point monopole at the apex. This is sufficient for most situations. Nevertheless, it is also possible to model partially magnetized tips by setting MFMDipole to the magnetized portion of the tip, in meters. E.g., if only the first 20nm of the tip is (vertically) magnetized, set MFMDipole=20e-9.

+ +

+ + +

MFM +

MFM image

+ + +

methods: + Average( )   Region( int )   Set( Slice )   +

+ + +

examples: + + [9] + +

+ + +

+ +

MFMDipole +

Height of vertically magnetized part of MFM tip

+ + + + + +

+ +

MFMLift +

MFM lift height

+ + + +

examples: + + [9] + +

+ + +

+ + + +

Output quantities

+ +The quantities listed below can be output. Also, derived quantities can be produced: the quantity restricted to a certain region or a single component. E.g.: + +
m           // magnetization quantity
+m.Comp(0)   // x-component
+m.Region(1) // magnetization in region 1 (0 elsewhere)
+
+ + +

B_anis +

Anisotropy field (T)

+ + +

methods: + AddTo( Slice )   Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

B_demag +

Magnetostatic field (T)

+ + +

methods: + Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

B_eff +

Effective field (T)

+ + +

methods: + Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

B_exch +

Exchange field (T)

+ + +

methods: + AddTo( Slice )   Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

B_therm +

Thermal field (T)

+ + +

methods: + AddTo( Slice )   +

+ + + + +

+ +

dt +

Time Step (s)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

E_anis +

Anisotropy energy (uni+cubic) (J)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

E_demag +

Magnetostatic energy (J)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

E_exch +

Exchange energy (normal+DM) (J)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

E_therm +

Thermal energy (J)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

E_total +

Total energy (J)

+ + +

methods: + Average( )   Get( )   +

+ + +

examples: + + [13] + +

+ + +

+ +

E_Zeeman +

Zeeman energy (J)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

Edens_anis +

Anisotropy energy density (uni+cubic) (J/m3)

+ + +

methods: + AddTo( Slice )   Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

Edens_demag +

Magnetostatic energy density (J/m3)

+ + +

methods: + AddTo( Slice )   Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

Edens_exch +

Exchange energy density (normal+DM) (J/m3)

+ + +

methods: + AddTo( Slice )   Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

Edens_therm +

Thermal energy density (J/m3)

+ + +

methods: + AddTo( Slice )   Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

Edens_total +

Total energy density (J/m3)

+ + +

methods: + Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

Edens_Zeeman +

Zeeman energy density (J/m3)

+ + +

methods: + AddTo( Slice )   Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

ExchCoupling +

Average exchange coupling with neighbors (arb.)

+ + +

methods: + Average( )   Region( int )   Set( Slice )   +

+ + +

examples: + + [12] + +

+ + +

+ +

geom +

Cell fill fraction (0..1)

+ + +

methods: + Average( )   Gpu( )   +

+ + +

examples: + + [4] + + [6] + + [7] + + [8] + + [9] + + [11] + + [12] + + [14] + +

+ + +

+ +

LastErr +

Error of last step

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

LLtorque +

Landau-Lifshitz torque/γ0 (T)

+ + +

methods: + Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

m_full +

Unnormalized magnetization (A/m)

+ + +

methods: + Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

MaxAngle +

Maximum angle between neighboring spins (rad)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

maxTorque +

Maximum torque/γ0, over all cells (T)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

NEval +

Total number of torque evaluations

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

PeakErr +

Overall maxium error per step

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

spinAngle +

Angle between neighboring spins (rad)

+ + +

methods: + Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ +

STtorque +

Spin-transfer torque/γ0 (T)

+ + +

methods: + AddTo( Slice )   Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ +

torque +

Total torque/γ0 (T)

+ + +

methods: + Average( )   Comp( int )   Region( int )   Set( Slice )   +

+ + + + +

+ + + +

Slicing and dicing output

+ +To save storage space, it's possible to save only the part of the output we're interested in. This works on all output quantities (not only m) + +
+save(m)                         // save full magnetization
+save(m.Comp(0))                 // save only x-component
+save(CropLayer(m, 13))          // save only layer 13
+save(CropLayer(m.Comp(0), 13))  // save only x-component of layer 13
+
+ +Or even: +
+mx   := m.Comp(0)
+mx13 := CropLayer(mx, 13) 
+save(mx13)
+tableAdd(mx13)
+
+ + + +

Crop(Quantity, int, int, int, int, int, int) *cropped +

Crops a quantity to cell ranges [x1,x2[, [y1,y2[, [z1,z2[

+ + +

methods: + Average( )   +

+ + +

examples: + + [8] + +

+ + +

+ +

CropLayer(Quantity, int) *cropped +

Crops a quantity to a single layer

+ + +

methods: + Average( )   +

+ + + + +

+ +

CropX(Quantity, int, int) *cropped +

Crops a quantity to cell ranges [x1,x2[

+ + +

methods: + Average( )   +

+ + + + +

+ +

CropY(Quantity, int, int) *cropped +

Crops a quantity to cell ranges [y1,y2[

+ + +

methods: + Average( )   +

+ + +

examples: + + [8] + +

+ + +

+ +

CropZ(Quantity, int, int) *cropped +

Crops a quantity to cell ranges [z1,z2[

+ + +

methods: + Average( )   +

+ + + + +

+ + + +

Scheduling output

+ +All input and output quantities (as described above) can be saved in a space-dependent way (".ovf" file), or as spatial averages (table output). The data table ("table.txt") contains by default the time and average magnetization. More columns can be added with TableAdd(). +
save(B_ext)
+
+tableadd(B_ext)
+tablesave()
+
+Optionally, the output/averaging can be done over a single region: +
save(m.Region(1))
+TableAdd(m.Region(1)) 
+
+ +User-defined variables can be added to the table with TableAddVar(). +
myField := 0.42
+TableAddVar(myField, "B_extra", "T")
+myField = ...
+
+ + +

AutoSave(Quantity, float64) +

Auto save space-dependent quantity every period (s).

+ + + +

examples: + + [1] + + [10] + + [11] + + [14] + + [15] + +

+ + +

+ +

AutoSnapshot(Quantity, float64) +

Auto save image of quantity every period (s).

+ + + + + +

+ +

FilenameFormat +

printf formatting string for output filenames.

+ + + + + +

+ +

Fprintln(string, ...interface {}) +

Print to file

+ + + + + +

+ +

OutputFormat +

Format for data files: OVF1_TEXT, OVF1_BINARY, OVF2_TEXT or OVF2_BINARY

+ + + + + +

+ +

OVF1_BINARY +

OutputFormat = OVF1_BINARY sets binary OVF1 output

+ + + + + +

+ +

OVF1_TEXT +

OutputFormat = OVF1_TEXT sets text OVF1 output

+ + + + + +

+ +

OVF2_BINARY +

OutputFormat = OVF2_BINARY sets binary OVF2 output

+ + + + + +

+ +

OVF2_TEXT +

OutputFormat = OVF2_TEXT sets text OVF2 output

+ + + + + +

+ +

Print(...interface {}) +

Print to standard output

+ + + +

examples: + + [2] + +

+ + +

+ +

Save(Quantity) +

Save space-dependent quantity once, with auto filename

+ + + +

examples: + + [1] + + [2] + + [3] + + [4] + + [5] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ +

SaveAs(Quantity, string) +

Save space-dependent with custom filename

+ + + +

examples: + + [4] + + [5] + + [7] + + [9] + +

+ + +

+ +

Snapshot(Quantity) +

Save image of quantity

+ + + + + +

+ +

SnapshotFormat +

Image format for snapshots: jpg, png or gif.

+ + + + + +

+ +

sprint(...interface {}) string +

Print all arguments to string with automatic formatting

+ + + + + +

+ +

sprintf(string, ...interface {}) string +

Print to string with C-style formatting.

+ + + + + +

+ +

TableAdd(TableData) +

Add quantity as a column to the data table.

+ + + +

examples: + + [3] + + [11] + + [13] + +

+ + +

+ +

TableAddVar(ScalarFunction, string, string) +

Add user-defined variable + name + unit to data table.

+ + + + + +

+ +

TableAutoSave(float64) +

Auto-save the data table every period (s). Zero disables save.

+ + + +

examples: + + [1] + + [11] + + [14] + +

+ + +

+ +

TablePrint(...interface {}) +

Print anyting in the data table

+ + + + + +

+ +

TableSave() +

Save the data table right now (appends one line).

+ + + +

examples: + + [3] + + [13] + +

+ + +

+ + +

Running

+ +Run(time) runs the simulation for a given time in seconds, using sensible error settings. +
Run(1e-9)
+
+More fine-grained control is provided by RunWhile(condition), which runs as long as an arbitrary condition is met. E.g.: +
mx := m.comp(0)
+RunWhile(mx.average() < 0)   // search for switching field during reversal
+
+Optionally, the solver accuracy may be fine-tuned. E.g.: +
MaxDt = 1e-12
+MinDt = 1e-15
+MaxErr = 1e-6
+
+ +Optionally, a different solver may be chosen (at any point) with SetSolver(int). Currently available solver types: +
    +
  • 5: RK45 (Dormand-Prince) solver (the default). An accurate solver, very fast for magnetization dynamics at the cost of some memory usage.
  • +
  • 4: Classical 4th-order Runge-Kutta method. Intended for simulations where a fixed, relatively large time step is desired.
  • +
  • 3: RK23 (Bogacki-Shampine) solver. A robust and reasonably fast solver with low memory requirements. Typically outperforms RK45 when relaxing the magnetization with little dynamics, so it used internally by Relax().
  • +
  • 2: Adaptive Heun solver. Robust and uses very little memory but takes smaller time steps than the higher-order solvers. Also suited when a fixed, relatively small time step is desired.
  • +
  • 1: Euler solver (requires FixDt = ..., ignores other settings). Only useful in exceptional situations or for debugging.
  • +
+E.g.: +
SetSolver(2) // Heun
+FixDt = 1e-15
+
+ +

Relax

+ +

Relax() tries to evolve the magnetization as closely as possible to the minimum energy state. This function assumes all excitations have been turned off (temperature, electrical current, time-dependent magnetic fields). During relax precession is disabled and the time t does not increase. There is no need to set high damping.

+ +

In general it is difficult to be sure the minimum energy state has been truly reached. Hence, relax may occasionally return after the energy has reached a local minimum, a saddle point, or a rather flat valley in the energy landscape.

+ +

Minimize

+

Minimize() is like Relax, but uses the conjugate gradient method to find the energy minimum. It is usually much faster than Relax, but is a bit less robust against divergence. E.g., a random starting configuration can be Relaxed, but may fail with Minimize. Minimize is very well suited for hysteresis calculations, where we are never far away from the ground state.

+ + + + + +

Minimize() +

Use steepest conjugate gradient method to minimize the total energy

+ + + +

examples: + + [3] + + [6] + +

+ + +

+ +

Relax() +

Try to minimize the total energy

+ + + +

examples: + + [1] + + [2] + + [3] + + [9] + + [10] + + [11] + +

+ + +

+ +

Run(float64) +

Run the simulation for a time in seconds

+ + + +

examples: + + [1] + + [7] + + [10] + + [11] + + [12] + + [14] + + [15] + +

+ + +

+ +

RunWhile(func() bool) +

Run while condition function is true

+ + + + + +

+ +

Steps(int) +

Run the simulation for a number of time steps

+ + + + + +

+ + +

FixDt +

Set a fixed time step, 0 disables fixed step

+ + + + + +

+ +

Headroom +

Solver headroom

+ + + + + +

+ +

MaxDt +

Maximum time step the solver can take (s)

+ + + + + +

+ +

MaxErr +

Maximum error per step the solver can tolerate

+ + + + + +

+ +

MinDt +

Minimum time step the solver can take (s)

+ + + + + +

+ +

MinimizerSamples +

Number of max dM to collect for Minimize convergence check.

+ + + + + +

+ +

MinimizerStop +

Stopping max dM for Minimize

+ + + +

examples: + + [3] + +

+ + +

+ +

step +

Total number of time steps taken

+ + + +

examples: + + [3] + + [10] + +

+ + +

+ +

t +

Total simulated time (s)

+ + + +

examples: + + [1] + + [2] + + [3] + + [4] + + [5] + + [6] + + [7] + + [8] + + [9] + + [10] + + [11] + + [12] + + [13] + + [14] + + [15] + +

+ + +

+ + +

SetSolver(int) +

Set solver type. 1:Euler, 2:Heun

+ + + + + +

+ + +

Moving simulation window

+ +uMagNUS can automatically shift the magnetization so that the simulation "window" stays centered on a region of interest. Shifting is done to keep a freely chosen magnetization component nearly zero. E.g. + +
ext_centerwall(0)
+ext_rmSurfaceCharge(0, -1, 1)
+TableAdd(TotalShift)
+
+ +will try to keep mx (component 0, counting from 0) close to zero. If desired, one can override which "new" magnetization is inserted from the sides by setting ShiftMagL and ShiftMagR, though the default behaviour is usually OK. + + + +

Shift(int) +

Shifts the simulation by +1/-1 cells along X

+ + + +

examples: + + [15] + +

+ + +

+ +

ShiftGeom +

Whether Shift() acts on geometry

+ + + + + +

+ +

ShiftM +

Whether Shift() acts on magnetization

+ + + +

examples: + + [15] + +

+ + +

+ +

ShiftMagL +

Upon shift, insert this magnetization from the left

+ + +

methods: + Add( data.Vector )   Cross( data.Vector )   Div( float64 )   Dot( data.Vector )   Len( )   MAdd( float64 data.Vector )   Mul( float64 )   Sub( data.Vector )   X( )   Y( )   Z( )   +

+ + + + +

+ +

ShiftMagR +

Upon shift, insert this magnetization from the right

+ + +

methods: + Add( data.Vector )   Cross( data.Vector )   Div( float64 )   Dot( data.Vector )   Len( )   MAdd( float64 data.Vector )   Mul( float64 )   Sub( data.Vector )   X( )   Y( )   Z( )   +

+ + +

examples: + + [15] + +

+ + +

+ +

ShiftRegions +

Whether Shift() acts on regions

+ + + + + +

+ +

TotalShift +

Amount by which the simulation has been shifted (m).

+ + + + + +

+ + + + +

Extensions

+ +Extensions are extra functionalities that are not officially supported. They are aimed at rather specific problems and may not work as expected for your particular situation. Their API and functionality may change in future releases. + + +

ext_bubbledist +

Bubble traveled distance (m)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_bubblepos +

Bubble core position (m)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_bubblespeed +

Bubble velocity (m/s)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_centerWall(int) +

centerWall(c) shifts m after each step to keep m_c close to zero

+ + + +

examples: + + [10] + + [11] + +

+ + +

+ +

ext_corepos +

Vortex core position (x,y) + polarization (z) (m)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_dwpos +

Position of the simulation window while following a domain wall (m)

+ + +

methods: + Average( )   Get( )   +

+ + +

examples: + + [11] + +

+ + +

+ +

ext_dwspeed +

Speed of the simulation window while following a domain wall (m/s)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_dwtilt +

PMA domain wall tilt (rad)

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_EnableUnsafe() +

Allow potentially unsafe features, at your own risk.

+ + + + + +

+ +

ext_makegrains(float64, int, int) +

Voronoi tesselation (grain size, num regions)

+ + + +

examples: + + [12] + + [15] + +

+ + +

+ +

ext_rmSurfaceCharge(int, float64, float64) +

Compensate magnetic charges on the left and right sides of an in-plane magnetized wire. Arguments: region, mx on left and right side, resp.

+ + + +

examples: + + [11] + +

+ + +

+ +

ext_ScaleExchange(int, int, float64) +

Re-scales exchange coupling between two regions.

+ + + +

examples: + + [12] + + [13] + + [15] + +

+ + +

+ +

ext_topologicalcharge +

2D topological charge

+ + +

methods: + Average( )   Get( )   +

+ + + + +

+ +

ext_topologicalchargedensity +

2D topological charge density m·(m/∂x ❌ ∂m/∂y) (1/m2)

+ + +

methods: + Average( )   Region( int )   Set( Slice )   +

+ + + + +

+ + +

EnableDemag +

Enables/disables demag (default=true)

+ + + + + +

+ +

Expect(string, float64, float64, float64) +

Used for automated tests: checks if a value is close enough to the expected value

+ + + + + +

+ +

ExpectV(string, data.Vector, data.Vector, float64) +

Used for automated tests: checks if a vector is close enough to the expected value

+ + + + + +

+ + +

Misc

+Other available functions. + +

abs(float64) float64 + + + + + + +

+ +

acos(float64) float64 + + + + + + +

+ +

acosh(float64) float64 + + + + + + +

+ +

asin(float64) float64 + + + + + + +

+ +

asinh(float64) float64 + + + + + + +

+ +

atan(float64) float64 + + + + + + +

+ +

atan2(float64, float64) float64 + + + + + + +

+ +

atanh(float64) float64 + + + + + + +

+ +

cbrt(float64) float64 + + + + + + +

+ +

ceil(float64) float64 + + + + + + +

+ +

cos(float64) float64 + + + + +

examples: + + [6] + + [13] + + [14] + +

+ + +

+ +

cosh(float64) float64 + + + + + + +

+ +

DemagAccuracy +

Controls accuracy of demag kernel

+ + + + + +

+ +

DisableSlonczewskiTorque +

Disables Slonczewski torque (default=false)

+ + + + + +

+ +

DisableZhangLiTorque +

Disables Zhang-Li torque (default=false)

+ + + + + +

+ +

DoPrecess +

Enables LL precession (default=true)

+ + + + + +

+ +

DotProduct(Quantity, Quantity) *dotProduct +

Dot product of two vector quantities

+ + +

methods: + Average( )   +

+ + + + +

+ +

DUMP +

OutputFormat = DUMP sets text DUMP output

+ + + + + +

+ +

erf(float64) float64 + + + + + + +

+ +

erfc(float64) float64 + + + + + + +

+ +

Exit() +

Exit from the program

+ + + + + +

+ +

exp(float64) float64 + + + + +

examples: + + [15] + +

+ + +

+ +

exp2(float64) float64 + + + + + + +

+ +

expm1(float64) float64 + + + + + + +

+ +

false + + + + + + +

+ +

floor(float64) float64 + + + + + + +

+ +

Flush() +

Flush all pending output to disk.

+ + + + + +

+ +

gamma(float64) float64 + + + + + + +

+ +

GammaLL +

Gyromagnetic ratio in rad/Ts

+ + + + + +

+ +

heaviside(float64) float64 + + + + + + +

+ +

hypot(float64, float64) float64 + + + + + + +

+ +

ilogb(float64) int + + + + +

examples: + + [2] + +

+ + +

+ +

inf + + + + +

examples: + + [4] + + [7] + + [11] + +

+ + +

+ +

isInf(float64, int) bool + + + + + + +

+ +

isNaN(float64) bool + + + + + + +

+ +

j0(float64) float64 + + + + + + +

+ +

j1(float64) float64 + + + + + + +

+ +

jn(int, float64) float64 + + + + + + +

+ +

ldexp(float64, int) float64 + + + + + + +

+ +

log(float64) float64 + + + + +

examples: + + [2] + + [4] + +

+ + +

+ +

log10(float64) float64 + + + + + + +

+ +

log1p(float64) float64 + + + + + + +

+ +

log2(float64) float64 + + + + + + +

+ +

logb(float64) float64 + + + + +

examples: + + [2] + +

+ + +

+ +

max(float64, float64) float64 + + + + +

examples: + + [3] + + [12] + +

+ + +

+ +

min(float64, float64) float64 + + + + +

examples: + + [3] + + [6] + +

+ + +

+ +

mod(float64, float64) float64 + + + + + + +

+ +

Mu0 +

Permittivity of vaccum (Tm/A)

+ + + +

examples: + + [2] + +

+ + +

+ +

NewScalarMask(int, int, int) Slice +

Makes a 3D array of scalars

+ + +

methods: + CPUAccess( )   Comp( int )   DevPtr( int )   Disable( )   Free( )   GPUAccess( )   Get( int int int int )   Host( )   HostCopy( )   Index( int int int )   IsNil( )   Len( )   MemType( )   Scalars( )   Set( int int int int float64 )   SetScalar( int int int float64 )   SetVector( int int int data.Vector )   Size( )   Tensors( )   Vectors( )   +

+ + + + +

+ +

NewVectorMask(int, int, int) Slice +

Makes a 3D array of vectors

+ + +

methods: + CPUAccess( )   Comp( int )   DevPtr( int )   Disable( )   Free( )   GPUAccess( )   Get( int int int int )   Host( )   HostCopy( )   Index( int int int )   IsNil( )   Len( )   MemType( )   Scalars( )   Set( int int int int float64 )   SetScalar( int int int float64 )   SetVector( int int int data.Vector )   Size( )   Tensors( )   Vectors( )   +

+ + +

examples: + + [15] + +

+ + +

+ +

norm(float64) float64 +

Standard normal distribution

+ + + +

examples: + + [5] + + [12] + +

+ + +

+ +

now() time.Time +

Returns the current time

+ + +

methods: + Add( time.Duration )   AddDate( int int int )   After( time.Time )   Before( time.Time )   Clock( )   Date( )   Day( )   Equal( time.Time )   Format( string )   GobEncode( )   Hour( )   ISOWeek( )   In( *time.Location )   IsZero( )   Local( )   Location( )   MarshalBinary( )   MarshalJSON( )   MarshalText( )   Minute( )   Month( )   Nanosecond( )   Round( time.Duration )   Second( )   Sub( time.Time )   Truncate( time.Duration )   UTC( )   Unix( )   UnixNano( )   Weekday( )   Year( )   YearDay( )   Zone( )   +

+ + + + +

+ +

pi + + + + +

examples: + + [4] + + [5] + + [6] + + [11] + + [13] + + [14] + + [15] + +

+ + +

+ +

pow(float64, float64) float64 + + + + +

examples: + + [2] + + [15] + +

+ + +

+ +

pow10(int) float64 + + + + + + +

+ +

rand() float64 +

Random number between 0 and 1

+ + + +

examples: + + [3] + + [5] + + [12] + + [15] + +

+ + +

+ +

randExp() float64 +

Exponentially distributed random number between 0 and +inf, mean=1

+ + + + + +

+ +

randInt(int) int +

Random non-negative integer

+ + + + + +

+ +

randNorm() float64 +

Standard normal random number

+ + + +

examples: + + [12] + +

+ + +

+ +

randSeed(int) +

Sets the random number seed

+ + + + + +

+ +

remainder(float64, float64) float64 + + + + + + +

+ +

Sign(float64) float64 +

Signum function

+ + + + + +

+ +

sin(float64) float64 + + + + +

examples: + + [5] + + [6] + + [13] + + [14] + + [15] + +

+ + +

+ +

sinc(float64) float64 + + + + + + +

+ +

since(time.Time) time.Duration +

Returns the time elapsed since argument

+ + +

methods: + Hours( )   Minutes( )   Nanoseconds( )   Seconds( )   +

+ + + + +

+ +

sinh(float64) float64 + + + + + + +

+ +

sqrt(float64) float64 + + + + +

examples: + + [2] + +

+ + +

+ +

tan(float64) float64 + + + + + + +

+ +

tanh(float64) float64 + + + + + + +

+ +

ThermSeed(int) +

Set a random seed for thermal noise

+ + + + + +

+ +

true + + + + + + +

+ +

trunc(float64) float64 + + + + + + +

+ +

Vector(float64, float64, float64) data.Vector +

Constructs a vector with given components

+ + +

methods: + Add( data.Vector )   Cross( data.Vector )   Div( float64 )   Dot( data.Vector )   Len( )   MAdd( float64 data.Vector )   Mul( float64 )   Sub( data.Vector )   X( )   Y( )   Z( )   +

+ + +

examples: + + [1] + + [3] + + [5] + + [7] + + [10] + + [11] + + [12] + + [14] + + [15] + +

+ + +

+ +

y0(float64) float64 + + + + + + +

+ +

y1(float64) float64 + + + + + + +

+ +

yn(int, float64) float64 + + + + + + +

+ + + + diff --git a/doc/static/gpus.svg b/doc/static/gpus.svg new file mode 100644 index 0000000..6b67171 --- /dev/null +++ b/doc/static/gpus.svg @@ -0,0 +1,822 @@ + +image/svg+xml0 +100 +200 +300 +400 +500 +600 +OOMMF(CPU) +GT 650M +GT 755M (iMac 2013) +GTX 860M +Tesla M2070 +Tesla 2050 +GTX 660 +Quadro K4200 +GTX 480 +GTX 680 +GTX 970 +GTX 580 +GTX 1060 (mobile) +Tesla K20XM +GTX 980 +GTX 1070 +GTX TITAN BLACK FE +GTX TITAN +GTX 1080 +Tesla M40 +GTX 980 Ti +Quadro P5000 +Tesla P40 +GTX TITAN X (Pascal) +GTX 1080 Ti +GTX TITAN Xp +Tesla P100 +Tesla P100 SXM2 +RTX 2080 Ti +TITAN V +Tesla V100 +throughput (M cells/s) + \ No newline at end of file diff --git a/doc/static/mfm.svg b/doc/static/mfm.svg new file mode 100644 index 0000000..dda8334 --- /dev/null +++ b/doc/static/mfm.svg @@ -0,0 +1,277 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MFMLift + + MFMDipole + + - + + + + + + diff --git a/doc/static/nimble-cubes128-xmas.png b/doc/static/nimble-cubes128-xmas.png new file mode 100644 index 0000000000000000000000000000000000000000..57f572e11e1e60dfcf6ea88869d0ea2dd41b8a0b GIT binary patch literal 13922 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 literal 0 HcmV?d00001 diff --git a/doc/static/nimble-cubes128.png b/doc/static/nimble-cubes128.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb80cf2a65fe8b7cfdb744158fe2df3f19fa0e4 GIT binary patch literal 29390 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 Z`MaTxm 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 ISG0=$Klu=mb^rhX literal 0 HcmV?d00001 diff --git a/doc/static/web2.png b/doc/static/web2.png new file mode 100644 index 0000000000000000000000000000000000000000..d27cad0f046cd82b7b258e86bf5b9c1f206d8a75 GIT binary patch literal 67175 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 u7n>rY782GVen|rul$l +

{{.Name}}{{.Ins}} + {{with .Doc}}

{{.}}

{{end}} + + {{with .Methods}} +

methods: + {{range .}} {{.}}  {{end}} +

+ {{end}} + + {{with .Examples}}

examples: + {{range .}} + [{{.}}] + {{end}} +

+ {{end}} + +

+ +{{end}} + + + +{{.Include "head.html"}} + + +{{.Include "header.html"}} + +
+ + +
+ + + + +
+ +

Syntax

+ +

+ The uMagNUS input syntax is a subset of Go's syntax, somewhat similar to C. It is case-independent however, so msat is the same as Msat or MSAT.

+ +

Defining variables

+ + New variables are declared using :=. Variables have a fixed type, inferred from the declaration's right-hand-side. Assigning to existing variables is done using =. E.g.: + +
i := 7         // defines a new variable i, type automatically detected to be int
+print(i)       // now we can use i
+i = 5          // assign new value, don't use ':=' (attempt to re-declare)
+
+str := "hello" // defines str, type automatically is string
+//str = 1      // would fail, cannot assign int to string
+
+ +

Arithmetic

+ Most common arithmetic operations are possible. Also Go's math library and some common constants are available. For raise-to-the-power, pow(x,y) should be used. + +
x := pi*(3+4)/5
+x = pow(x, 3)
+x++
+y := abs(cbrt(cosh(erf(erfc(gamma(J0(Y0(2))))))))
+
+ +

Control structures

+ Loops are possible as well: +
for i:=0; i<10; i++{
+	 print(i)
+}
+
+ +

Implicit functions

+ + Some of the API features accept a function as argument (e.g.: RunWhile(func()bool), or all input parameters). In that case, and only in this case, the argument is implicitly converted to a function, which is re-evaluated each time it's needed. E.g.: + +
value := sin(pi*t)  // value is a float64, RHS evaluated only once
+Msat = value        // time-independent Msat
+
+ versus: +
Msat = sin(pi*t)    // RHS converted to function, re-evaluted every time
+
+ +

Methods

+ + Some of the API instances have methods defined on them. You can call methods on an instance by using '.' as in most object oriented programming languages. + E.g.: a material parameter such as Msat has the method SetRegion(int, float) to set the value of the material parameter in a certain region: + +
Msat.SetRegion(1, 800e3) // Set Msat=520e3 in region 1 
+ +
+ + + + +
+ +

Mesh size and geometry

+ + The simulation mesh defines the size of the box around your magnet. It should be set at the beginning of the script. The number of cells should preferably be powers of two, or at least have small prime factors (2,3,5,7). E.g.: +
Nx := 128
+Ny := 64
+Nz := 2
+sizeX := 500e-9
+sizeY := 250e-9
+sizeZ := 10e-9
+SetGridSize(Nx, Ny, Nz)
+SetCellSize(sizeX/Nx, sizeY/Ny, sizeZ/Nz)
+
+ +

Periodic boundary conditions

+ Optionally, periodic boundary conditions can be enabled: +
SetPBC(5, 0, 0)        // 5 extra images on left and right sides.
+SetGridSize(128, 64, 1)
+SetCellSize(5e-9, 5e-9, 5e-9)
+
+ Setting a nonzero PBC value in a direction enables wrap-around in that direction. The precise value passed determines how many repetitions are seen by the demag field. E.g., in the above example the demag field behaves as if 5 repetitions are present to the left and to the right side. Choosing a large number may cause long initialization time. + +

Resizing the mesh

+ + The mesh can be changed at any later time in the simulation. This will cause the magnetization to be stretched onto the new mesh if needed, and the geometry and regions to be re-calculated. After resize some cells which had zero magnetization may now fall inside the magnet geometry, they will be initialized to random magnetization. + +

Setting the geometry

+ + Optionally a magnet Shape other than the full simulation box can be specified. In order to set the geometry, you first need to define a shape. +
 geometryShape := cylinder(400e-9, 20e-9).RotX(45*pi/180).Transl(1e-6,0,0)
+SetGeom(geometryShape)
+
+ +
+ + {{range .FilterName "setgeom" "setgridsize" "setcellsize" "setpbc" "setmesh"}} {{template "entry" .}} {{end}} + {{range .FilterName "edgesmooth"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Shapes

+ + A shape is an abstract object which outlines an area in a 3D universe. Shapes are useful for different tasks, e.g.: to define the geometry of a magnet, to define material regions, or to set locally a specific initial magnetization configuration. + One can specify primitive shapes, constructed at the origin (box center), and translate/rotate them if needed. All positions are specified in meters and the origin lies in the center of the simulation box. E.g.: +
myShape := cylinder(400e-9, 20e-9).RotX(45*pi/180).Transl(1e-6,0,0))
+anotherShape := Circle(400e-9).sub(Circle(200e-9))
+
+ +
+ + {{range .FilterReturn "Shape"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Material regions

+ Optionally, up to 256 material regions can be defined. Since each cell is made from one material, it is associated with exactly one region. So regions can not overlap. Each cell is assigned material region 0 by default. It's a good idea to output regions to verify whether each cell is assigned to the intended region. Each region can have its own material parameters, and we can output averages over each region. E.g.: +
DefRegion(1, circle(1e-6))
+DefRegion(0, circle(1e-6).Inverse()) // redundant
+save(regions)
+Msat.SetRegion(1, 800e6)
+tableAdd(m.Region(1))    // add average m over region 1 to table
+
+ +
+ + {{range .FilterName "DefRegion" "DefRegionCell" "regions"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Initial magnetization

+ + The initial magnetization is set by assigning a Config to m, setting it in separate regions, or by loading a file directly. +
m = uniform(1, 0, 0)
+m.SetRegion(1, vortex(1, 1))
+m.LoadFile("config.ovf")
+m.SetInShape(circle(50e-9), uniform(0,0,1))
+
+ +
+ + {{range .FilterName "m"}} {{template "entry" .}} {{end}} + {{range .FilterReturn "Config"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Material parameters

+ + Assigning to a material parameter sets a value in all regions. E.g.: +
Msat  = 800e3
+AnisU = vector(1, 0, 0)
+
+ + When regions are defined, they can also be set region-wise: +
Msat.SetRegion(0, 800e3)
+Msat.SetRegion(1, 540e3)
+
+ + Material parameters can be functions of time as well. E.g.: +
f := 500e6
+Ku1 = 500 * sin(2*pi*f*t)
+
+ +
+ + {{range .FilterType "*engine.RegionwiseScalar" "*engine.RegionwiseVector"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Excitation

+ + Field or current excitations can be set in the same way as material parameters: +
B_ext = vector(0.01, 1e-6*sin(2*pi*f*t), 0)
+B_ext.SetRegion(1, vector(0, 0, 0.1))
+
+ Additionally, an arbitrary number of time- and space-dependent vector fields of the form g(x,y,z) * f(t) may be added. (E.g., to simulate the field of an antenna or an arbitrary current running through the magnet) +
B_ext.Add(LoadFile("antenna.ovf"), sin(2*pi*f*t))
+J.Add(LoadFile("current.ovf"), 1)
+
+ +
+ + {{range .FilterType "*engine.Excitation"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Spin currents

+ + The effect of spin-polarized currents on the magnetization dynamics can be modelled in different ways. + In uMagNUS you can use the Zhang-Li model or the Slonczewski model. + For both models, a spin-polarized current field needs to be defined. This is done by setting the current density field J + and the polarization Pol. + +

Zhang-Li model

+ When using the the Zhang-Li model, it is possible to set the non-adiabaticity through the material parameter xi: + +
J = vector(1e12, 0, 0)
+Pol = 1
+xi = 0.1
+
+ +

Slonczewski model

+ To use the Slonczewski model, you need to define the magnetization configuration of the fixed layer. + This fixed layer can be placed above or below the sample. The Slonczewski parameter and the prefactor of the secondary spin transfer torque term + of the Slonczewski model can be set through the material parameters Lambda and EpsilonPrime respectively: + +
DisableZhangLiTorque = true
+J = vector(1e12, 0, 0)
+Pol = 0.6
+FixedLayer = vector(1,0,0)
+FixedLayerPosition = FIXEDLAYER_TOP
+EpsilonPrime = 0.02
+Lambda = 1
+
+ +
+ + {{range .FilterName "epsilonprime" "Lambda" "Pol" "xi" "J" "FreeLayerThickness" "fixedlayer" "fixedlayerposition" "fixedlayer_top" "fixedlayer_bottom" "DisableSlonczewskiTorque" "DisableZhangLiTorque" }} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Magnetic Force Microscopy

+ +

uMagNUS has built-in generation of MFM images from a 2D magnetization. The MFM tip lift can be freely chosen. By default the tip magnetization is modeled as a point monopole at the apex. This is sufficient for most situations. Nevertheless, it is also possible to model partially magnetized tips by setting MFMDipole to the magnetized portion of the tip, in meters. E.g., if only the first 20nm of the tip is (vertically) magnetized, set MFMDipole=20e-9.

+ +

+ + {{range .FilterPrefix "MFM"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Output quantities

+ + The quantities listed below can be output. Also, derived quantities can be produced: the quantity restricted to a certain region or a single component. E.g.: + +
m           // magnetization quantity
+m.Comp(0)   // x-component
+m.Region(1) // magnetization in region 1 (0 elsewhere)
+
+ +
+ + {{range .FilterType "engine.ScalarField" "engine.VectorField" "*engine.geom" "*engine.thermField" "*engine.ScalarValue" "*engine.VectorValue"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Slicing and dicing output

+ + To save storage space, it's possible to save only the part of the output we're interested in. This works on all output quantities (not only m) + +
+save(m)                         // save full magnetization
+save(m.Comp(0))                 // save only x-component
+save(CropLayer(m, 13))          // save only layer 13
+save(CropLayer(m.Comp(0), 13))  // save only x-component of layer 13
+
+ + Or even: +
+mx   := m.Comp(0)
+mx13 := CropLayer(mx, 13) 
+save(mx13)
+tableAdd(mx13)
+
+ +
+ + {{range .FilterName "Crop" "CropX" "CropY" "CropZ" "CropLayer" "CropRegion"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Scheduling output

+ + All input and output quantities (as described above) can be saved in a space-dependent way (".ovf" file), or as spatial averages (table output). The data table ("table.txt") contains by default the time and average magnetization. More columns can be added with TableAdd(). +
save(B_ext)
+
+tableadd(B_ext)
+tablesave()
+
+ Optionally, the output/averaging can be done over a single region: +
save(m.Region(1))
+TableAdd(m.Region(1)) 
+
+ + User-defined variables can be added to the table with TableAddVar(). +
myField := 0.42
+TableAddVar(myField, "B_extra", "T")
+myField = ...
+
+ +
+ + {{range .FilterName "dump" "tableadd" "tableaddvar" "tablesave" "tableautosave" "save" "saveas" "autosave" "snapshot" "snapshotas" "snapshotformat" "autosnapshot" "filenameformat" "outputformat" "ovf1_text" "ovf1_binary" "ovf2_text" "ovf2_binary" "TablePrint" "FPrintln" "Sprint" "Sprintf" "Print" "Flush"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Running

+ + Run(time) runs the simulation for a given time in seconds, using sensible error settings. +
Run(1e-9)
+
+ More fine-grained control is provided by RunWhile(condition), which runs as long as an arbitrary condition is met. E.g.: +
mx := m.comp(0)
+RunWhile(mx.average() < 0)   // search for switching field during reversal
+
+ Optionally, the solver accuracy may be fine-tuned. E.g.: +
MaxDt = 1e-12
+MinDt = 1e-15
+MaxErr = 1e-6
+
+ + Optionally, a different solver may be chosen (at any point) with SetSolver(int). Currently available solver types: +
    +
  • 6: RK56 (Fehlberg) solver. This is the highest order solver available, but which is typically not faster than the RK45 solver.
  • +
  • 5: RK45 (Dormand-Prince) solver (the default). An accurate solver, very fast for magnetization dynamics at the cost of some memory usage.
  • +
  • 4: Classical 4th-order Runge-Kutta method. Intended for simulations where a fixed, relatively large time step is desired.
  • +
  • 3: RK23 (Bogacki-Shampine) solver. A robust and reasonably fast solver with low memory requirements. Typically outperforms RK45 when relaxing the magnetization with little dynamics, so it used internally by Relax().
  • +
  • 2: Adaptive Heun solver. Robust and uses very little memory but takes smaller time steps than the higher-order solvers. Also suited when a fixed, relatively small time step is desired.
  • +
  • 1: Euler solver (requires FixDt = ..., ignores other settings). Only useful in exceptional situations or for debugging.
  • +
+ E.g.: +
SetSolver(2) // Heun
+FixDt = 1e-15
+
+ +

Relax

+ +

Relax() tries to evolve the magnetization as closely as possible to the minimum energy state. This function assumes all excitations have been turned off (temperature, electrical current, time-dependent magnetic fields). During relax precession is disabled and the time t does not increase. There is no need to set high damping.

+ +

In general it is difficult to be sure the minimum energy state has been truly reached. Hence, relax may occasionally return after the energy has reached a local minimum, a saddle point, or a rather flat valley in the energy landscape.

+ +

Minimize

+

Minimize() is like Relax, but uses the conjugate gradient method to find the energy minimum. It is usually much faster than Relax, but is a bit less robust against divergence. E.g., a random starting configuration can be Relaxed, but may fail with Minimize. Minimize is very well suited for hysteresis calculations, where we are never far away from the ground state.

+ +
+ + {{range .FilterName "run" "steps" "runwhile" "relax" "minimize"}} {{template "entry" .}} {{end}} + {{range .FilterName "t" "dt" "MinDt" "MaxDt" "FixDt" "HeadRoom" "MaxErr" "step" "NEval" "peakErr" "lastErr" "minimizerstop" "minimizersamples" "relaxtorquethreshold"}} {{template "entry" .}} {{end}} + {{range .FilterName "SetSolver"}} {{template "entry" . }} {{end}} + +
+ + + + +
+ +

Moving simulation window

+ + uMagNUS can automatically shift the magnetization so that the simulation "window" stays centered on a region of interest. Shifting is done to keep a freely chosen magnetization component nearly zero. E.g. + +
ext_centerwall(0)
+ext_rmSurfaceCharge(0, -1, 1)
+TableAdd(TotalShift)
+
+ + will try to keep mx (component 0, counting from 0) close to zero. If desired, one can override which "new" magnetization is inserted from the sides by setting ShiftMagL and ShiftMagR, though the default behaviour is usually OK. + +
+ + {{range .FilterName "ext_centerwall" "ext_rmSurfaceCharge" "shift" "shiftgeom" "shiftm" "shiftregions" "shiftmagl" "shiftmagr" "shiftmagd" "shiftmagu" "totalshift"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Extensions

+ + Extensions are extra functionalities that are not officially supported. They are aimed at rather specific problems and may not work as expected for your particular situation. Their API and functionality may change in future releases. + +
+ + {{range .FilterPrefix "ext_"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Custom quantities

+ Using existing quantities, it is possible to define new custom quantities. + E.g.: instead of using the pre-defined ext_topologicalchargedensity quantity, + it is possible to define this quantity yourselves inside an input script: + +
cs := 1e-9
+setcellsize(cs,cs,cs)
+setgridsize(64,64,1)
+
+// Use central finite differences to approximate the spatial derivatives of m
+mL := Shifted(m,-1,0,0) // shift left
+mR := Shifted(m,1,0,0)  // shift right
+mD := Shifted(m,0,-1,0) // shift up
+mU := Shifted(m,0,1,0)  // shift down
+dmdx := Mul( Const(1/(2*cs)), Madd(mR,mL,1,-1) )
+dmdy := Mul( Const(1/(2*cs)), Madd(mU,mD,1,-1) ) 
+
+// Define the topological charge density
+chargeDensity := Mul( Const(1/(4*pi)), Dot(m, Cross(dmdx,dmdy)))
+
+// Save the topological charge density of a skyrmion
+m = neelskyrmion(1,-1)
+saveas(chargeDensity, "chargeDensity.ovf")
+
+ +
+ + {{range .FilterName "Add" "Const" "ConstVector" "Cross" "Div" "Dot" "MAdd" "Masked" "Mul" "MulMV" "Shifted"}} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Custom effective field terms

+ It is possible to define additional effective field terms by promoting a custom quantity to an effective field term. + The corresponding energy density term can also be added by promoting a custom quantity. + E.g.: instead of using the existing anistropy field in uMagNUS, you could define the uniaxial anisotropy field + (and the corresponding energy density) yourselves: + +

+Ms := 1100e3
+K  := 0.5e6
+u  := ConstVector(1, 0, 0)
+anisField := Mul( Const(2*K/Ms)  , Mul( Dot(u, m), u))
+anisEdens := Mul( Const(-0.5*Ms) , Dot( anisField, m))
+
+AddFieldTerm(anisField) // promote anisField to an effective field term
+AddEdensTerm(anisEdens) // promote anisEdens to an energy density term
+
+tableAdd(E_custom)  // Add a column with the energy related to the custom field
+
+ +
+ + {{range .FilterName "AddFieldTerm" "AddEdensTerm" "RemoveCustomFields" "B_custom" "E_custom" "Edens_custom" }} {{template "entry" .}} {{end}} + +
+ + + + +
+ +

Misc

+ + Other available functions. + +
+ + {{range .FilterLeftovers}} {{template "entry" .}} {{end}} + +
+ + + + +
+ {{range .All }} {{template "entry" .}} {{end}} +
+ + + +
+
+ + + + + + + + diff --git a/doc/templates/download-template.html b/doc/templates/download-template.html new file mode 100644 index 0000000..39b65d4 --- /dev/null +++ b/doc/templates/download-template.html @@ -0,0 +1,34 @@ + + + +{{.Include "head.html"}} + + + +{{.Include "header.html"}} + +

Prerequisites

+ +To run uMagNUS you need + +
    +
  • A GPU supporting OpenCL 1.2
  • +
  • Drivers for your GPU to support OpenCL 1.2
  • +
  • Optional: gnuplot for plots in the web GUI
  • +
+ +

Download and installation

+ +

+You may download pre-compiled binaries from the "Releases" page of the uMagNUS repository. +After downloading and unpacking the archive, you will have a uMagNUS executable which is ready to be used. +Note that uMagNUS is a command line application, so it is a good idea to add the directory containing +the uMagNUS executable to the PATH environment variable. +

+ +

Building uMagNUS from the source

+ +The source code of uMagNUS as well as the build instructions for linux can be found on github. + + + diff --git a/doc/templates/examples-template.html b/doc/templates/examples-template.html new file mode 100644 index 0000000..112757c --- /dev/null +++ b/doc/templates/examples-template.html @@ -0,0 +1,701 @@ + + +{{.Include "head.html"}} + + +{{.Include "header.html"}} + +

uMagNUS examples

+ +

These are example input scripts, the full API can be found here.

+ +uMagNUS input files are run with the command + +
uMagNUS myfile.mx3
+ +Output is automatically stored in the "myfile.out" directory. Additionally, a web interface provides live output. Default is http://localhost:35367.
+For more details, run uMagNUS -help which will show the available command-line flags (e.g. to select a certain GPU). + +

Getting started with Standard Problem #4

+ +Let's start with the classic mumag standard problem 4, as defined here. + +{{.Example ` + +SetGridsize(128, 32, 1) +SetCellsize(500e-9/128, 125e-9/32, 3e-9) + +Msat = 800e3 +Aex = 13e-12 +alpha = 0.02 + +m = uniform(1, .1, 0) +relax() +save(m) // relaxed state + +autosave(m, 200e-12) +tableautosave(10e-12) + +B_ext = vector(-24.6E-3, 4.3E-3, 0) +run(1e-9) + +`}} + +

This example should be pretty straight-forward to follow. Space-dependent output is stored in OVF format, which is compatible with OOMMF and can be converted with mumax3cl-convert. Below is the output converted to PNG.

+ +

The data table is stored in a simple text format compatible with gnuplot, like used for the plot below.

+ +{{.Output }} + + +

Standard Problem #2

+ +Using the scripting language explained above, relatively complex input files can be easily defined. E.g. micromagnetic standard problem #2 specifies the simulation size in exchange lengths. The script below calculates the exchange length and chooses cells not larger than 0.75 exchange lengths so that the number of cells is a power of two (for best performance). + + +{{.Example ` +Msat = 1000e3 +Aex = 10e-12 + +// define exchange length +lex := sqrt(10e-12 / (0.5 * mu0 * pow(1000e3 ,2))) + +d := 30 * lex // we test for d/lex = 30 +Sizex := 5*d // magnet size x +Sizey := 1*d +Sizez := 0.1*d + +nx := pow(2, ilogb(Sizex / (0.75*lex))) // power-of-two number of cells +ny := pow(2, ilogb(Sizey / (0.75*lex))) // not larger than 0.75 exchange lengths + +SetGridSize(nx, ny, 1) +SetCellSize(Sizex/nx, Sizey/ny, Sizez) + +m = Uniform(1, 0.1, 0) // initial mag +relax() + +save(m) // remanent magnetization +print(" for d/lex=30: ", m.average()) +`}} + +{{.Output}} + +This example saves and prints the remanent magnetization state so we can verify it against known values. + + + + +

Hysteresis

+ +Below is an example of a hysteresis loop where we step the applied field in small increments and find the magnetization ground state after each step. Minimize() finds the ground state using the conjugate gradient method, which is very fast. However, this method might fail on very high energy initial states like a random magnetization. In that case, Relax() is more robust (albeit much slower). + +{{.Example ` +SetGridsize(128, 32, 1) +SetCellsize(4e-9, 4e-9, 30e-9) + +Msat = 800e3 +Aex = 13e-12 + +m = randomMag() +relax() // high-energy states best minimized by relax() + + +Bmax := 100.0e-3 +Bstep := 1.0e-3 +MinimizerStop = 1e-6 +TableAdd(B_ext) + +for B:=0.0; B<=Bmax; B+=Bstep{ + B_ext = vector(B, 0, 0) + minimize() // small changes best minimized by minimize() + tablesave() +} + +for B:=Bmax; B>=-Bmax; B-=Bstep{ + B_ext = vector(B, 0, 0) + minimize() // small changes best minimized by minimize() + tablesave() +} + +for B:=-Bmax; B<=Bmax; B+=Bstep{ + B_ext = vector(B, 0, 0) + minimize() // small changes best minimized by minimize() + tablesave() +} + +`}} + +{{.OutputHysteresis}} + + + + +

Geometry

+ +uMagNUS has powerful API to programatically define geometries. A number of primitive shapes are defined, like ellipses, rectangles, etc. They can be transformed (rotated, translated) and combined using boolean logic (add, sub, inverse). All positions are specified in meters and the origin lies in the center of the simulation box. See the full API. + +Edges can be smoothed to reduce staircase effects. EdgeSmooth=n means samples per cell are used to determine its volume. EdgeSmooth=0 implies a staircase approximation, while EdgeSmooth=8 results in quite accurately resolved edges. + + +{{.Example ` +SetGridsize(100, 100, 50) +SetCellsize(1e-6/100, 1e-6/100, 1e-6/50) + +EdgeSmooth = 8 + +setgeom( rect(800e-9, 500e-9) ) +saveas(geom, "rect") + +setgeom( cylinder(800e-9, inf) ) +saveas(geom, "cylinder") + +setgeom( circle(200e-9).repeat(300e-9, 400e-9, 0) ) +saveas(geom, "circle_repeat") + +setgeom( cylinder(800e-9, inf).inverse() ) +saveas(geom, "cylinder_inverse") + +setgeom( cylinder(800e-9, 600e-9).transl(200e-9, 100e-9, 0) ) +saveas(geom, "cylinder_transl") + +setgeom( ellipsoid(800e-9, 600e-9, 500e-9) ) +saveas(geom, "ellipsoid") + +setgeom( cuboid(800e-9, 600e-9, 500e-9) ) +saveas(geom, "cuboid") + +setgeom( cuboid(800e-9, 600e-9, 500e-9).rotz(-10*pi/180) ) +saveas(geom, "cuboid_rotZ") + +setgeom( layers(0, 25) ) +saveas(geom, "layers") + +setgeom( cell(50, 20, 0) ) +saveas(geom, "cell") + +setgeom( xrange(0, inf) ) +saveas(geom, "xrange") + +a := cylinder(600e-9, 600e-9).transl(-150e-9, 50e-9, 0 ) +b := rect(600e-9, 600e-9).transl(150e-9, -50e-9, 0) + +setgeom( a.add(b) ) +saveas(geom, "logicAdd") + +setgeom( a.sub(b) ) +saveas(geom, "logicSub") + +setgeom( a.intersect(b) ) +saveas(geom, "logicAnd") + +setgeom( a.xor(b) ) +saveas(geom, "logicXor") + +setgeom( imageShape("mask.png") ) +saveas(geom, "imageShape") + +`}} + +{{.Output}} + +Note: these are 3D geometries seen from above. The displayed cell filling is averaged along the thickness (notable in ellipse and layers example). Black means empty space, white is filled. + +

Initial Magnetization

+Some initial magnetization functions are provided, as well as transformations similar to those on Shapes. See the Config API. + +{{.Example ` +setgridsize(256, 128, 1) +setcellsize(5e-9, 5e-9, 5e-9) + +m = Uniform(1, 1, 0) // no need to normalize length +saveas(m, "uniform") + +m = Vortex(1, -1) // circulation, polarization +saveas(m, "vortex") + +m = TwoDomain(1,0,0, 0,1,0, -1,0,0) // Néel wall +saveas(m, "twodomain") + +m = RandomMag() +saveas(m, "randommag") + +m = TwoDomain(1,0,0, 0,1,0, -1,0,0).rotz(-pi/4) +saveas(m, "twodomain_rot") + +m = VortexWall(1, -1, 1, 1) +saveas(m, "vortexwall") + +m = VortexWall(1, -1, 1, 1).scale(1/2, 1, 1) +saveas(m, "vortexwall_scale") + +m = Vortex(1,-1).transl(100e-9, 50e-9, 0) +saveas(m, "vortex_transl") + +m = Vortex(1,-1).Add(0.1, randomMag()) +saveas(m, "vortex_add_random") + +m = BlochSkyrmion(1, -1).scale(3,3,1) +saveas(m, "Bloch_skyrmion") + +m = NeelSkyrmion(1,-1).scale(3,3,1) +saveas(m, "Néel_skyrmion") + +// set m in only a part of space, or a single cell: +m = uniform(1, 1, 1) +m.setInShape(cylinder(400e-9, 100e-9), vortex(1, -1)) +m.setCell(20, 10, 0, vector(0.1, 0.1, -0.9)) // set in cell index [20,10,0] +saveas(m, "setInShape_setCell") + +//Read m form .ovf file. +m.loadfile("myfile.ovf") +saveas(m, "loadfile") + +`}} +{{.Output}} + +These initial states are approximate, after setting them it is a good idea to relax the magnetization to the actual ground state. + +The magnetization can also be set in separate regions, see below. + + +

Interlude: Rotating Cheese

+ +In this example we define a geometry that looks like a slice of cheese and have it rotate in time. + +{{.Example ` + +setgridsize(128, 128, 1) +setcellsize(2e-9, 2e-9, 2e-9) + +d := 200e-9 +sq := rect(d, d) // square with side d + +h := 50e-9 +hole := cylinder(h, h) // circle with diameter h +hole1 := hole.transl(100e-9, 0, 0) // translated circle #1 +hole2 := hole.transl(0, -50e-9, 0) // translated cricle #2 +cheese:= sq.sub(hole1).sub(hole2)// subtract the circles from the square (makes holes). +setgeom(cheese) + +msat = 600e3 +aex = 12e-13 +alpha = 3 + +// rotate the cheese. +for i:=0; i<=90; i=i+30{ + angle := i*pi/180 + setgeom(cheese.rotz(angle)) + m = uniform(cos(angle), sin(angle), 0) + minimize() + save(m) +} + +`}} + +{{.Output}} + + +

Regions: Space-dependent Parameters

+ +

Space-dependent parameters are defined using material regions. Regions are numbered 0-255 and represent different materials. Each cell can belong to only one region. At the start of a simulation all cells have region number 0.

+ +

Regions are defined with defregion(number, shape), where shape is explained in the geometry example.

+ +

When you're not using regions, like in the above examples, you'll probably set parameters with a simple assign: +

Aex = 12e-13
+Behind the screens, this sets Aex in all regions. +

+ +

It's always a good idea to output the regions quantity, as well as all your material parameters.

+ +{{.Example ` +N := 128 +setgridsize(N, N, 1) +c := 4e-9 +setcellsize(c, c, c) + +// disk with different anisotropy in left and right half +setgeom(circle(N*c)) +defregion(1, xrange(0, inf)) // left half +defregion(2, xrange(-inf, 0)) // right half +save(regions) + +Ku1.setregion(1, .1e6) +anisU.setRegion(1, vector(1, 0, 0)) + +Ku1.setregion(2, .2e6) +anisU.setRegion(2, vector(0, 1, 0)) + +save(Ku1) +save(anisU) + +Msat = 800e3 // sets it everywhere +save(Msat) + +Aex = 12e-13 +alpha = 1 + +m.setRegion(1, uniform(1, 1, 0)) +m.setRegion(2, uniform(-1, 1, 0)) +saveas(m, "m_inital") +run(.1e-9) +saveas(m, "m_final") +`}} + +{{.Output}} + + +

Slicing and dicing output

+ +The example below illustrates how to save only the part of the output you're interested in. + +{{.Example ` +Nx := 256 +Ny := 256 +Nz := 1 +setgridsize(Ny, Nx, Nz) +c := 4e-9 +setcellsize(c, c, c) + +setgeom(circle(Nx*c)) + +Msat = 800e3 +Aex = 12e-13 +alpha = 1 +m = vortex(1, 1) + +save(m) +save(m.Comp(0)) +save(Crop(m, 0, Nx/2, 0, Ny/2, 0, Nz)) + +mx := m.Comp(0) +mx_center := CropY(mx, Ny/4, 3*Ny/4) +save(mx_center) + +`}} + +{{.Output}} + + + +

Magnetic Force Microscopy

+ +

uMagNUS has built-in generation of MFM images from the magnetization. The MFM tip lift can be freely chosen. By default the tip magnetization is modeled as a point monopole at the apex. This is sufficient for most situations. Nevertheless, it is also possible to model partially magnetized tips by setting MFMDipole to the magnetized portion of the tip, in meters. E.g., if only the first 20nm of the tip is (vertically) magnetized, set MFMDipole=20e-9.

+ + +{{.Example ` +setgridsize(256, 256, 1) +setcellsize(2e-9, 2e-9, 1e-9) +setgeom(rect(400e-9, 400e-9)) + +msat = 600e3 +aex = 10e-12 +m = vortex(1, 1) + +relax() +save(m) + +MFMLift = 10e-9 +saveas(MFM, "lift_10nm") + +MFMLift = 40e-9 +saveas(MFM, "lift_40nm") + +MFMLift = 90e-9 +saveas(MFM, "lift_90nm") +`}} +{{.Output}} + + +

PMA Racetrack

+In this example we drive a domain wall in PMA material by spin-transfer torque. We set up a post-step function that makes the simulation box "follow" the domain wall. Like this, only a small number of cells is needed to simulate an infinitely long magnetic wire. + +{{.Example ` +setGridSize(128, 128, 1) +setCellSize(2e-9, 2e-9, 1e-9) + +Msat = 600e3 +Aex = 10e-12 +anisU = vector(0, 0, 1) +Ku1 = 0.59e6 +alpha = 0.02 +Xi = 0.2 + +m = twoDomain(0, 0, 1, 1, 1, 0, 0, 0, -1) // up-down domains with wall between Bloch and Néél type +relax() + +// Set post-step function that centers simulation window on domain wall. +ext_centerWall(2) // keep m[2] (= m_z) close to zero + +// Schedule output +autosave(m, 100e-12) + +// Run for 1ns with current through the sample +j = vector(1.5e13, 0, 0) +pol = 1 +run(.5e-9) +`}} + +{{.Output}} + +Since we center on the domain wall we can not see that it is actually moving, but the domain wall breakdown is visible. + + +

Py Racetrack

+ +In this example we drive a vortex wall in Permalloy by spin-transfer torque. The simulation box "follows" the domain wall. By removing surface charges at the left and right ends, we mimic an infintely long wire. + +{{.Example ` +setGridSize(256, 64, 1) +setCellSize(3e-9, 3e-9, 10e-9) + +Msat = 860e3 +Aex = 13e-12 +Xi = 0.1 +alpha = 0.02 +m = twodomain(1,0,0, 0,1,0, -1,0,0) + +notches := rect(15e-9, 15e-9).RotZ(45*pi/180).Repeat(200e-9, 64*3e-9, 0).Transl(0, 32*3e-9, 0) +setGeom(notches.inverse()) + +// Remove surface charges from left (mx=1) and right (mx=-1) sides to mimic infinitely long wire. We have to specify the region (0) at the boundaries. +BoundaryRegion := 0 +MagLeft := 1 +MagRight := -1 +ext_rmSurfaceCharge(BoundaryRegion, MagLeft, MagRight) + +relax() + +ext_centerWall(0) // keep m[0] (m_x) close to zero + +// Schedule output +autosave(m, 50e-12) +tableadd(ext_dwpos) // domain wall position +tableautosave(10e-12) + +// Run the simulation with current through the sample +pol = 0.56 +J = vector(-10e12, 0, 0) +Run(0.5e-9) +`}} + +{{.Output}} + +Since we center on the domain wall we can not really see the motion, despite the vortex wall moving pretty fast. Note the absence of closure domains at the edges due to the surface charges being removed there. + + +

Voronoi tessellation

+ +In this example we use regions to specify grains in a material. The built-in extension ext_makegrains is used to define grain-like regions using Voronoi tessellation. We vary the material parameters in each grain. + +{{.Example ` +N := 256 +c := 4e-9 +d := 40e-9 +setgridsize(N, N, 1) +setcellsize(c, c, d) + +setGeom(circle(N*c)) + +// define grains with region number 0-255 +grainSize := 40e-9 // m +randomSeed := 1234567 +maxRegion := 255 +ext_makegrains(grainSize, maxRegion, randomSeed) + +defregion(256, circle(N*c).inverse()) // region 256 is outside, not really needed + +alpha = 3 +Kc1 = 1000 +Aex = 13e-12 +Msat = 860e3 + +// set random parameters per region +for i:=0; i

RKKY

+ +Scaling the exchange coupling between regions can be used to obtain antiferromagnetic coupling like the RKKY interaction. In that case we only model the magnetic layers and do not explicitly add a spacer layer (which is negligibly thin). We scale the exchange coupling to get the desired RKKY strength: scale = (RKKY * cellsize_z) / (2 * Aex). + +{{.Example ` +N := 10 +setgridsize(N, N, 2) + +c := 1e-9 +setcellsize(c, c, c) + +defRegion(0, layer(0)) +defRegion(1, layer(1)) + +Msat = 1e6 + +Aex = 10e-12 +RKKY := -1e-3 // 1mJ/m2 +scale := (RKKY * c) / (2 * Aex.Average()) +ext_scaleExchange(0, 1, scale) + +tableAdd(E_total) + +m.setRegion(0, uniform(1, 0, 0)) + +for ang:=0; ang<360; ang++{ + m.setRegion(1, uniform(cos(ang*pi/180), sin(ang*pi/180), 0)) + t = ang * 1e-9 // output "time" is really angle + tablesave() +} + + +`}} + +{{.Output}} + + +

Slonczewski STT

+ +Example of a spin-torque MRAM stack consisting of a fixed layer, spacer and free layer. Only the free layer magnetization is explicitly modeled, so we use a 2D grid. The fixed layer polarization is set with FixedLayer = ..., which can be space-dependent. The spacer layer properties are modeled by setting the parameters Lambda and EpsilonPrime. Finally Pol sets the current polarization and J the current density, which should be along z in this case. + +Below we switch an MRAM bit. + +{{.Example ` +// geometry +sizeX := 160e-9 +sizeY := 80e-9 +sizeZ := 5e-9 + +Nx := 64 +Ny := 32 + +setgridsize(Nx, Ny, 1) +setcellsize(sizeX/Nx, sizeY/Ny, sizeZ) +setGeom(ellipse(sizeX, sizeY)) + +// set up free layer +Msat = 800e3 +Aex = 13e-12 +alpha = 0.01 +m = uniform(1, 0, 0) + +// set up spacer layer parameters +lambda = 1 +Pol = 0.5669 +epsilonprime = 0 + +// set up fixed layer polarization +angle := 20 +px := cos(angle * pi/180) +py := sin(angle * pi/180) +fixedlayer = vector(px, py, 0) + +// send current +Jtot := -0.008 // total current in A +area := sizeX*sizeY*pi/4 +jc := Jtot / area // current density in A/m2 +J = vector(0, 0, jc) + +// schedule output & run +autosave(m, 100e-12) +tableautosave(10e-12) +run(1e-9) +`}} + +{{.Output}} + + +

Spinning hard disk

+ +Using the Shift function, we can shift the system (magnetization, regions and geometry) by a given number of cells. Here we use this feature to simulate a moving hard disk platter. A time-dependent gaussian field profile mimics the write field. + +{{.Example ` +Nx := 512 +Ny := 128 +c := 5e-9 +setgridsize(Nx, Ny, 1) +setcellsize(c, c, c) + +ext_makegrains(30e-9, 256, 0) + +// PMA material +Ku1 = 0.4e6 +Aex = 10e-12 +Msat = 600e3 +alpha = 1 + +delta := 0.2 // anisotropy variation + +for i:=0; i<256; i++{ + // random cubic anisotropy direction + AnisU.SetRegion(i, vector(delta*(rand()-0.5), delta*(rand()-0.5), 1)) + + // strongly reduce exchange coupling between grains + for j:=i+1; j<256; j++{ + ext_scaleExchange(i, j, 0.1) + } +} + +m = uniform(0, 0, 1) + +// Gaussian external field profile +mask := newVectorMask(Nx, Ny, 1) +for i:=0; i + + diff --git a/doc/templates/head.html b/doc/templates/head.html new file mode 100644 index 0000000..1471802 --- /dev/null +++ b/doc/templates/head.html @@ -0,0 +1,17 @@ + + + uMagNUS + + + + + diff --git a/doc/templates/header.html b/doc/templates/header.html new file mode 100644 index 0000000..b79b0a7 --- /dev/null +++ b/doc/templates/header.html @@ -0,0 +1,16 @@ +
+ +
+ +
+uMagNUS
+ GPU-accelerated micromagnetism ported from MuMax3 but based on OpenCL

+ Home + Download + Examples + API + Forum +
+
+ +
diff --git a/doc/templates/headerpage-template.html b/doc/templates/headerpage-template.html new file mode 100644 index 0000000..52fb67f --- /dev/null +++ b/doc/templates/headerpage-template.html @@ -0,0 +1,7 @@ + + +{{.Include "head.html"}} + +{{.Include "header.html"}} + + diff --git a/doc/templates/index-template.html b/doc/templates/index-template.html new file mode 100644 index 0000000..54343b9 --- /dev/null +++ b/doc/templates/index-template.html @@ -0,0 +1,105 @@ + + + +{{.Include "head.html"}} + + + +{{.Include "header.html"}} + +
+ +

uMagNUS is a GPU-accelerated micromagnetic simulation program ported from mumax3. It was developed by the SEEDER group directed by Prof. Kelvin Fong at the National University of Singapore. + +

mumax3 is a GPU-accelerated micromagnetic simulation program developed at the DyNaMat group of Prof. Van Waeyenberge at Ghent University. The code is written and maintained by Arne Vansteenkiste.

+ + +

A speed-up of the order of 100x compared to CPU-based simulations can easily be reached, even with relatively inexpensive gaming GPUs. Additionally, the software is optimized for low memory use and can handle about 16 million FD cells with 2GB of GPU RAM.

+ +

Citations and licence

+ +

uMagNUS is open-source software. You are free to modify and distribute the source code under the GPLv3 licence. +

+ +
+
+ +
Web interface showing the spatial magnetization.
+
+
+ +
+

Features

+
    +
  • Landau-Lifshitz micromagnetic formalism
  • +
  • Magnetostatic field
  • +
  • Heisenberg exchange
  • +
  • Arbitrary inter-region exchange like RKKY coupling
  • +
  • Dzyaloshinskii-Moriya interaction
  • +
  • Spin-transfer torque (Zhang-Li and Slonczewski)
  • +
  • Uniaxial and cubic magnetocrystalline anisotropy
  • +
  • Thermal fluctuations (Brown)
  • +
  • Voronoi tessellation
  • +
  • Time- and space dependent material parameters
  • +
  • Arbitrary complex excitation (field, current)
  • +
  • Simulation window can automatically follow a moving domain wall
  • +
  • Edge charges can be removed to simulate an infinitely long geometry
  • +
  • Optional 1D, 2D or 3D periodic boundary conditions
  • +
+ +
+
+ + +
+

web GUI

+

uMagNUS includes a browser-based user interface that lets you follow a running simulation or modify it on-the-fly, be it on your local machine or remotely.

+ +

simple scripting

+

uMagNUS provides simple yet powerful input scripting. E.g., the example applies a time-dependent external field to a uniform magnet (FMR experiment).

+ +

+setgridsize(128, 32, 4)
+setcellsize(5e-9, 5e-9, 5e-9)
+Msat = 860e3
+Aex  = 13e-12
+alpha= 0.2
+m=uniform(1, 1, 0)
+
+f := 1e9  // 1GHz
+A := 0.01 // 10mT
+B_ext = vector(0.1, A*sin(2*pi*f*t), 0)
+
+run(10e-9)
+
+ +
+ +
+
+ +
Web interface can view and set parameters on-the-fly.
+
+
+
+ + + +
+ +

GPU/driver requirements

+

uMagNUS is cross-platform and runs on Linux, Windows and Mac platforms. You need a GPU supporting OpenCL 1.2 or higher. + You also need to use graphics drivers that support OpenCL 1.2 or higher, which may already be installed on your system.

+ +
+ + + +
+ + + + + diff --git a/doc/tex/.gitignore b/doc/tex/.gitignore new file mode 100644 index 0000000..2445de9 --- /dev/null +++ b/doc/tex/.gitignore @@ -0,0 +1,2 @@ +*.aux +*.pdf diff --git a/doc/tex/Makefile b/doc/tex/Makefile new file mode 100644 index 0000000..0571586 --- /dev/null +++ b/doc/tex/Makefile @@ -0,0 +1,7 @@ +umagnus.pdf: umagnus.tex + pdflatex -halt-on-error umagnus.tex + pdflatex -halt-on-error umagnus.tex + +.PHONY: clean +clean: + rm -f *.aux *.bbl *.blg *.ind *.ilg *.log *.toc *.out umagnus.pdf *.idx diff --git a/doc/tex/umagnus.tex b/doc/tex/umagnus.tex new file mode 100644 index 0000000..35516ee --- /dev/null +++ b/doc/tex/umagnus.tex @@ -0,0 +1,79 @@ +\documentclass[12pt]{article} + + +\usepackage{a4wide} +\usepackage{amsmath} + +\newcommand{\vc}[1]{\ensuremath{\vec{\textbf{#1}}}} +\newcommand{\ofrt}{\ensuremath{\left(\vc{r},t \right)}} +\newcommand{\m}{\vc{m}} +\newcommand{\M}{\vc{M}} +\newcommand{\Ms}{M_\mathrm{s}} +\newcommand{\B}[1]{\vc{B}_\mathrm{#1}} +\newcommand{\Beff}{\B{eff}} +\newcommand{\tq}[1]{\vc{\ensuremath{\tau}}\ensuremath{_\mathrm{#1}}} +\newcommand{\damp}{\ensuremath{\alpha}} +\newcommand{\Kern}{\vec{\vec{\textbf{K}}}} +\newcommand{\FFT}{\mathcal{F}} +\newcommand{\hspin}{(\vc{u}\cdot\nabla)\vc{m}} + + +\begin{document} +\pagestyle{empty} + +We solve: +\begin{eqnarray*} + \frac{\partial \m}{\partial t} &=& \gamma_0 \left( \tq{LL} + \tq{STT} \right) +\end{eqnarray*} + +\vspace{3cm} + +With boundary conditions: +\begin{eqnarray*} + \left.\frac{\partial m_x}{\partial x}\right|_{\partial V} &=& -\frac{D}{2A}m_z \\ + \left.\frac{\partial m_y}{\partial x}\right|_{\partial V} &=& 0\\ + \left.\frac{\partial m_z}{\partial x}\right|_{\partial V} &=& \frac{D}{2A}m_x\\ + \left.\frac{\partial m_x}{\partial y}\right|_{\partial V} &=& 0\\ + \left.\frac{\partial m_y}{\partial y}\right|_{\partial V} &=& -\frac{D}{2A}m_z \\ + \left.\frac{\partial m_z}{\partial y}\right|_{\partial V} &=& \frac{D}{2A}m_y\\ + \left.\frac{\partial m_x}{\partial z}\right|_{\partial V} &=& 0\\ + \left.\frac{\partial m_y}{\partial z}\right|_{\partial V} &=& 0\\ + \left.\frac{\partial m_z}{\partial z}\right|_{\partial V} &=& 0\\ +\end{eqnarray*} + +Where: +\begin{eqnarray*} + \tq{LL} &=& \frac{1}{1+\damp^2} \left( \m \times \Beff +\damp\left( \m \times \left( \m \times \Beff \right)\right) \right)\\ + \alpha &=& \alpha\ofrt \\ + \m &=& \frac{\M\ofrt}{\Ms} \\ + \Ms &=& {\left| \M\ofrt\right|} \\ + \Beff &=& \B{d} + \B{ex} + \B{z} + \B{a} + \B{th} \\ + \B{d}\ofrt &=& \iiint_V \Kern(\vc{r} - \vc{r}') \cdot \mu_0 \M(\vc{r'}, t) \mathrm{d}^3\vc{r}' \\ + & = & \FFT^{-1} \left( \FFT\left(\Kern(\vc{r})\right) \cdot \FFT\left({\mu_0\M\ofrt}\right) \right) \\ + \vc{K}_i(\vc{r}) & = & \frac{1}{4\pi}\left(\frac{3(\vc{e}_i\cdot\hat{\vc{r}})\hat{\vc{r}}-\vc{e}_i}{r^3}\right) + \frac{2}{3}\vc{e}_i\delta^3(\vc{r}) \\ + \B{ex} &=& \frac{2 A}{\Ms} \Delta \m + \frac{2D}{\Ms} \left(\frac{\partial m_z}{\partial x},\ \frac{\partial m_z}{\partial y},\ -\frac{\partial m_x}{\partial x}-\frac{\partial m_y}{\partial y}\right) \\ + A &=& A\ofrt \\ + \B{z} &=& \B{z}\ofrt \\ + \B{a} &=& \B{u} + \B{c} \\ + \B{u} &=& 2 K_\mathrm{u1} \left( \m \cdot \vc{u} \right) \vc{u} \\ + K_\mathrm{u1} &=& K_\mathrm{u1}\ofrt\\ + \vc{u} &=& \vc{u}\ofrt \\ + \vc{B}_{\mathrm{c}i} &=& \left( A_{cx} c_{1i} + A_{cy} c_{2i} + A_{cz} c_{3i} \right) \\ + \vc{A}_{c} &=& K_{c1} \left(a_1(a_2^2+a_3^2),\ a_2(a_1^2+a_3^2),\ a_3(a_1^2+a_2^2)\right)\\ + a_i &=& \vc{c}_i \cdot \m \\ + \vc{c}_1 &=& \vc{c}_1 \ofrt \\ + \vc{c}_2 &=& \vc{c}_2 \ofrt \\ + \vc{c}_3 &=& \vc{c}_1 \times \vc{c}_2 \\ + \B{th}\ofrt &=& \eta \ofrt \sqrt{ \frac{k_B^2 \alpha T} {\mu_0\gamma_0\Ms \Delta V \Delta t }} \\ + \tq{STT} &=& \tq{ZL} + \tq{SL} \\ + \tq{ZL} &=& \frac{1}{1+\alpha^2} \left( \left(1+\xi\alpha\right) \m \times \left(\m \times \hspin \right) + \left(\xi-\alpha\right)\vc{m}\times \hspin \right) \\ + \vc{u} &=& \frac{\mu_B \mu_0}{2 e \gamma_0 B_\mathrm{s} (1 + \xi^2)} \vc{j}\\ + \vc{j} &=& \vc{j}\ofrt \\ + \tq{SL} &=& \beta\epsilon (\m \times \m_P \times \m) - \beta\epsilon' \m\times \m_P \\ + \beta &=& \frac{j_z \hbar}{ \Ms e d} \\ + \epsilon &=& \frac{P\ofrt \Lambda^2}{(\Lambda^2 + 1)+ (\Lambda^2-1)(\m\cdot\m_P)} \\ + \epsilon' &=& \epsilon'\ofrt\\ +\end{eqnarray*} + + +\end{document} diff --git a/test/fixedlayer.mif b/test/fixedlayer.mif index 27347ed..fe0fbe3 100644 --- a/test/fixedlayer.mif +++ b/test/fixedlayer.mif @@ -1,5 +1,5 @@ # MIF 2.1 -# !!! Please run mumax3 -f fixedlayer.mx3 first !!! +# !!! Please run uMagNUS -f fixedlayer.mx3 first !!! set pi [expr 4*atan(1.0)] set mu0 [expr 4*$pi*1e-7] @@ -65,7 +65,7 @@ Specify Oxs_FixedZeeman:Happ [subst { Specify Oxs_Demag {} -# Fixed Layer with grains from mumax3 test +# Fixed Layer with grains from uMagNUS test Specify Oxs_FileVectorField:fixedlayer { atlas :atlas