スピントロニクス理論の基礎/X-6 のバックアップ差分(No.3)

更新


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[スピントロニクス理論の基礎/5-6]]

#contents

教科書4章〜5章で用いられた1次元スピン結晶のモデルを
コンピュータシミュレーションしてみたい。

* まずは運動方程式 [#oaa25af4]

連続近似をする前の式からハミルトニアンを求めれば、

&math(H&=\sum_{\bm r}\left[\left\{-J_0\sum_{\bm a}\bm S(\bm r)\cdot\bm S(\bm r+\bm a)\right\}-\frac{1}{2}KS_z(\bm r)^2+\frac{1}{2}K_\perp S_y(\bm r)^2+\gamma B \hbar S_z(\bm r)\right]\\&=\sum_{\bm r}\left[\bm S(\bm r)\cdot\left\{\gamma B \hbar\bm e_z-J_0\sum_{\bm a}\bm S(\bm r+\bm a)\right\}-\frac{1}{2}KS_z(\bm r)^2+\frac{1}{2}K_\perp S_y(\bm r)^2\right]\\
);

ここから、

&math(
\frac{\PD H}{\PD \bm S(\bm r)}&=-J_0\left\{\sum_{\bm a}\bm S(\bm r+\bm a)\right\}-K S_z(\bm r)\bm e_z+K_\perp S_y(\bm r)\bm e_y+\gamma B \hbar\bm e_z
);

により、

&math(
\dot{\bm S}&=\frac{1}{\hbar}\frac{\PD H}{\PD \bm S}\times \bm S-\frac{1}{\hbar}\frac{\alpha}{S}\bm S\times\dot{\bm S}\\&=\frac{1}{\hbar}\left[-J_0\left\{\sum_{\bm a}\bm S(\bm r+\bm a)\right\}-K S_z(\bm r)\bm e_z+K_\perp S_y(\bm r)\bm e_y+\gamma B \hbar\bm e_z+\frac{\alpha}{S}\dot{\bm S}\right]\times \bm S
);

を得て、これがスピンの運動方程式となる。

- z軸が容易軸
- y軸が困難軸
- z軸に平行に外部磁場 B

* シミュレーション (基本) [#a6861289]

- sx[i], sy[i], sz[i] : i番目のスピンの &math(\bm S); の x, y, z 成分
- dhx[i], dhy[i], dhz[i] : i番目のスピンの &math(\PD H/\PD\bm S); の x, y, z 成分
- dsx[i], dsy[i], dsz[i] : i番目のスピンの &math(\dot {\bm S}); の x, y, z 成分
- dt : シミュレーション時間間隔

とすれば、シミュレーションの1回のイタレーションを

 LANG:C
  dhx[i] = - J * (sx[i-1]+sx[i+1]) + A * dsx[i]
  dhy[i] = - J * (sy[i-1]+sy[i+1]) + A * dsy[i] + Kp * sy[i]
  dhz[i] = - J * (sz[i-1]+sz[i+1]) + A * dsz[i] - K  * sz[i] + B
 
  dsx[i] = dhy[i] * sz[i] - dhz[i] * sy[i]
  dsy[i] = dhz[i] * sx[i] - dhx[i] * sz[i]
  dsz[i] = dhx[i] * sy[i] - dhy[i] * sx[i]
 
  sx[i]+= dt * dsx[i]
  sy[i]+= dt * dsy[i]
  sz[i]+= dt * dsz[i]

とすれば良いことになる。~
ただし J, A, Kp, K, B はそれぞれ対応する物理パラメータの次元と係数を少しごまかした物。

* シミュレーション (注意点) [#m0fbd358]

上記計算を繰り返すと、dt を有限に取っているせいで &math(\bm S); 
の大きさが元の値から徐々にずれてしまう。

そこで、何回かイタレーションするたびに、&math(\bm S); 
を正規化して正しい大きさに戻してやることにする。

 LANG:C
  c = ss[i] != 0 ? ss[i]/sqrt(sx[i]^2+sy[i]^2+sz[i]^2) : 1
  sx[i] *= c
  sy[i] *= c
  sz[i] *= c

- ss[i] : i番目のスピンの大きさ

* 見られた現象 [#e753c83c]

計算では全てのスピンの大きさを1として、
ランダムな初期値からの時間発展を追ってみた。

散逸を小さくすると計算エラーが蓄積して発散する傾向にあることが分かった。
&math(x,y,z);ではなく&math(\theta,\phi);で記述した方が良いのかもしれない。
散逸がある程度大きければ、何とかそれらしい結果が得られるみたい。

- 困難軸異方性のあるときの性質
-- 静止磁壁には2種類ある
--- x成分が正になる物と負になる物
-- 慣性が働く
--- 外部磁場を切ってもスピンのy軸成分に溜まったエネルギーが無くなるまで進み続ける
-- 磁場の弱いときは並進し、磁場の強いときは振動しながら並進する
- 困難軸異方性のあるときの磁壁間相互作用
-- x成分の正負で相互作用が異なる
--- 同じ符号の磁壁間には引力が働く
--- 異なる符号の磁壁間には斥力が働く
-- 外部磁場の中では異なる符号の磁壁がペアになった「磁壁対」が安定構造になる
--- 強い磁場では振動によりペアが生成される前に打ち消し合ってしまう
--- 弱い磁場では符号が決定してからペアが生成されるために磁壁対が自己形成する

などが見られた。

* 計算例 [#kdff7d39]

** 困難軸異方性あり、外部磁場なし [#j93ae1cd]

 J = 0.1
 K = 0.01
 Kp= 0.005
 A = 0.1
 B = 0.000
 dt = 0.2

&attachref(spin.mp4,,535x575);
&attachref(spin1.mp4,,535x575); &attachref(spin3000.png,,525x525);

- Sy がゼロでない磁壁は運動エネルギーを持ち、摩擦でエネルギーを失うまで動き続ける
- 最終的に一定の厚さを持つたくさんの磁壁が残り、「磁区」が形成される
- 最終的に残った磁壁は Sx の符号により正・負に分類できる
- 緩和の過程で、隣り合う磁壁が結合して消える様子が見られる
- 隣り合う磁壁は同じ符号を持つときだけ結合して消滅する
- 異なる符号を持つ磁壁は互いに反発し合うため結合することはない
- 磁壁が消滅する場合など、エネルギーが失われる際には大きな歳差運動が起きて、摩擦項経由でエネルギーが散逸する

** 容易軸異方性を変えてみる [#b610d18d]

 J = 0.1
 K = 0.002 //  <= 0.01
 Kp= 0.005
 A = 0.1
 B = 0.000
 dt = 0.2

&attachref(spin2.mp4,,535x575); &attachref(spin4500.png,,525x525);

- &math(\lambda=a \sqrt{K/J_0}); が増加して、磁壁が厚くなった

* ここに上げた動画 [#wf4540f8]

+ 数値計算を Igor のマクロで行う
+ 計算途中のグラフを Igor の SavePICT コマンドで png として保存する
+ ffmpeg -i "spin%d.png" -sameq spin.mp4 で mp4 にする
+ FLAVER 3.0 で表示

の手順で作成した。

Windows7 では IE, Chrome, Firefox で動作確認できた。

Android では再生はされたがコマ落ちがひどかったので、
もう少し良いコーデックがないかを探すべきかも。

* 時間発展の精密化 [#i509acaa]

&math(\bm S); に &math(\Delta t\dot{\bm S}); を足す部分、
もう少しうまく足すことで誤差を減らせないか検討してみる。

&math(\bm S); の時間変化として &math(\Delta t\dot{\bm S}); を加える計算では、

&attachref(vector.png);

この図に見るように、

- 本来円弧方向に &math(|\Delta t\dot{\bm S}|); の長さ進むべきが、
垂直方向に進んでしまうため中心角の変化量がずれてしまう
- 進んだ先は必ずスピンベクトルの大きさが大きくなってしまう。

という2つの問題が生じる。

これを何とかしたい。

** 中心角について [#y685977e]

計算では簡単のため &math(|\bm S|=1); としておく。

すると本来の角度変化は、弧の長さが &math(|\Delta t\dot{\bm S}|); なので、ラジアンで表せばそのまま

&math(|\Delta t\dot{\bm S}|);

で与えられるのだが、単に

&math(\bm S+\Delta t\dot{\bm S});

としてしまうと、角度変化は

&math(\arctan |\Delta t\dot{\bm S}|);

になってしまう。

&math(\arctan x=x-\frac{x^3}{3}+\frac{x^5}{5}-\frac{x^7}{7}+O(x)^9);

に注意しつつ、角度変化量を正しくするには、

&math(
\delta \bm S=\frac{|\Delta t\dot{\bm S}|}{\arctan |\Delta t\dot{\bm S}|}\Delta t\dot{\bm S}
\sim \frac{1}{1-\frac{|\Delta t\dot{\bm S}|^2}{3}}\Delta t\dot{\bm S}
\sim \left(1+\frac{|\Delta t\dot{\bm S}|^2}{3}\right)\Delta t\dot{\bm S}
);

とすればよい。

** 長さについて [#u6225e10]

&math(\bm S\rightarrow\bm S+\delta \bm S); 

による中心角変化は、

&math(\theta=\arctan |\delta \bm S|);

である。この &math(\theta); を使えば

&math(|\bm S+\delta \bm S|=\frac{1}{\cos\theta}); 

となるが、

&math(\frac{1}{\cos\theta}=\sqrt{1+\tan^2\theta}=\sqrt{1+|\delta \bm S|^2});

を使えば、&math(\bm S+\delta \bm S); を正規化するには、

&math(\frac{\bm S+\delta \bm S}{|\bm S+\delta \bm S|}
=\frac{\bm S+\delta \bm S}{\sqrt{1+|\delta \bm S|^2}}
=\left(1-\frac{|\delta \bm S|^2}{2}\right)(\bm S+\delta \bm S)); 

とすれば良いことが分かる。

** まとめると [#n6c754a0]

&math(
\delta \bm S = \left(1+\frac{|\Delta t\dot{\bm S}|^2}{3}\right)\Delta t\dot{\bm S}
);

&math(
|\delta \bm S| = \left(1+\frac{|\Delta t\dot{\bm S}|^2}{3}\right)|\Delta t\dot{\bm S}|
);

&math(\bm S\leftarrow\left(1-\frac{|\delta \bm S|^2}{2}\right)(\bm S+\delta \bm S));

という計算をすればよいことになるが・・・どれほど意味があるかはまだ試していない。

* 長距離相互作用について [#f2d32755]

このモデルではスピン・スピン相互作用は再隣接間に限られている。

磁気力は長距離力なので、特に強磁性や反強磁性ではより長距離の相互作用を入れた方が良い場合がありそうに思える。

* コメント・質問 [#dbe28f3c]

#article_kcaptcha


Counter: 6316 (from 2010/06/03), today: 1, yesterday: 0