inputファイルの記述
# -*- coding: utf-8 -*- # 日本語のコメントに必要
from mumax2 import * # mumax2のインポート
# 細線のヒステリシス
# セル数の設定
# 2のべき乗がベストです。
Nx = 512
Ny = 8
Nz = 1
setgridsize(Nx, Ny, Nz)
# 試料サイズ(メートル)
sizeX = 1536e-9
sizeY = 24e-9
sizeZ = 3e-9
setcellsize(sizeX/Nx, sizeY/Ny, sizeZ/Nz)
# モジュールの読み込み
load('micromagnetism')
load('solver/rk12') # adaptive Euler-Heun solver
# solverの設定
setv('dt', 1e-15) # inital time step
setv('m_maxerror', 1./3000) # maximum error per step
# 物質定数の設定
setv('Msat', 800e3) # 飽和磁化 Msat
setv('Aex', 1.3e-11) # 交換定数 Aex
setv('alpha', 1) # ダンピング定数 α
# 初期磁化の設定
m=[ [[[1]]], [[[0]]], [[[0]]] ]
setarray('m', m)
saveas("m", "png", [], "initial.png") # png形式で磁化配列mを保存
saveas("m", "omf", ["Text"], "initial.omf") # omf形式で磁化配列mを保存
B_high = 1 # +側の磁場
B_lo = -1 # -側の磁場
B_step = 0.1 # 刻み幅
N = int((B_high - B_lo) / B_step) # 繰り返し回数
B = B_high # B: 現在の磁場
for i in range(N): # B: + → -
echo('B =' + str(B)) # 現在の磁場を表示
setv('B_ext', [B, 0, 0]) # シミュレータに磁場を設定
# 磁化の安定状態までシミュレーションを走らせる↓
run_until_smaller('maxtorque', 1e-3 * gets('gamma') * gets('msat'))
saveas("m","png",[],"B="+str(B)+"down.png") # png形式で磁化配列mを保存
tabulate(["B_ext","<m>"], "data.txt") # 外部磁場、試料の磁化を出力
echo('-------------------') # 区切り線
B = B - B_step # 磁場を変化させる
for i in range(N+1): # B: - → +
echo('B =' + str(B)) # 現在の磁場を表示
setv('B_ext', [B, 0, 0]) # シミュレータに磁場を設定
# 磁化の安定状態までシミュレーションを走らせる↓
run_until_smaller('maxtorque', 1e-3 * gets('gamma') * gets('msat'))
saveas("m","png",[],"B="+str(B)+"up.png") # png形式で磁化配列mを保存
tabulate(["B_ext","<m>"], "data.txt") # 外部磁場、試料の磁化を出力
echo('-------------------') # 区切り線
B = B + B_step # 磁場を変化させる
# 終了
sync()
39~43行目で与える磁場の設定を行っています。
45~53行目ではB_highからB_loまで磁場を小さくしながらシミュレーションを行っています。
55~63行目ではB_loからB_highまで磁場を大きくしながらシミュレーションを行っています。
ここで初めて使われる関数を説明します
echo関数は画面に文字列あるいは変数の値を表示する関数です。文字列を表示させる場合は''で囲みます。変数の値を表示する場合はstr関数を使って数値を文字列に変換します。+で文字列を結合することができます。
tabulate関数は、各種情報をテキスト形式で保存する関数です。
tabulate([保存したい情報],"ファイル名")
このシミュレーションでは[保存したい情報]に"B_ext"(外部磁場)、"<m>"(試料全体での磁化の平均)を指定しています。forループで何回もtabulate関数が呼び出された場合、ファイル名が同じであればそのファイルの最後尾に情報が追加されます。
実行結果
data.txt
このデータをグラフにしたものが下図です。
最終更新:2012年09月27日 18:00