初期磁化をランダムにするに磁気異方性を追加してみます。

inputファイルの記述

  1. # -*- coding: utf-8 -*- # 日本語のコメントに必要
  2. from mumax2 import * # mumax2のインポート
  3. import random # randomのインポート
  4.  
  5. # 正方形+磁気異方性
  6.  
  7. # セル数の設定
  8. # 2のべき乗がベストです。
  9. Nx = 128
  10. Ny = 128
  11. Nz = 1
  12. setgridsize(Nx, Ny, Nz)
  13.  
  14. # 試料サイズ(メートル)
  15. sizeX = 500e-9
  16. sizeY = 500e-9
  17. sizeZ = 3.4e-9
  18. setcellsize(sizeX/Nx, sizeY/Ny, sizeZ/Nz)
  19.  
  20. # モジュールの読み込み
  21. load('micromagnetism')
  22. load('solver/rk12') # adaptive Euler-Heun solver
  23. load('anisotropy/uniaxial') # 異方性を設定するために必要
  24.  
  25. # solverの設定
  26. setv('dt', 1e-15) # inital time step
  27. setv('m_maxerror', 1./3000) # maximum error per step
  28.  
  29. # 物質定数の設定
  30. setv('Msat', 6.6e5) # 飽和磁化 Msat
  31. setv('Aex', 1e-11) # 交換定数 Aex
  32. setv('alpha', 1) # ダンピング定数 α
  33. setv('Ku', 4.1e5) # 磁気異方性定数 Ku
  34. setv('anisU', [0,0,1]) # 磁化容易軸の方向ベクトル
  35.  
  36. # 初期磁化をランダムに設定
  37. mv = makearray(3, Nx, Ny, Nz)
  38. for m in range(Nx):
  39. for n in range(Ny):
  40. for o in range(Nz):
  41. mv[0][m][n][o] = random.uniform(-1, 1)
  42. mv[1][m][n][o] = random.uniform(-1, 1)
  43. mv[2][m][n][o] = random.uniform(-1, 1)
  44. setarray('m', mv)
  45.  
  46. saveas("m", "png", [], "initial.png") # png形式で磁化配列mを保存
  47. saveas("m", "omf", ["Text"], "initial.omf") # omf形式で磁化配列mを保存
  48.  
  49. # 安定状態までシミュレーションを走らせる
  50. run_until_smaller('maxtorque', 1e-3 * gets('gamma') * gets('msat'))
  51.  
  52. saveas("m", "png", [], "finish.png") # png形式で磁化配列mを保存
  53. saveas("m", "omf", ["Text"], "finish.omf") # omf形式で磁化配列mを保存
  54.  
  55. # 終了
  56. sync()
ソースコードのダウンロード: square+Ku.py

23行目:
load('anisotropy/uniaxial')			# 異方性を設定するために必要
で異方性のモジュールを読み込みます。

33,34行目:
setv('Ku', 4.1e5)			# 磁気異方性定数 Ku
setv('anisU', [0,0,1])		# 磁化容易軸の方向ベクトル
で磁気異方性についての設定を行います。

実行結果

同じシミュレーションを3回行いました。
initial.png
finish.png(1回目)
finish.png(2回目)
finish.png(3回目)

初期磁化がランダムなので、結果がいろいろな状態になっています。











タグ:

+ タグ編集
  • タグ:
最終更新:2012年09月28日 18:00