最終更新日: 2023/02/20 作成日: 2023/02/19

TL;DR

マイクロマグネティックシミュレーションのソフトウェアmumaxの簡単な説明・インストールの手順・とりあえず動かしてみるところまで.

mumaxとは

  • mumaxは,マイクロマグネティックシミュレーションのための無料のソフトウェア
  • nvidiaのGPUを使って高速な計算を行うことができる
  • Golangのスクリプト言語を用いて複雑なシミュレーションを行うことが可能
  • Web GUIを提供しており,シミュレーション結果をリアルタイムで見ることができる
  • 開発はベルギーにあるGhent大学DyNaMatグループ によって行われている
  • mumaxのコミュニティgroups.google.com/forum/#!forum/mumax2
  • オープンソース (GPLv3)github.com/mumax/3

mumaxを使うための準備

  1. nvidia のGPUを搭載した計算機を用意する.
  2. 最新の ubuntu を入れる.Windowsでもよい.macOSには対応していない模様.
  3. cuda と nvidiaドライバをインストールする.
  4. mumax3 をダウンロードしてくる.
  5. bash
    1
    
    tar zxvf mumax3.10_linux_cuda*.tar.gz
    で展開する.*の部分はバージョンによって変わる.
  6. 個人的には/opt/mumax3/において ~/.bashrc的なところに
    bash
    1
    2
    
    alias mumax3='/opt/mumax3/mumax3'
    alias mumax3-convert='/opt/mumax3/mumax3-convert'
    とか書いておくとよいと思う.もちろんPATHを通してもよい. ~/.bashrcに書き込んだら~/.bashrcを読み込む.
    bash
    1
    
    source ~/.bashrc
    これでmumax3, mumax3-convertが任意のディレクトリで実行できるようになる.

mumax の基本的な使い方

mumaxは主にGolangで書かれているので,Golangでスクリプトを書く.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// saturation magnetization
Msat = 5e6
// declare new variable
Freq := 1e9
for i:=0; i<10; i++ {
        print(i)
}
if 1+8 == 9 {
        print(Of course 1+8=9)
}

Golang Tips

  • 1行コメントは //
  • 複数行コメントは /* */
  • 変数の定義は := を使う
  • 変数の大文字小文字は区別しない
  • Golang では1行で変数を複数定義できるが,mumax3のスクリプトとしては許可されていないようだ.

mumaxの実行の仕方

myfile.mx3 というのを用意したら,

bash
1
mumax3 myfile.mx3

で実行する.すると,myfile.out/というディレクトリができてそこに色々入っている.

ブラウザで http://127.0.0.1:35367/ を開くと実行中の結果がリアルタイムで表示される.

とりあえずサンプルを実行してみる

example1.mx3というファイルに

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
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)

という内容を書き込んでみて,

bash
1
mumax3 example1.mx3

で実行してみて,以下のような画面出力が出ればうまく動いている.

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//mumax 3.10 [linux_amd64 go1.14(gc) CUDA-11.0]
//GPU info: NVIDIA T1000 8GB(7972MB), CUDA Driver 12.0, cc=7.5, using cc=75 PTX
//(c) Arne Vansteenkiste, Dynamat LAB, Ghent University, Belgium
//This is free software without any warranty. See license.txt
//********************************************************************//
//  If you use mumax in any work or publication,                      //
//  we kindly ask you to cite the references in references.bib        //
//********************************************************************//
//output directory: example1.out/
//starting GUI at http://127.0.0.1:35367
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()
//Using cached kernel: /tmp/mumax3kernel_[128 32 1]_[0 0 0]_[3.90625e-09 3.90625e-09 3e-09]_6_
save(m)
autosave(m, 200e-12)
tableautosave(10e-12)
B_ext = vector(-24.6E-3, 4.3E-3, 0)
run(1e-9)
//********************************************************************//
//Please cite the following references, relevant for your simulation. //
//See bibtex file in output folder for justification.                 //
//********************************************************************//
//   * Vansteenkiste et al., AIP Adv. 4, 107133 (2014).

次の記事:mumaxの使い方② 基礎