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
load('micromag/energy') # エネルギーを出力するモジュール
# 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>","E","E_zeeman","E_ex","E_demag"], "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>","E","E_zeeman","E_ex","E_demag"], "data.txt")
echo('-------------------') # 区切り線
B = B + B_step # 磁場を変化させる
# 終了
sync()
22行目:
load('micromag/energy') # エネルギーを出力するモジュール
でモジュールをインポートします。エネルギーを出力する際にはこのモジュールが必要です。
53,64行目:
tabulate(["B_ext","<m>","E","E_zeeman","E_ex","E_demag"], "data.txt")
実行結果
data.txt
最終更新:2012年09月28日 09:51