初期磁化をランダムにするを応用して、細線試料に磁壁が入ったような初期磁化を設定してみます。

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.  
  23. # solverの設定
  24. setv('dt', 1e-15) # inital time step
  25. setv('m_maxerror', 1./3000) # maximum error per step
  26.  
  27. # 物質定数の設定
  28. setv('Msat', 800e3) # 飽和磁化 Msat
  29. setv('Aex', 1.3e-11) # 交換定数 Aex
  30. setv('alpha', 1) # ダンピング定数 α
  31.  
  32. # 初期磁化を磁壁構造に設定
  33. mv = makearray(3, Nx, Ny, Nz)
  34. for m in range(Nx):
  35. for n in range(Ny):
  36. for o in range(Nz):
  37. xx = float(m)/float(Nx)
  38. mv[0][m][n][o] = 1.0 #左側の領域のx成分を1にする
  39. mv[1][m][n][o] = 0.0
  40. mv[2][m][n][o] = 0.0
  41. if (xx > 0.5) :
  42. mv[0][m][n][o] = -1.0 #右側の領域のx成分を-1にする
  43. mv[1][m][n][o] = 0.0
  44. mv[2][m][n][o] = 0.0
  45. setarray('m', mv)
  46.  
  47. saveas("m", "png", [], "initial.png") # png形式で磁化配列mを保存
  48. saveas("m", "omf", ["Text"], "initial.omf") # omf形式で磁化配列mを保存
  49.  
  50. # 安定状態までシミュレーションを走らせる
  51. run_until_smaller('maxtorque', 1e-3 * gets('gamma') * gets('msat'))
  52.  
  53. saveas("m", "png", [], "finish.png") # png形式で磁化配列mを保存
  54. saveas("m", "omf", ["Text"], "finish.omf") # omf形式で磁化配列mを保存
  55.  
  56. # 終了
  57. sync()
ソースコードのダウンロード: wall.py

32~45行目で初期磁化を設定しています。forループの構造は初期磁化をランダムにすると同じです。37行目のfloat()は整数型の変数を浮動小数点型に変換するものです。割り算を行う際は型の変換をきちんとしておかないと、間違った答えが返ってくる場合があります(外部リンク参照)。変数xxで現在の場所が細線の右側にあるが左側にあるかを判別します。41行目のif文で右側の領域のx成分を-1にします。そのほかの領域(左側)は1となります。

実行結果

initial.png
finish.png









today: -
yesterday: -
total: -
Since 2013/10/24

タグ:

+ タグ編集
  • タグ:
最終更新:2013年10月24日 10:49