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

From ALPS
Jump to: navigation, search
(コマンドラインでのシミュレーションの準備と実行)
(コマンドラインでのシミュレーションの準備と実行)
Line 12: Line 12:
 
<!--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.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.-->
 
パラメータファイル[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.0.0/mc-05-bosons/parm5a parm5a] は、Bose-Hubbardモデルの量子モンテカルロシミュレーションの設定をしています。4×4の正方格子、パラメータ(t=0.01,0.02, ...0.1)でのワームアルゴリズムの使用を設定しています。
 
  
 
   LATTICE="square lattice";
 
   LATTICE="square lattice";
Line 40: Line 39:
 
  parameter2xml parm5a
 
  parameter2xml parm5a
 
  worm --Tmin 10 --write-xml parm5a.in.xml
 
  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を使用したシミュレーションの準備と実行 ===

Revision as of 06:05, 28 March 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