ALPS 2 Tutorials:MC-01 Equilibration/ja

From ALPS
Jump to: navigation, search


熱平衡化

一般的な経験則: 全てのモンテカルロ計算には、測定の前の熱平衡化が必要である

例:局所更新古典モンテカルロ

例として、1辺の長さ L=48 の正方格子上のイジング模型のモンテカルロ計算をとりあげます。

コマンドラインからの、計算の準備及び実行

用いるパラメータファイル parm1a は以下のとおりです:

LATTICE="square lattice"
T=2.269186
J=1
THERMALIZATION=10000
SWEEPS=50000  
UPDATE="local"
MODEL="Ising"
{L=48;}

このパラメータファイル(プレーンテキスト)をXML ファイルに変換して、spinmc を実行します:

parameter2xml parm1a
spinmc --Tmin 10 --write-xml parm1a.in.xml

Python を用いた計算の準備及び実行

この節ではシミュレーションの準備・実行・プロッティングを行う Python スクリプトの説明をします。スクリプト全体は tutorial1a.py にあります.

まずパラメータを用意します:

import pyalps

parms = [{
  'LATTICE'         : "square lattice",
  'MODEL'           : "Ising",
  'L'               : 48,
  'J'               : 1.,
  'T'               : 2.269186,
  'THERMALIZATION'  : 10000,
  'SWEEPS'          : 50000,
}]

次にインプットファイル(XML) を書き出し、spinmc を実行します:

input_file = pyalps.writeInputFiles('parm1a',parms)
pyalps.runApplication('spinmc', input_file, Tmin=10, writexml=True)

計算の評価とプロッティング

すべての計算結果ファイルのリストを得ます:

files = pyalps.getResultFiles(prefix='parm1a')

欲しいデータ、今回は磁化の絶対値 |Magnetization| の時系列を取り出します:

ts_M = pyalps.loadTimeSeries(files[0], '|Magnetization|');

結果を可視化します:

import matplotlib.pyplot as plt
plt.plot(ts_M)
plt.show()

時系列を見ることで、ユーザ自身の目で計算している系が平衡状態に達しているかを判断できます。

便利なツール: pyalps.checkSteadyState

ALPS Python には計算した物理量が熱平衡状態での値に達しているのかを見る便利なツールがあります。 原理を知りたい方は このページを見てください.

使い方は次のとおりです。ここでは |Magnetization| で調べます(信頼水準のデフォルトは63% です):

import pyalps
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm1a'), '|Magnetization|');
data = pyalps.checkSteadyState(data);

信頼水準の値を他の値、例えば90% にしたいなら以下のようにしてください:

data = pyalps.checkSteadyState(data, confidenceInterval=0.9);

Vistrails を用いて計算の準備と実行をする

Vistrails で計算をする場合はmc-01b-equilibration-and-convergence.vt を使ってください.

計算の収束

平衡化の時と同じ模型を用いて、計算の収束について説明します。

Python を使う

Python を使うのは簡単です:

import pyalps
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm1a'), '|Magnetization|');
data = pyalps.checkConvergence(data);


© 2013 by Matthias Troyer, Ping Nang Ma