Difference between revisions of "ALPS 2.1 Tutorials:MC-03 Magnetization/ja"
m (versioning BOT: creating ALPS 2.1. r4870. release_date: 2012-05-31 23:59:59+00:00.) |
m (versioning BOT: creating ALPS 2.1. Update links.) |
||
Line 1: | Line 1: | ||
− | {{Languages| | + | {{Languages|ALPS_2.1_Tutorials:MC-03_Magnetization}} |
Latest revision as of 10:54, 12 September 2013
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
Contents
量子スピンモデルの磁化曲線の計算
ループモデルでは磁場中でうまく機能しないため、このチュートリアルでは、ループモデルの替わりに有向ループSSEアプリケーションを使用し、量子スピンモデルでの磁化曲線の計算を紹介します。
磁場中の1次元ハイゼンベルグ鎖
コマンドラインでのシミュレーションの準備と実行
パラメータファイルparm3a は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数20,温度T=0.08,磁場はh=0,0.1,....,2.5の設定しています。
LATTICE="chain lattice" MODEL = "spin" LATTICE_LIBRARY="../lattices.xml" MODEL_LIBRARY="../models.xml" local_S=1/2 L=20 J=1 T=0.08 THERMALIZATION=2000 SWEEPS=10000 {h=0;} {h=0.1;} {h=0.2;} {h=0.3;} {h=0.4;} {h=0.5;} {h=0.6;} {h=0.7;} {h=0.8;} {h=0.9;} {h=1.0;} {h=1.2;} {h=1.4;} {h=1.6;} {h=1.8;} {h=2.0;} {h=2.2;} {h=2.4;} {h=2.5;}
以下の標準的な計算手順に従い、量子SSEコードを用いて計算することができます。結果はXML形式で出力され、webブラウザで確認が可能です。
parameter2xml parm3a dirloop_sse --Tmin 10 --write-xml parm3a.in.xml
次に、"dirloop_sse_evaluate"モジュールを用いてSpecific Heat(比熱)を求めます。シミュレーションで得られた結果を解析し、出力結果をXMLファイルとして生成します。
$ dirloop_sse_evaluate --write-xml parm3a.task[1-19].out.xml parsing task files ... Loading information about run 1 from file $parm3_dir/parm3a.task1.out.run1 Specific Heat: 0.0299212 +/- 0.105 (task1の場合)
出力結果を格納したファイルは、上書きされますので注意してください。
シミュレーション出力ファイルには、全計算がおこなわれた後の計算結果がだけが格納されています。ここのモンテカルロステップでの計算の詳細は、各チェックポイント情報を格納しているチェックポイントファイルをXML形式に変換することによって知ることが可能です。convert2xmlツールを次のように使用します。
convert2xml parm3a.task[1-19].out.run
この操作によってモンテカルロ計算から摘出された情報を含む、XML形式のタスクファイルparm3a.task[1-19].out.run.xmlが生成されます。
物理量に関するプロットをおこないたい場合は、後述するPython解析ツールを利用してください。
Pythonを使用したシミュレーションの準備と実行
Pythonで計算の実行を設定します。Pythonスクリプトtutorial3a.pyを参照してください。
import pyalps import matplotlib.pyplot as plt import pyalps.pyplot
parms = [] for h in [0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.5]: parms.append( { 'LATTICE' : "chain lattice", 'MODEL' : "spin", 'local_S' : 0.5, 'T' : 0.08, 'J' : 1 , 'THERMALIZATION' : 1000, 'SWEEPS' : 20000, 'L' : 20, 'h' : h } )
alpspythonやvispythonを用いてPythonスクリプトを実行します。
次に、ジョブファイルをXML形式に変換し、dir_loop_sseシミュレーションを実行します。
input_file = pyalps.writeInputFiles('parm3a',parms) res = pyalps.runApplication('dirloop_sse',input_file,Tmin=5)
コマンドラインでおこなった計算結果と同じ出力ファイルが得られます。
Pythonを使用したシミュレーションの評価とプロット
計算結果ファイルをロードし、磁場の関数としての磁化密度の情報を取得します。計算のロード、解析、プロットの手順はPythonスクリプトtutorial3a.pyを参照してください。
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm3a'),'Magnetization Density') magnetization = pyalps.collectXY(data,x='h',y='Magnetization Density')
プロットにはpyalps.pyplot.plotを使用します。適宜、実用的なラベル、タイトル、Y軸の範囲を設定してください。
plt.figure() pyalps.pyplot.plot(magnetization) plt.xlabel('Field $h$') plt.ylabel('Magnetization $m$') plt.ylim(0.0,0.5) plt.title('Quantum Heisenberg chain') plt.show()
Vistrailsを使用したシミュレーションの準備と実行
Vistrailsを用いた計算の実行のチュートリアルmc-03-magnetization.vtを開き、"Quantum Heisenberg chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
磁場中での1次元ハイゼンベルグ梯子
パラメータファイルparm3b は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数40,温度T=0.08,磁場はh=0,0.1,....,3.5の設定しています。
LATTICE="ladder" MODEL = "spin" LATTICE_LIBRARY="../lattices.xml" MODEL_LIBRARY="../models.xml" local_S=1/2 L=20 J0=1 J1=1 T=0.08 ...
入力ファイルの一部を上記に示します。シミュレーションの実行は他の計算と同じ手順です。
Pythonを使用したシミュレーションの実行にはtutorial3b.pyを用います。変更点は次の3点です。
- ファイル名の変更:parm3a->parm3b
- パラメータの変更:LATTICE->ladder
- J0,J1の設定
Vistrailsを用いた計算の実行のチュートリアルmc-03-magnetization.vtを開き、"Quantum Heisenberg ladder"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
計算結果の統合
全計算結果のプロットをおこないます。スクリプトtutorial3full.pyを参照してください。Vistrailsはワークフロー"all combined"を見てください。プロットの結果を次に示します。
質疑
- 磁場の違いはどのように磁化に関与しますか?
- 格子の違いはどのように磁化に関与しますか?
- パラメータWを変えることによって3-leg,4-leg梯子の計算ができます。また、local_Sを設定し、spin-1,spin-3/2の計算が可能です。これらのパラメータによって結果はどうなりますか?