ログイン

keisanjikkenI2022

計算実験1(モンテカルロ法による相転移現象)

短縮アドレス https://bit.ly/3ku6HKj

  • 2016年のノーベル物理学賞はこの課題と関連深い、トポロジーに関する研究に対して与えられました。
  • 2022年度の日程は5/2, 5/9, 5/16です。

配布資料・参考資料等

レポート提出

  • レポートのテンプレート:report_temp2014.doc(67)
  • レポート提出締切:WebClassから提出してください。締切は5/31(火)とします。

3年生前期の計算実験1の実験テーマのひとつです。物理学の主要科目である「熱・統計力学」,
物理実験の「磁気ヒステレシス」や「誘電体」と関係深い理論・シミュレーションを学ぶテーマです。
最終更新時間:2023年05月08日 14時29分57秒

ノーベル物理学賞

アメリカの物理学者, ケネス・G・ウィルソン(Kenneth Geddes Wilson)は
「相転移に関連した臨界現象に関する研究
(Theory for critical phenomena in connection with phase transitions)」により、
1982年のノーベル物理学賞を受賞している.

内容

実験の目的

  • 身近な物理現象である「相転移」とは何かを計算実験を通して学ぶ
  • 物質中での電磁気学としての磁性体について学ぶ
  • 磁化, 比熱, 磁化率など物理量を求める方法について学ぶ
  • キーワード: 電磁気学, 熱・統計力学

背景

  • スピンとは量子力学的自由度であるが, 古典的にみなしてよい場合があることが知られている. (この実験ではスピンの量子効果については無視し, 磁気モーメントというベクトル自由度のみだと考える. )
  • 遷移金属(例えば, Ti, V, Cr, Mn, Fe, Co, Ni, Cu)などが, 磁性原子と呼ばれ, 物質中で磁気モーメントを持つことが多い
    • スピン間の相互作用は交換相互作用と呼ばれ, クーロン相互作用の量子力学的な相互作用である. ただし, ここでは量子力学的な効果には深入りしない. (基本的に物質中の原子間, スピン間等の相互作用を正しく求めるには量子力学が必要である. そのような意味で分子動力学にも量子力学が必要となる)
  • 相互作用パラメータが与えられれば, スピンの最安定な構造は決定されるが, 温度によって必ずしも最安定構造が実現されるとは限らない.

1日目

数え上げのプログラム

kazoeage0.c(72)
(fkazoeage0.f(30), fortran版)

コンパイルの仕方:

gcc -lm kazoeage0.c
補足
J:交換相互作用,T_max:最大温度,dt:温度の刻み,kb:ボルツマン定数,nspin:スピン数
E[i]:エネルギー
M[i]:磁化

※printf内の%4dや%5.2fの数字は4桁まで表示する、5桁で小数点以下を2桁まで表示するというような意味。
%dや%fという風に記述しても問題ない。詳しくはC言語の本を参照。

2日目

動かしてみよう... イジングスピン模型のモンテカルロシミュレーション

パラメータを設定してコンパイルする
出力結果をgnuplotで可視化してみる
ising0.c(129)
(fising0.f(33):fortran版)
anim_spin.gp(66)

  • コンパイル&実行
gcc ising0.c -lm -o ising0
./ising0
※ math.h をinclude しているので -lm をつけること.
※ 実行するとstep.datとstep_spin.datというファイルが生成される.
  • 可視化

ターミナルでgnuplotを立ち上げて,

gnuplot
>i=0
>load 'anim_spin.gp'

パラメータの変更

ising0.cの上の方に下記のパラメータがあるので、変更する。
温度を変化させて強磁性と常磁性が変わる温度を確認してみよう。

//Parameters
#define nspin   32
#define J       1.0
#define nmcs    1000
#define border  0
#define H_max   0.0
#define T_max  10.0
#define scale   0.4

磁化の温度依存性を観察してみよう. 相転移は起こるだろうか?

補足:三項演算子
プログラム中では周期境界条件部分に三項演算子というものが使われています. 
条件が真なら処理1を、偽なら処理2を行います。
条件? 処理1:処理2;

磁場による磁気秩序の変化をみてみよう(磁気ヒステレシス)

強磁性体(強誘電体)では相転移温度以下で磁化(電気分極)の磁場変化(電場変化)に興味深い履歴現象がみられます.
計算実験でそれを確かめてみましょう. 参考プログラムをダウンロードして、プログラムを読んでみましょう.
isingh.c(98)
data.datというファイルに磁場, エネルギー, 磁化が出力されるのでプロットしてみましょう.

3日目

温度, 磁化の絶対値の温度依存性をプロットしてみよう

ising01.cを用いてkazoeage0.cで書いたのと同じような図を書いてみよう.
i_stepの外側に温度のループを加えてみよう. ここでを温度刻みとして,
dT=0.1として, 温度10から0.1まで
冷やすループ文として,

for( Tstep = 100 ; T > 0.1 ;  Tstep--){
T = Tstep * dT;
{省略: istepのループ}
}

のように書ける.

その場合, 温度ループの最後に, 下記のように足し合わせている
変数を初期化する必要がある.

mcs = 1;
magnetization_sum = 0.0;
energy_sum = 0.0;
magnetization = 0.0;
energy = 0.0;

※温度依存性を見たいときは, 温度Tはファイルに出力してないので, 書き加える必要がある.

※ising01.cは磁化を計算しているので、磁化の絶対値を計算する場合は

magnetization_sum += fabs(total_magnetization(s));

とする必要がある.
※kazoeage0.cと比較する場合

kazoeage0.c内を
    E[i] = energy(T)/(nspin*nspin);
(M[i]も同様にnspin*nspinで割る)

※ising01.cでは1スピンあたりのE,Mを計算しており, kazoeage0.cでは全体のE,Mを計算しているので,
全スピン数で割る必要がある.

または 
ising01.c内を
     //magnetization /= (nspin*nspin);
     //energy /= (nspin*nspin);
とコメントアウトしておく.

解らない場合は, 磁場のバージョンisingh.c(98)を参考にしてください。

  • 転移温度を見積もってみよう

スカラーからベクトルへ. スピン渦の観測

xy_step2.c(88)をダウンロードして, コンパイルしてみよう.
計算条件を決定するinput_step_xy.dat(39)をダウンロードして中身を見ると、

16  x, y方向への繰り返し数
16  2piを分割する数
1.0  交換相互作用
0.1  温度
0.0  X方向の磁場
0.0  Y方向の磁場

となっている.
xy_step2.c(88)の計算を実行する.
実行すると, "input number" と聞かれるので, 表示された条件で良ければ"1"を入力しEnterを押す.
xy_spin16.gp(61)
をダウンロードして,
gnuplotを立ち上げ,

i=0
load 'xy_spin16.gp'

とするとスピン渦が観測できる.

※急冷する場合は温度ループを付け足す必要がある.
(例 : T=20→T=0.1となるように設定した渦 : KT.eps(36))

渦の分類とそのプログラム

uzu_kadai.c(49)
uzu_kadai.cのプログラムを用いて, 渦について考えてみよう.
コンパイル

gcc -lm uzu_kadai.c

実行すると巻き数kとθ0の入力を求められる.
共に整数を入力する.

k = : 巻き数
theta0 = : nπのnを入力する (入力した数*πで計算される)

uzu_data.datの中に渦のデータが書き込まれる.

gnuplot

set size square
set format x""
set format y""
plot "uzu_data.dat" u 1:2:3:4 w vec notitle

渦の一例 : k1_th0.eps(28), k-1_thp2.eps(43)

print.pdf(50)
print.pdf(50)
jikken-mc5.pdf(54)
jikken-mc5.pdf(54)
kazoeage.c(30)
kazoeage0.c(72)
anim_spin.gp(66)
uzu_kadai.c(49)
KT.eps(36)
k-1_thp2.eps(43)
k1_th0.eps(28)
uzu_kadai.c(49)
uzu_kadai.c(49)

付録

ボルツマン因子の直感的理解

boltzman.gp(36)

挑戦問題

1次元の任意の数のイジング模型について, エネルギー, 縮退数を数え上げる
プログラムを作りましょう. 可能であれば二次元版も作ってみましょう.
ちなみに下記は石井が作ったプログラムの1次元版のN=25の結果です.

組合せ数= 33554432
-24. 2
-22. 48
-20. 552
-18. 4048
-16. 21252
-14. 85008
-12. 269192
-10. 692208
-8. 1470942
-6. 2615008
-4. 3922512
-2. 4992288
 0. 5408312
 2. 4992288
 4. 3922512
 6. 2615008
 8. 1470942
 10. 692208
 12. 269192
 14. 85008
 16. 21252
 18. 4048
 20. 552
 22. 48
 24. 2

幾つのNまで計算するプログラムを作ることができるか。

ソースファイルなど

--

ising01変更部.pdf(39)

相転移とは

例えば水(H2O)の場合は, 1気圧で273K(摂氏0度)で液相から固相へ相転移します。
他にも物質はその性質(物性)に依存した
様々な相転移を, 温度, 圧力, 磁場, 電場, 光などの諸条件を変えることで
示すことが知られています.

  • 磁性体(例:常磁性ー強磁性転移)
  • 誘電体(例:常誘電ー強誘電転移)
  • 金属(例:金属ー絶縁体(半導体)転移)
  • 超伝導体(例:常伝導ー超伝導転移)
  • 構造相転移(例:立方晶ー斜方晶転移)
  • ガラス転移(例:非晶質ー液体転移)

など。
光を照射したときだけ起こる相転移を

  • 光誘起相転移

のように呼ぶことがあり、応用的な観点から
も精力的に研究されています。

相転移の分類

一次相転移と二次相転移があることが知られています。二次相転移のことを秩序ー無秩序転移とも呼びます。
(order-disorder transition)

参考文献