Difference between revisions of "ALPS 2 Tutorials:MC-05 Bosons/ja"

From ALPS
Jump to: navigation, search
(コマンドラインでのシミュレーションの準備と実行)
m (Text replace - "/tutorials2.0.0/" to "/tutorials2.1.0/")
Line 10: Line 10:
 
=== コマンドラインでのシミュレーションの準備と実行 ===
 
=== コマンドラインでのシミュレーションの準備と実行 ===
  
<!--The parameter file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/parm5a parm5a] sets up Monte Carlo simulations of the quantum Bose Hubbard model on a square lattice with 4x4 sites for a couple of hopping parameters (t=0.01, 0.02, ..., 0.1) using the worm code.-->
+
<!--The parameter file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/parm5a parm5a] sets up Monte Carlo simulations of the quantum Bose Hubbard model on a square lattice with 4x4 sites for a couple of hopping parameters (t=0.01, 0.02, ..., 0.1) using the worm code.-->
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/parm5a parm5a] は、Bose-Hubbardモデルの量子モンテカルロシミュレーションの設定をしています。4×4の正方格子、パラメータ(t=0.01,0.02, ...0.1)でのワームアルゴリズムの使用を設定しています。
+
パラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/parm5a parm5a] は、Bose-Hubbardモデルの量子モンテカルロシミュレーションの設定をしています。4×4の正方格子、パラメータ(t=0.01,0.02, ...0.1)でのワームアルゴリズムの使用を設定しています。
  
 
   LATTICE="square lattice";
 
   LATTICE="square lattice";
Line 63: Line 63:
 
=== 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-05-bosons/tutorial5a.py tutorial5a.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-05-bosons/tutorial5a.py tutorial5a.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.0.0/mc-05-bosons/tutorial5a.py tutorial5a.py]を参照してください。
+
Pythonで計算の実行を設定します。Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/tutorial5a.py tutorial5a.py]を参照してください。
  
 
  import pyalps
 
  import pyalps
Line 100: Line 100:
 
=== 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>parm5a</tt>. The script is again in [http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/tutorial5a.py tutorial5a.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>parm5a</tt>. The script is again in [http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/tutorial5a.py tutorial5a.py]-->
 
Pythonで計算の実行を設定します。Pythonスクリプトtutorial5a.pyを参照してください。
 
Pythonで計算の実行を設定します。Pythonスクリプトtutorial5a.pyを参照してください。
  
Line 118: Line 118:
 
=== Vistrailsを使用したシミュレーションの準備と実行 ===
 
=== Vistrailsを使用したシミュレーションの準備と実行 ===
  
<!--To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/mc-05-bosons.vt mc-05-bosons.vt] and look at the workflow labeled "L=4". 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-05-bosons/mc-05-bosons.vt mc-05-bosons.vt] and look at the workflow labeled "L=4". 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-05-bosons/mc-05-bosons.vt mc-05-bosons.vt]を開き、"L=4"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
+
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/mc-05-bosons.vt mc-05-bosons.vt]を開き、"L=4"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。
  
 
===  質疑  ===  
 
===  質疑  ===  
Line 134: Line 134:
  
  
<!--In the parameter file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/parm5b parm5b] we focus on the region around the critical point for three system sizes L=4,6, and 8:-->
+
<!--In the parameter file [http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/parm5b parm5b] we focus on the region around the critical point for three system sizes L=4,6, and 8:-->
チュートリアルのパラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/parm5b parm5b]です。このサンプルでは、L=4,6,8のシステムサイズで相転移点を求めます。
+
チュートリアルのパラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/parm5b parm5b]です。このサンプルでは、L=4,6,8のシステムサイズで相転移点を求めます。
  
 
  LATTICE="square lattice";
 
  LATTICE="square lattice";
Line 173: Line 173:
 
=== Pythonを使用したシミュレーションの準備と実行と結果解析 ===
 
=== Pythonを使用したシミュレーションの準備と実行と結果解析 ===
  
<!--The Python script [http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/tutorial5b.py tutorial5b.py] similarly prepares the input file and then runs the simulation. we skip this part and instead focus on the evaluation part. We first load the superfluid density (stiffness) into three different data sets, one for each system size L:-->
+
<!--The Python script [http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/tutorial5b.py tutorial5b.py] similarly prepares the input file and then runs the simulation. we skip this part and instead focus on the evaluation part. We first load the superfluid density (stiffness) into three different data sets, one for each system size L:-->
Pythonで計算の実行を設定します。Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/tutorial5b.py tutorial5b.py]を参照してください。最初に、超流動密度(Stiffness)を異なる3つのデータセットにロードします。各サイズはLです。
+
Pythonで計算の実行を設定します。Pythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/tutorial5b.py tutorial5b.py]を参照してください。最初に、超流動密度(Stiffness)を異なる3つのデータセットにロードします。各サイズはLです。
  
 
  data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm5b'),'Stiffness')
 
  data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm5b'),'Stiffness')
Line 200: Line 200:
 
=== Vistrailsを使用したシミュレーションの準備と実行 ===
 
=== Vistrailsを使用したシミュレーションの準備と実行 ===
  
<!--To run the simulation in Vistrails open the file [http://alps.comp-phys.org/static/tutorials2.0.0/mc-05-bosons/mc-05-bosons.vt mc-05-bosons.vt] and look at the workflow labeled "scaling plot". 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-05-bosons/mc-05-bosons.vt mc-05-bosons.vt] and look at the workflow labeled "scaling plot". 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-05-bosons/mc-05-bosons.vt mc-05-bosons.vt]を開き、"scaling plot"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。。プロットの結果を次に示します。
+
Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.1.0/mc-05-bosons/mc-05-bosons.vt mc-05-bosons.vt]を開き、"scaling plot"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。。プロットの結果を次に示します。
  
 
<vistrail host="alps.comp-phys.org" db="tutorials" vtid="5" version="53" embedworkflow="True" showspreadsheetonly="True"/>
 
<vistrail host="alps.comp-phys.org" db="tutorials" vtid="5" version="53" embedworkflow="True" showspreadsheetonly="True"/>

Revision as of 21:09, 10 May 2012


Bose-Hubbardモデルでの量子相転移

このチュートリアルでは、ワームQMCコードを用いたBose-Hubbardモデルでの量子相転移計算方法を紹介します。

Bose-Hubbardモデルでの超流動密度

コマンドラインでのシミュレーションの準備と実行

パラメータファイルparm5a は、Bose-Hubbardモデルの量子モンテカルロシミュレーションの設定をしています。4×4の正方格子、パラメータ(t=0.01,0.02, ...0.1)でのワームアルゴリズムの使用を設定しています。

 LATTICE="square lattice";
 L=4;
 MODEL="boson Hubbard";
 NONLOCAL=0;
 U    = 1.0;
 mu   = 0.5;
 Nmax = 2;
 T = 0.1;
 SWEEPS=500000;
 THERMALIZATION=10000;
 { t=0.01; }
 { t=0.02; }
 { t=0.03; }
 { t=0.04; }
 { t=0.05; }
 { t=0.06; }
 { t=0.07; }
 { t=0.08; }
 { t=0.09; }
 { t=0.1; }


以下の標準的な計算手順に従い、量子ワームコードを用いて計算することができます。

parameter2xml parm5a
worm --Tmin 10 --write-xml parm5a.in.xml

次に、"worm_evaluate"モジュールを用いてCompressibility(圧縮率)を求めます。シミュレーションで得られた結果を解析し、出力結果をXMLファイルとして生成します。

$ worm_evaluate --write-xml parm5.task[1-10].out.xml
parsing task files ...
Loading information about run 1 from file $parm4_dir/parm4.task1.out.run1
Compressibility: 0.136277 +/- 0.000899
(task1の場合)

出力結果を格納したファイルは、上書きされますので注意してください。

シミュレーション出力ファイルには、全計算がおこなわれた後の計算結果がだけが格納されています。ここのモンテカルロステップでの計算の詳細は、各チェックポイント情報を格納しているチェックポイントファイルをXML形式に変換することによって知ることが可能です。convert2xmlツールを次のように使用します。

convert2xml parm4.task[1-10].out.run

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

物理量に関するプロットをおこないたい場合は、後述するPython解析ツールを利用してください。


Pythonを使用したシミュレーションの準備と実行

Pythonで計算の実行を設定します。Pythonスクリプトtutorial5a.pyを参照してください。

import pyalps
import matplotlib.pyplot as plt
import pyalps.pyplot
parms = []
for t in [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1]:
   parms.append(
       { 
         'LATTICE'        : "square lattice", 
         'MODEL'          : "boson Hubbard",
         'T'              : 0.1,
         'L'              : 4 ,
         't'              : t ,
         'mu'             : 0.5,
         'U'              : 1.0 ,
         'NONLOCAL'       : 0 ,
         'Nmax'           : 2 ,
         'THERMALIZATION' : 10000,
         'SWEEPS'         : 500000
       }
   )


alpspythonやvispythonを用いてPythonスクリプトを実行します。

次に、ジョブファイルをXML形式に変換し、ワームシミュレーションを実行します。

input_file = pyalps.writeInputFiles('parm5a',parms)
res = pyalps.runApplication(worm',input_file,Tmin=5)

コマンドラインでおこなった計算結果と同じ出力ファイルが得られます。

Pythonを使用したシミュレーションの準備と実行

Pythonで計算の実行を設定します。Pythonスクリプトtutorial5a.pyを参照してください。

data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm5a'),'Stiffness')
magnetization = pyalps.collectXY(data,x='h',y='Stiffness')


プロットにはpyalps.pyplot.plotを使用します。適宜実用的なラベル、タイトル、Y軸の範囲を設定してください。

plt.figure()
pyalps.pyplot.plot(rhos)
plt.xlabel('Hopping $t/U$')
plt.ylabel('Superfluid density $\\rho _s$')
plt.show()

Vistrailsを使用したシミュレーションの準備と実行

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

質疑

  • 相転移のサインは何でしょうか?

モット絶縁体から超流動体への相転移

次に、相転移の箇所をより正確に求めるための計算方法を紹介します。様々なサイズの二次元正方行列を用います。\rho_s*Lを注視してください。

コマンドラインでのシミュレーションの準備と実行

チュートリアルのパラメータファイルparm5bです。このサンプルでは、L=4,6,8のシステムサイズで相転移点を求めます。

LATTICE="square lattice";
MODEL="boson Hubbard";
NONLOCAL=0;
U    = 1.0;
mu   = 0.5;
Nmax = 2;
T = 0.05;
SWEEPS=600000;
THERMALIZATION=150000;
{ L=4; t=0.045; }
{ L=4; t=0.05; }
{ L=4; t=0.0525; }
{ L=4; t=0.055; }
{ L=4; t=0.0575; }
{ L=4; t=0.06; }
{ L=4; t=0.065; }
{ L=6; t=0.045; }
{ L=6; t=0.05; }
{ L=6; t=0.0525; }
{ L=6; t=0.055; }
{ L=6; t=0.0575; }
{ L=6; t=0.06; }
{ L=6; t=0.065; }
{ L=8; t=0.045; }
{ L=8; t=0.05; }
{ L=8; t=0.0525; }
{ L=8; t=0.055; }
{ L=8; t=0.0575; }
{ L=8; t=0.06; }
{ L=8; t=0.065; }

計算を実行させ、Pythonを用いて結果解析します。

Pythonを使用したシミュレーションの準備と実行と結果解析

Pythonで計算の実行を設定します。Pythonスクリプトtutorial5b.pyを参照してください。最初に、超流動密度(Stiffness)を異なる3つのデータセットにロードします。各サイズはLです。

data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm5b'),'Stiffness')
rhos = pyalps.collectXY(data,x='t',y='Stiffness',foreach=['L'])

次に、サイズLを各データにかけます。

for s in rhos:
  s.y = s.y * float(s.props['L'])

最後に、次の手順でプロットします。

plt.figure()
pyalps.pyplot.plot(rhos)
plt.xlabel('Hopping $t/U$')
plt.ylabel('$\\rho _sL$')
plt.legend()
plt.title('Scaling plot for Bose-Hubbard model')
plt.show()


Vistrailsを使用したシミュレーションの準備と実行

Vistrailsを用いた計算の実行のチュートリアルmc-05-bosons.vtを開き、"scaling plot"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。。プロットの結果を次に示します。

vt_id:5 version:53

質疑

  • 熱力学的極限において量子相転移点どのように決定しましたか?
  • ヒント)superfluid stiffnessの計算結果にシステムサイズLを乗算してみてください。
  • (t/U)c=0.05974の厳密解と比較してみてください。
  • なぜモンテカルロ計算では臨界点を過大評価するのでしょうか?

© 2003-2010 by Simon Trebst, Synge Todo and Matthias Troyer