細線のヒステリシス曲線を書くのtabulateでエネルギーの情報も出力されるようにします。

inputファイルの記述

  1. # -*- coding: utf-8 -*- # 日本語のコメントに必要
  2. from mumax2 import * # mumax2のインポート
  3.  
  4. # 細線のヒステリシス(エネルギーも出力)
  5.  
  6. # セル数の設定
  7. # 2のべき乗がベストです。
  8. Nx = 512
  9. Ny = 8
  10. Nz = 1
  11. setgridsize(Nx, Ny, Nz)
  12.  
  13. # 試料サイズ(メートル)
  14. sizeX = 1536e-9
  15. sizeY = 24e-9
  16. sizeZ = 3e-9
  17. setcellsize(sizeX/Nx, sizeY/Ny, sizeZ/Nz)
  18.  
  19. # モジュールの読み込み
  20. load('micromagnetism')
  21. load('solver/rk12') # adaptive Euler-Heun solver
  22. load('micromag/energy') # エネルギーを出力するモジュール
  23.  
  24. # solverの設定
  25. setv('dt', 1e-15) # inital time step
  26. setv('m_maxerror', 1./3000) # maximum error per step
  27.  
  28. # 物質定数の設定
  29. setv('Msat', 800e3) # 飽和磁化 Msat
  30. setv('Aex', 1.3e-11) # 交換定数 Aex
  31. setv('alpha', 1) # ダンピング定数 α
  32.  
  33. # 初期磁化の設定
  34. m=[ [[[1]]], [[[0]]], [[[0]]] ]
  35. setarray('m', m)
  36.  
  37. saveas("m", "png", [], "initial.png") # png形式で磁化配列mを保存
  38. saveas("m", "omf", ["Text"], "initial.omf") # omf形式で磁化配列mを保存
  39.  
  40. B_high = 1 # +側の磁場
  41. B_lo = -1 # -側の磁場
  42. B_step = 0.1 # 刻み幅
  43. N = int((B_high - B_lo) / B_step) # 繰り返し回数
  44. B = B_high # B: 現在の磁場
  45.  
  46. for i in range(N): # B: + → -
  47. echo('B =' + str(B)) # 現在の磁場を表示
  48. setv('B_ext', [B, 0, 0]) # シミュレータに磁場を設定
  49. # 磁化の安定状態までシミュレーションを走らせる↓
  50. run_until_smaller('maxtorque', 1e-3 * gets('gamma') * gets('msat'))
  51. saveas("m","png",[],"B="+str(B)+"down.png") # png形式で磁化配列mを保存
  52. # 外部磁場、試料の磁化、エネルギーを出力↓
  53. tabulate(["B_ext","<m>","E","E_zeeman","E_ex","E_demag"], "data.txt")
  54. echo('-------------------') # 区切り線
  55. B = B - B_step # 磁場を変化させる
  56.  
  57. for i in range(N+1): # B: - → +
  58. echo('B =' + str(B)) # 現在の磁場を表示
  59. setv('B_ext', [B, 0, 0]) # シミュレータに磁場を設定
  60. # 磁化の安定状態までシミュレーションを走らせる↓
  61. run_until_smaller('maxtorque', 1e-3 * gets('gamma') * gets('msat'))
  62. saveas("m","png",[],"B="+str(B)+"up.png") # png形式で磁化配列mを保存
  63. # 外部磁場、試料の磁化、エネルギーを出力↓
  64. tabulate(["B_ext","<m>","E","E_zeeman","E_ex","E_demag"], "data.txt")
  65. echo('-------------------') # 区切り線
  66. B = B + B_step # 磁場を変化させる
  67.  
  68. # 終了
  69. sync()
ソースコードのダウンロード: hysteresis_energy.py

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