Difference between revisions of "ALPS 2 Tutorials:MC-02 Susceptibilities/ja"

From ALPS
Jump to: navigation, search
(コマンドラインでの計算の実行)
m (Text replace - "/tutorials2.0.0/" to "/tutorials2.1.0/")
Line 2: Line 2:
  
  
<!--In this tutorial we will learn to calculate susceptibilities for classical and quantum Heisenberg models and contrast the behavior of chains and ladders as well as classical and quantum models. The parameter files, Python scripts and Vistrails files for this tutorial are available in the directory [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities mc-02-susceptibilities]-->
+
<!--In this tutorial we will learn to calculate susceptibilities for classical and quantum Heisenberg models and contrast the behavior of chains and ladders as well as classical and quantum models. The parameter files, Python scripts and Vistrails files for this tutorial are available in the directory [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities mc-02-susceptibilities]-->
このチュートリアルでは古典的、量子ハイゼンベルグモデルの磁化率や梯子鎖の計算手法を述べます。このチュートリアルで紹介するパラメータファイル、Pythonスクリプト、Vistrailsファイルは[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities mc-02-susceptibilities]ディレクトリにあります。
+
このチュートリアルでは古典的、量子ハイゼンベルグモデルの磁化率や梯子鎖の計算手法を述べます。このチュートリアルで紹介するパラメータファイル、Pythonスクリプト、Vistrailsファイルは[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities mc-02-susceptibilities]ディレクトリにあります。
  
  
Line 11: Line 11:
 
=== コマンドラインでの計算の実行 ===
 
=== コマンドラインでの計算の実行 ===
  
[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/parm2a parm2a ]は、クラスターアップデートを用いた温度(T=0.05,0.1,...1.5)、60サイトの一次元鎖の古典ハイゼンベルグモンテカルロシミュレーションのパラメータファイルです。コマンドラインでの計算の実行にあたり、最初にパラメータファイルを生成します。
+
[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/parm2a parm2a ]は、クラスターアップデートを用いた温度(T=0.05,0.1,...1.5)、60サイトの一次元鎖の古典ハイゼンベルグモンテカルロシミュレーションのパラメータファイルです。コマンドラインでの計算の実行にあたり、最初にパラメータファイルを生成します。
  
 
  LATTICE="chain lattice"
 
  LATTICE="chain lattice"
Line 66: Line 66:
 
=== Pythonを使った計算の実行 ===
 
=== Pythonを使った計算の実行 ===
  
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.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.1.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]. The first parts of this script imports the required modules and then prepares the input files as a list of Python dictionaries:-->
Pythonを使った計算の実行方法を記述したスクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]を使用します。スクリプトの最初の部分で計算モデルや、入力ファイルのインポートをおこないます。
+
Pythonを使った計算の実行方法を記述したスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]を使用します。スクリプトの最初の部分で計算モデルや、入力ファイルのインポートをおこないます。
  
 
  import pyalps
 
  import pyalps
Line 101: Line 101:
 
=== シミュレーションの評価とPythonを使ったプロット ===
 
=== シミュレーションの評価とPythonを使ったプロット ===
  
<!--To load the results and prepare plots we load the results from the output files and collect the susceptibility as a function of temperature from all output files starting with <tt>parm2a</tt>. The script is again in [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]-->
+
<!--To load the results and prepare plots we load the results from the output files and collect the susceptibility as a function of temperature from all output files starting with <tt>parm2a</tt>. The script is again in [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]-->
計算結果を解析し、温度の関数としての磁化率のプロットをおこないます。出力ファイルから<tt>parm2a</tt>を用いて、該当の計算結果データを採取します。このスクリプトは[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]を参照してください。
+
計算結果を解析し、温度の関数としての磁化率のプロットをおこないます。出力ファイルから<tt>parm2a</tt>を用いて、該当の計算結果データを採取します。このスクリプトは[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2a.py tutorial2a.py]を参照してください。
  
 
  data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm2a'),'Susceptibility')
 
  data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm2a'),'Susceptibility')
Line 120: Line 120:
 
=== Vistrailsを使った計算の実行 ===
 
=== Vistrailsを使った計算の実行 ===
  
<!--To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] and look at the workflow labeled "Classical Heisenberg chain". Click on "Execute" to prepare the input file, run the simulation and create the output figure.-->
+
<!--To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] and look at the workflow labeled "Classical Heisenberg chain". Click on "Execute" to prepare the input file, run the simulation and create the output figure.-->
  
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]を開き、"Classical Heisenberg chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
+
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]を開き、"Classical Heisenberg chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
  
 
=  1次元古典ハイゼンベルグ梯子  ==
 
=  1次元古典ハイゼンベルグ梯子  ==
Line 128: Line 128:
 
Heisenberg梯子も同じような手順で求めることができます。主な差異(parm2b*参照)は<tt>LATTICE</tt>の変化と<tt>J0</tt>,<tt>J1</tt>の2つのカップリングです。
 
Heisenberg梯子も同じような手順で求めることができます。主な差異(parm2b*参照)は<tt>LATTICE</tt>の変化と<tt>J0</tt>,<tt>J1</tt>の2つのカップリングです。
  
コマンドラインでの計算実行で、最初にパラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/parm2b parm2b ]を生成します。
+
コマンドラインでの計算実行で、最初にパラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/parm2b parm2b ]を生成します。
  
 
  LATTICE="ladder"
 
  LATTICE="ladder"
Line 141: Line 141:
  
 
入力ファイルは上記のようになり、シミュレーション自体はこれまで紹介してきた方法と同じです。
 
入力ファイルは上記のようになり、シミュレーション自体はこれまで紹介してきた方法と同じです。
上記の一連のハイゼンベルグ梯子計算のPythonスクリプト [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2b.py tutorial2b.py]の修正点は、次の3点です。
+
上記の一連のハイゼンベルグ梯子計算のPythonスクリプト [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2b.py tutorial2b.py]の修正点は、次の3点です。
  
 
* ファイル名param2a:parm2b
 
* ファイル名param2a:parm2b
Line 148: Line 148:
  
  
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]を開き、"Classical Heisenberg ladder"のワークフローを参照、実行してください。
+
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]を開き、"Classical Heisenberg ladder"のワークフローを参照、実行してください。
  
 
==  質疑  ==
 
==  質疑  ==
Line 165: Line 165:
 
=== コマンドラインでの計算の実行 ===
 
=== コマンドラインでの計算の実行 ===
  
<!--To set up and run the simulation on the command line you first create a parameter file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/parm2c parm2c ]:-->
+
<!--To set up and run the simulation on the command line you first create a parameter file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/parm2c parm2c ]:-->
コマンドラインでの計算実行用のパラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/parm2c parm2c ]を作成します。
+
コマンドラインでの計算実行用のパラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/parm2c parm2c ]を作成します。
  
 
     LATTICE="chain lattice"  
 
     LATTICE="chain lattice"  
Line 203: Line 203:
 
=== Pythonを使った実行方法 ===
 
=== Pythonを使った実行方法 ===
  
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py]. The first part of the script is as above except for the change in filename to parm2c and the change in parameters:-->
+
<!--To set up and run the simulation in Python we use the script  [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py]. The first part of the script is as above except for the change in filename to parm2c and the change in parameters:-->
次にPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py]を用いた計算の実行方法を述べます。サンプル計算ではコマンドラインでの計算実行で用いたparm2cを使用します。
+
次にPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py]を用いた計算の実行方法を述べます。サンプル計算ではコマンドラインでの計算実行で用いたparm2cを使用します。
  
 
  input_file = pyalps.writeInputFiles('parm2c',parms)
 
  input_file = pyalps.writeInputFiles('parm2c',parms)
Line 211: Line 211:
 
=== シミュレーションの評価とPython、Vistrailsを使ったプロット方法 ===
 
=== シミュレーションの評価とPython、Vistrailsを使ったプロット方法 ===
  
<!--The plotting is again nearly identical to before - up to a change in title and file names. The script is script is again in [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py].-->
+
<!--The plotting is again nearly identical to before - up to a change in title and file names. The script is script is again in [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py].-->
図のプロット方法はタイトルとファイル名以外は前に紹介したものと同じです。こちらのコード[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py]を参考にしてください。
+
図のプロット方法はタイトルとファイル名以外は前に紹介したものと同じです。こちらのコード[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2c.py tutorial2c.py]を参考にしてください。
  
<!--To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] and look at the workflow labeled "chain magnetization". Click on "Execute" to prepare the input file, run the simulation and create the output figure.-->
+
<!--To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] and look at the workflow labeled "chain magnetization". Click on "Execute" to prepare the input file, run the simulation and create the output figure.-->
Vistrailsを使用した計算の実行チュートリアルファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]を開き、"chain magnetization"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
+
Vistrailsを使用した計算の実行チュートリアルファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]を開き、"chain magnetization"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
  
 
==  1次元量子ハイゼンベルグ梯子  ==
 
==  1次元量子ハイゼンベルグ梯子  ==
  
 
インプットファイルと実行スクリプトを精査してください。
 
インプットファイルと実行スクリプトを精査してください。
コマンドラインでの実行方法、パラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/parm2d parm2d ]、Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2d.py tutorial2d.py]、Vistrailsチュートリアルファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]になります。
+
コマンドラインでの実行方法、パラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/parm2d parm2d ]、Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2d.py tutorial2d.py]、Vistrailsチュートリアルファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]になります。
  
<!--To set up and run the simulation on the command line you first create a parameter file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/parm2d parm2d ]. Change the LATTICE parameter and set two couplings, J0 and J1 both to +1. Run the simulations as for the chain above
+
<!--To set up and run the simulation on the command line you first create a parameter file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/parm2d parm2d ]. Change the LATTICE parameter and set two couplings, J0 and J1 both to +1. Run the simulations as for the chain above
  
Also the Python script  [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2d.py tutorial2d.py] only needs changes in the file name and the parameters.
+
Also the Python script  [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2d.py tutorial2d.py] only needs changes in the file name and the parameters.
  
To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] and look at the workflow labeled "ladder magnetization".-->
+
To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] and look at the workflow labeled "ladder magnetization".-->
  
 
= シミュレーションの統合 =
 
= シミュレーションの統合 =
Line 235: Line 235:
 
== Python ==
 
== Python ==
  
<!--After running all four simulations you can use the script [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2full.py tutorial2full.py].-->
+
<!--After running all four simulations you can use the script [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2full.py tutorial2full.py].-->
4種類のシミュレーション実行後、スクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/tutorial2full.py tutorial2full.py]を使用してみてください。
+
4種類のシミュレーション実行後、スクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/tutorial2full.py tutorial2full.py]を使用してみてください。
  
 
<!--First load all results and flatten the data structure to one list of results:-->
 
<!--First load all results and flatten the data structure to one list of results:-->
Line 278: Line 278:
  
 
== Vistrails ==
 
== Vistrails ==
<!--The same plot can also be easily created in Vistrails in the file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] by executing the workflow labeled "all combined".-->
+
<!--The same plot can also be easily created in Vistrails in the file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt] by executing the workflow labeled "all combined".-->
  
上記と同じプロットはVistraisでも容易に作成できます。ファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]のラベル"all combined"です。
+
上記と同じプロットはVistraisでも容易に作成できます。ファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-02-susceptibilities/mc-02-susceptibilities.vt mc-02-susceptibilities.vt]のラベル"all combined"です。
  
 
= 質疑  =
 
= 質疑  =

Revision as of 21:09, 10 May 2012


このチュートリアルでは古典的、量子ハイゼンベルグモデルの磁化率や梯子鎖の計算手法を述べます。このチュートリアルで紹介するパラメータファイル、Pythonスクリプト、Vistrailsファイルはmc-02-susceptibilitiesディレクトリにあります。


1次元古典ハイゼンベルグモデルの磁化率

1次元古典ハイゼンベルグ鎖

コマンドラインでの計算の実行

parm2a は、クラスターアップデートを用いた温度(T=0.05,0.1,...1.5)、60サイトの一次元鎖の古典ハイゼンベルグモンテカルロシミュレーションのパラメータファイルです。コマンドラインでの計算の実行にあたり、最初にパラメータファイルを生成します。

LATTICE="chain lattice"
L=60
J=-1
THERMALIZATION=15000
SWEEPS=500000 
UPDATE="cluster" 
MODEL="Heisenberg"
{T=0.05;}
{T=0.1;}
{T=0.2;}
{T=0.3;}
{T=0.4;}
{T=0.5;}
{T=0.6;}
{T=0.7;}
{T=0.8;}
{T=0.9;}
{T=1.0;}
{T=1.25;}
{T=1.5;}

そして、次のコマンドで計算を実行させます。

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

次に、"spinmc_evaluate"モジュールを用いて熱力学的観測値などに関する様々な物理量を求めます。シミュレーションで得られた結果を解析し、出力結果をXMLファイルとして生成します。

$ spinmc_evaluate --write-xml parm2a.taskp[1-15].out.xml

出力結果を格納したファイルは、parm2a.task[1-15].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 parm2a.task[1-15].out.run

この操作によってモンテカルロ計算から摘出された情報を含む、XML形式のタスクファイルparm2a.task[1-15].out.run.xmlが生成されます。


計算結果をプロットするには、後述するPython解析ツールの利用を推奨します。

Pythonを使った計算の実行

Pythonを使った計算の実行方法を記述したスクリプトtutorial2a.pyを使用します。スクリプトの最初の部分で計算モデルや、入力ファイルのインポートをおこないます。

import pyalps
import matplotlib.pyplot as plt
import pyalps.plot
parms = []
for t in [0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0]:
   parms.append(
       { 
         'LATTICE'        : "chain lattice", 
         'T'              : t,
         'J'              : -1 ,
         'THERMALIZATION' : 10000,
         'SWEEPS'         : 500000,
         'UPDATE'         : "cluster",
         'MODEL'          : "Heisenberg",
         'L'              : 60
       }
   )

計算の実行には、Python起動ツールalpspythonvispythonを使用します。

次に、ジョブファイルをXML形式に変換します。

input_file = pyalps.writeInputFiles('parm2a',parms)
pyalps.runApplication('spinmc',input_file,Tmin=5,writexml=True)

コマンドラインでの実行方法で計算した結果と同じアウトプットファイルが得られます。

シミュレーションの評価とPythonを使ったプロット

計算結果を解析し、温度の関数としての磁化率のプロットをおこないます。出力ファイルからparm2aを用いて、該当の計算結果データを採取します。このスクリプトはtutorial2a.pyを参照してください。

data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm2a'),'Susceptibility')
susceptibility = pyalps.collectXY(data,x='T',y='Susceptibility')

プロットをおこなうために、pyalps.plot.plotを使用し、タイトルやラベルなどの設定をおこないます。

plt.figure()
pyalps.plot.plot(susceptibility)
plt.xlabel('Temperature $T/J$')
plt.ylabel('Susceptibility $\chi J$')
plt.ylim(0,0.22)
plt.title('Classical Heisenberg chain')
plt.show()

Vistrailsを使った計算の実行

Vistrailsを用いた計算の実行のチュートリアルmc-02-susceptibilities.vtを開き、"Classical Heisenberg chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。

1次元古典ハイゼンベルグ梯子 =

Heisenberg梯子も同じような手順で求めることができます。主な差異(parm2b*参照)はLATTICEの変化とJ0,J1の2つのカップリングです。

コマンドラインでの計算実行で、最初にパラメータファイルparm2b を生成します。

LATTICE="ladder"
L=60
J0=-1
J1=-1
THERMALIZATION=15000
SWEEPS=150000
UPDATE="cluster"
MODEL="Heisenberg"
...

入力ファイルは上記のようになり、シミュレーション自体はこれまで紹介してきた方法と同じです。 上記の一連のハイゼンベルグ梯子計算のPythonスクリプト tutorial2b.pyの修正点は、次の3点です。

  • ファイル名param2a:parm2b
  • パラメータLATTICE:ladder
  • J0、J1カップリングの設定


Vistrailsを用いた計算の実行のチュートリアルmc-02-susceptibilities.vtを開き、"Classical Heisenberg ladder"のワークフローを参照、実行してください。

質疑

  • 磁化率は格子にどのような関係があるかわかりますか?
  • 大規模格子や異なる格子(立方格子、三角格子等、lattices.xmlを見てください)でどうなるか計算してみてください。

1次元量子ハイゼンベルグモデルの磁化率

1次元量子ハイゼンベルグ鎖

量子モデルによる計算では、計算モデルにALPSライブラリを使用します。計算プログラムはALPS looper QMCコードを用います。量子モデルでは負符号問題に注意してください。


コマンドラインでの計算の実行

コマンドラインでの計算実行用のパラメータファイルparm2c を作成します。

   LATTICE="chain lattice" 
   MODEL="spin"
   local_S=1/2
   L=60
   J=1
   THERMALIZATION=15000
   SWEEPS=150000
   ALGORITHM="loop"
   {T=0.05;}
   {T=0.1;}
   {T=0.2;}
   {T=0.3;}
   {T=0.4;}
   {T=0.5;}
   {T=0.6;}
   {T=0.7;}
   {T=0.75;}
   {T=0.8;}
   {T=0.9;}
   {T=1.0;}
   {T=1.25;}
   {T=1.5;}
   {T=1.75;}
   {T=2.0;}

looperコードはアルゴリズムを選択するALGORITHMパラメータの設定が必要です。 実行は次のようにおこないます。

 parameter2xml parm3a
 loop parm3a.in.xml

Pythonを使った実行方法

次にPythonスクリプトtutorial2c.pyを用いた計算の実行方法を述べます。サンプル計算ではコマンドラインでの計算実行で用いたparm2cを使用します。

input_file = pyalps.writeInputFiles('parm2c',parms)
pyalps.runApplication('loop',input_file)

シミュレーションの評価とPython、Vistrailsを使ったプロット方法

図のプロット方法はタイトルとファイル名以外は前に紹介したものと同じです。こちらのコードtutorial2c.pyを参考にしてください。

Vistrailsを使用した計算の実行チュートリアルファイルmc-02-susceptibilities.vtを開き、"chain magnetization"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。

1次元量子ハイゼンベルグ梯子

インプットファイルと実行スクリプトを精査してください。 コマンドラインでの実行方法、パラメータファイルparm2d 、Pythonスクリプトtutorial2d.py、Vistrailsチュートリアルファイルmc-02-susceptibilities.vtになります。


シミュレーションの統合

最後に、4つのシミュレーションを統合し実行する方法を紹介します。

Python

4種類のシミュレーション実行後、スクリプトtutorial2full.pyを使用してみてください。

全計算結果をロードし、データ構造をフラットにします。

import pyalps
import matplotlib.pyplot as plt
import pyalps.plot
data = pyalps.loadMeasurements(pyalps.getResultFiles(),'Susceptibility')
data = pyalps.flatten(data)

温度の関数としての磁化率を収集し、格子、モデルパラメータの値に応じてデータを設定します。

susceptibility = pyalps.collectXY(data,x='T',y='Susceptibility',foreach=['MODEL','LATTICE'])

次に、Pythonコードで実用的な入出力ラベル(名称)の設定をおこないます。

for s in susceptibility:
  if s.props['LATTICE']=='chain lattice':
    s.props['label'] = "chain"
  elif s.props['LATTICE']=='ladder':
    s.props['label'] = "ladder"
  if s.props['MODEL']=='spin':
    s.props['label'] = "quantum " + s.props['label']
  elif s.props['MODEL']=='Heisenberg':
    s.props['label'] = "classical " + s.props['label']

最後に、

plt.figure()
pyalps.plot.plot(susceptibility)
plt.xlabel('Temperature $T/J$')
plt.ylabel('Susceptibility $\chi J$')
plt.ylim(0,0.25)
plt.legend()
plt.show()

Vistrails

上記と同じプロットはVistraisでも容易に作成できます。ファイルmc-02-susceptibilities.vtのラベル"all combined"です。

質疑

  • 古典計算と量子計算の間に違いはありますか?
  • 格子によって磁化率はどうかわりますか?
  • なぜ磁化率が変わるのかわかりますか?

参考までに、次図は、4つの計算結果をまとめてプロットしたものです。

vt_id:3 version:37


© 2003-2010 by Simon Trebst, Fabien Alet, Matthias Troyer, Synge Todo, and Emanuel Gull