# -*- coding: utf-8 -*-				# 日本語のコメントに必要
from mumax2 import *				# mumax2のインポート

# 細線+磁気異方性＋磁場

# セル数の設定
# 2のべき乗がベストです。
Nx = 512
Ny = 50
Nz = 1
setgridsize(Nx, Ny, Nz)

# セルサイズ
cellX = 3e-9
cellY = 3e-9
cellZ = 3.4e-9
setcellsize(cellX, cellY, cellZ)

# モジュールの読み込み
load('micromagnetism')
load('solver/rk12')				# adaptive Euler-Heun solver
load('anisotropy/uniaxial')			# 異方性を設定するために必要

# solverの設定
setv('dt', 1e-15)				# inital time step
setv('m_maxerror', 1./3000)			# maximum error per step

# 物質定数の設定
setv('Msat', 6.6e5)				# 飽和磁化 Msat
setv('Aex', 1e-11)				# 交換定数 Aex
setv('alpha', 1)				# ダンピング定数 α
setv('Ku', 4.1e5)				# 磁気異方性定数 Ku
setv('anisU', [0,0,1])				# 磁化容易軸の方向ベクトル

# 初期磁化の設定
m=[ [[[0]]], [[[0]]], [[[1]]] ]
setarray('m', m)

saveas("m", "png", [], "initial.png")		# png形式で磁化配列mを保存
saveas("m", "omf", ["Text"], "initial.omf")	# omf形式で磁化配列mを保存

# 静磁場を印加
setv('B_ext', [0, 0, -1])			# z方向に-1T磁場を印加

# 定期的に保存する設定
autosave("m", "png", [], 1e-11)

# 一定の時間までシミュレーションを走らせる
run(1.5e-10)

saveas("m", "png", [], "finish.png")		# png形式で磁化配列mを保存
saveas("m", "omf", ["Text"], "finish.omf")	# omf形式で磁化配列mを保存

# 終了
sync()
