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

From ALPS
Jump to: navigation, search
m
m (Text replace - "http://alps.comp-phys.org/static/tutorials2.1.0" to "http://alps.comp-phys.org/static/tutorials2.2.0")
Line 13: Line 13:
 
=== コマンドラインでのシミュレーションの準備と実行 ===
 
=== コマンドラインでのシミュレーションの準備と実行 ===
  
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.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.2.0/mc-03-magnetization/parm3a parm3a ]は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数20,温度T=0.08,磁場はh=0,0.1,....,2.5と設定しています。
  
 
  LATTICE="chain lattice"  
 
  LATTICE="chain lattice"  
Line 74: Line 74:
 
=== Pythonを使用したシミュレーションの準備と実行 ===
 
=== Pythonを使用したシミュレーションの準備と実行 ===
  
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]. The first parts of this script imports the required modules and then prepares the input files as a list of Python dictionaries:-->
+
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]. The first parts of this script imports the required modules and then prepares the input files as a list of Python dictionaries:-->
Pythonで計算の実行を設定します。Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]を参照してください。
+
Pythonで計算の実行を設定します。Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]を参照してください。
  
 
  import pyalps
 
  import pyalps
Line 113: Line 113:
 
=== Pythonを使用したシミュレーションの評価とプロット ===
 
=== Pythonを使用したシミュレーションの評価とプロット ===
  
<!--To load the results and prepare plots we load the results from the output files and collect the magntization density as a function of magnetic field from all output files starting with <tt>parm3a</tt>. The script is again in [http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]-->
+
<!--To load the results and prepare plots we load the results from the output files and collect the magntization density as a function of magnetic field from all output files starting with <tt>parm3a</tt>. The script is again in [http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]-->
計算結果ファイルをロードし、磁場の関数としての磁化密度の情報を取得します。計算のロード、解析、プロットの手順はPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]を参照してください。
+
計算結果ファイルをロードし、磁場の関数としての磁化密度の情報を取得します。計算のロード、解析、プロットの手順はPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3a.py tutorial3a.py]を参照してください。
  
 
  data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm3a'),'Magnetization Density')
 
  data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm3a'),'Magnetization Density')
Line 133: Line 133:
 
=== Vistrailsを使用したシミュレーションの準備と実行 ===
 
=== Vistrailsを使用したシミュレーションの準備と実行 ===
  
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/mc-03-magnetization.vt mc-03-magnetization.vt]を開き、"Quantum Heisenberg chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
+
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/mc-03-magnetization.vt mc-03-magnetization.vt]を開き、"Quantum Heisenberg chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
  
 
== 磁場中での1次元ハイゼンベルグ梯子  ==
 
== 磁場中での1次元ハイゼンベルグ梯子  ==
  
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/parm3b  parm3b] は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数40,温度T=0.08,磁場はh=0,0.1,....,3.5の設定としています。  
+
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/parm3b  parm3b] は、S=1/2ハイゼンベルグモデルの量子モンテカルロシミュレーションの設定をしています。次元数1,サイト数40,温度T=0.08,磁場はh=0,0.1,....,3.5の設定としています。  
  
 
  LATTICE="ladder"  
 
  LATTICE="ladder"  
Line 153: Line 153:
 
入力ファイルの一部を上記に示します。シミュレーションの実行は他の計算と同じ手順です。
 
入力ファイルの一部を上記に示します。シミュレーションの実行は他の計算と同じ手順です。
  
Pythonを使用したシミュレーションの実行には[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3b.py tutorial3b.py]を用います。変更点は次の3点です。
+
Pythonを使用したシミュレーションの実行には[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3b.py tutorial3b.py]を用います。変更点は次の3点です。
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3b.py tutorial3b.py]. The changes are again just  
+
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3b.py tutorial3b.py]. The changes are again just  
 
* renaming parm3a into parm3b
 
* renaming parm3a into parm3b
 
* changing the parameter LATTICE to ladder
 
* changing the parameter LATTICE to ladder
Line 162: Line 162:
 
* J0,J1の設定
 
* J0,J1の設定
  
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/mc-03-magnetization.vt mc-03-magnetization.vt]を開き、"Quantum Heisenberg ladder"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
+
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/mc-03-magnetization.vt mc-03-magnetization.vt]を開き、"Quantum Heisenberg ladder"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
  
 
== 計算結果の統合 ==
 
== 計算結果の統合 ==
  
<!--To combine all results  into one plot after running both simulations look at the Python script  [http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3full.py tutorial3full.py] or the Vistrails workflow called "all combined". Here is the combined plot:-->
+
<!--To combine all results  into one plot after running both simulations look at the Python script  [http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3full.py tutorial3full.py] or the Vistrails workflow called "all combined". Here is the combined plot:-->
全計算結果のプロットをおこないます。スクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-03-magnetization/tutorial3full.py tutorial3full.py]を参照してください。Vistrailsはワークフロー"all combined"を見てください。プロットの結果を次に示します。
+
全計算結果のプロットをおこないます。スクリプト[http://alps.comp-phys.org/static/tutorials2.2.0/mc-03-magnetization/tutorial3full.py tutorial3full.py]を参照してください。Vistrailsはワークフロー"all combined"を見てください。プロットの結果を次に示します。
  
 
<vistrail host="alps.comp-phys.org" db="tutorials" vtid="4" version="98" embedworkflow="True" showspreadsheetonly="True"/>
 
<vistrail host="alps.comp-phys.org" db="tutorials" vtid="4" version="98" embedworkflow="True" showspreadsheetonly="True"/>

Revision as of 22:05, 28 September 2013


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

ループアルゴリズムでは磁場中でうまく機能しないため、このチュートリアルでは、ループアルゴリズムの替わりに有向ループ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
       }
   )

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
  • パラメータの変更:chain 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の計算が可能です。これらのパラメータによって結果はどうなりますか?