Difference between revisions of "ALPS 2 Tutorials:MC-03 Magnetization/ja"

From ALPS
Jump to: navigation, search
(コマンドラインでのシミュレーションの準備と実行)
(コマンドラインでのシミュレーションの準備と実行)
Line 13: Line 13:
 
=== コマンドラインでのシミュレーションの準備と実行 ===
 
=== コマンドラインでのシミュレーションの準備と実行 ===
  
<!--The parameter file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-03-magnetization/parm3a parm3a ] sets up Monte Carlo simulations of the quantum mechanical S=1/2 Heisenberg model on a one-dimensional chain with 20 sites at fixed temperature T=0.08 for a couple of magnetic fields (h=0, 0.1, ..., 2.5).-->
 
 
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-03-magnetization/parm3a parm3a ]は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数20,温度T=0.08,磁場はh=0,0.1,....,2.5の設定しています。
 
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-03-magnetization/parm3a parm3a ]は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数20,温度T=0.08,磁場はh=0,0.1,....,2.5の設定しています。
  

Revision as of 04:13, 28 March 2012


量子スピンモデルの磁化曲線の計算

ループモデルでは磁場中でうまく機能しないため、このチュートリアルでは、ループモデルの替わりに有向ループ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"モジュールを用いて比熱を求めます。シミュレーションで得られた結果を解析し、出力結果をXMLファイルとして生成します。

$ dirloop_sse_evaluate --write-xml parm3a.task[1-19].out.xml

出力結果を格納したファイルは、上書きされますので注意してください。spinmc_evaluateによって得られる物理量は次の通りです。

  • Binder Cumulant
  • Binder Cumulant U2
  • Binder Cumulant slope
  • Connected Susceptibility
  • Magnetization^2 slope
  • Magnetization^4 slope
  • Specific Heat

シミュレーション出力ファイルには、全計算がおこなわれた後の計算結果がだけが格納されています。ここのモンテカルロステップでの計算の詳細は、各チェックポイント情報を格納しているチェックポイントファイルを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
       }
   )

alpspythonvispythonを用いて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"を見てください。プロットの結果を次に示します。

vt_id:4 version:98

質疑

  • 磁場の違いはどのように磁化に関与しますか?
  • 格子の違いはどのように磁化に関与しますか?
  • パラメータWを変えることによって3-leg,4-leg梯子の計算ができます。また、local_Sを設定し、spin-1,spin-3/2の計算が可能です。これらのパラメータによって結果はどうなりますか?