Difference between revisions of "ALPS 2 Examples:Neel Transition/ja"

From ALPS
Jump to: navigation, search
(Created page with "=Single site DMFTのNeel転移= <!--In this example we reproduce Fig. 11 in the DMFT review by [http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']. The series of s…")
 
Line 1: Line 1:
 
=Single site DMFTのNeel転移=
 
=Single site DMFTのNeel転移=
<!--In this example we reproduce Fig. 11 in the DMFT review by [http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']. The series of six curves shows how the system, a Hubbard model on the Bethe lattice with interaction <math>U=3D/\sqrt{2}</math> at half filling, enters an antiferromagnetic phase upon cooling.-->
 
 
このチュートリアルでは、DFMTのFig.11[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']を再現します。この6つの曲線は、half filling近傍で相互作用<math>U=3D/\sqrt{2}</math>を持つBethe格子上でのHubbard模型を表しています。温度が下がると反強磁性相になります。
 
このチュートリアルでは、DFMTのFig.11[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']を再現します。この6つの曲線は、half filling近傍で相互作用<math>U=3D/\sqrt{2}</math>を持つBethe格子上でのHubbard模型を表しています。温度が下がると反強磁性相になります。
  
<!--These examples can either be started using vistrails, or directly by invoking a command or python script on the command line. The vistrails scripts described in the following automatically generate parameter files, run them, and plot the results. Running one of the dmft parameter sets manually, e.g. by entering the directory 'beta_14_U3_tsqrt2' in tutorials/dmft-0j-xxx, and running the dmft code '/opt/alps/bin/dmft xxx.param' leads to the same results.-->
 
 
このサンプル計算は、コマンドライン、Pythonスクリプト、Vistrailsでの実行に対応しています。Vistrailは、自動的にパラメータファイルを生成し、計算を実行し、結果をプロットします。DMFTパラメーターを手動で設定する場合は、tutorials/dmft-0j-xxx内の'beta_14_U3_tsqrt2'ディレクトリを参照してください。'/opt/alps/bin/dmft xxx.param'で実行してください。
 
このサンプル計算は、コマンドライン、Pythonスクリプト、Vistrailsでの実行に対応しています。Vistrailは、自動的にパラメータファイルを生成し、計算を実行し、結果をプロットします。DMFTパラメーターを手動で設定する場合は、tutorials/dmft-0j-xxx内の'beta_14_U3_tsqrt2'ディレクトリを参照してください。'/opt/alps/bin/dmft xxx.param'で実行してください。
  
 
==Hybridization 拡張CT-HYB ==
 
==Hybridization 拡張CT-HYB ==
<!--We start by running a continuous-time quantum Monte Carlo code - the hybridization expansion algorithm CT-HYB.
+
 
The CT-HYB simulation will run for about a minute per iteration. The parameter files for running this simulation can be found in the directory <tt>tutorials/dmft-02-hybridization</tt>. -->
 
 
Hybridization拡張アルゴリズムCT-HYB、まず連続時間量子モンテカルロコードを実行させます。CT-HYBシミュレーションは、反復処理毎に約1分実行します。実行用のパラメータファイルはディレクトリ<tt>tutorials/dmft-02-hybridization</tt>にあります。
 
Hybridization拡張アルゴリズムCT-HYB、まず連続時間量子モンテカルロコードを実行させます。CT-HYBシミュレーションは、反復処理毎に約1分実行します。実行用のパラメータファイルはディレクトリ<tt>tutorials/dmft-02-hybridization</tt>にあります。
  
<!--The main parameters are:-->
 
 
主なパラメータは次の通りです。
 
主なパラメータは次の通りです。
  
Line 29: Line 25:
 
  SOLVER = Hybridization;  The Hybridization solver
 
  SOLVER = Hybridization;  The Hybridization solver
  
<!--To start a simulation type:-->
 
 
次のようにタイプし、シミュレーションを実行させます。
 
次のようにタイプし、シミュレーションを実行させます。
  
 
  dmft hybrid.param
 
  dmft hybrid.param
  
<!--The code will run for up to 10 self-consistency iterations. In the directory in which you run the program you will find Green's functions files <tt>G_tau_?</tt> as well the self energies (<tt>selfenergy_?</tt>) and Green's functions in frequency space <tt>G_omega_?</tt> in your output directory. <tt>G_tau</tt> in these examples has two entries: a spin-up and a  spin-down column. The entry at <tt>\beta</tt> is the negative density; where it is different outside of error bars the system is in an antiferromagnetic phase.
 
You can run the following lines in the python shell in order to plot the Green's functions for different <math>\beta</math> and compare your result to Fig. 11 of [http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.''].
 
In the section ection [[ALPS_2_Examples:Neel_Transition#Hirsch_Fye |  Hirsch-Fye]] we will reproduce the same results with a discrete-time Quantum Monte Carlo code: the Hirsch Fye code. The parameters are the same, apart from the command for the solver.
 
-->
 
 
このサンプルプログラムでは10回の繰り返し計算をおこないます。計算が実行されると、出力ディレクトリに、グリーン関数ファイル<tt>G_tau_?</tt>、自己エネルギー(<tt>selfenergy_?</tt>)、周波数空間でのグリーン関数<tt>G_omega_?</tt>が生成されます。<tt>G_tau</tt>は2つの値をもちます。spin-upとspin-downです。<tt>\beta</tt>値は負の密度です。次に示すPythonスクリプトを用いて計算し、他の<tt>\beta<tt>でのグリーン関数をプロットしたり、[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11と比較してみてください。[[ALPS_2_Examples:Neel_Transition#Hirsch_Fye |  Hirsch-Fye]] のセクションで、離散時間量子モンテカルロコード:Hirsch Fyeコードを用いて再現計算をおこないます。パラメータは同じです。
 
このサンプルプログラムでは10回の繰り返し計算をおこないます。計算が実行されると、出力ディレクトリに、グリーン関数ファイル<tt>G_tau_?</tt>、自己エネルギー(<tt>selfenergy_?</tt>)、周波数空間でのグリーン関数<tt>G_omega_?</tt>が生成されます。<tt>G_tau</tt>は2つの値をもちます。spin-upとspin-downです。<tt>\beta</tt>値は負の密度です。次に示すPythonスクリプトを用いて計算し、他の<tt>\beta<tt>でのグリーン関数をプロットしたり、[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11と比較してみてください。[[ALPS_2_Examples:Neel_Transition#Hirsch_Fye |  Hirsch-Fye]] のセクションで、離散時間量子モンテカルロコード:Hirsch Fyeコードを用いて再現計算をおこないます。パラメータは同じです。
  
<!--You can find the parameter files (called <tt>*tsqrt2</tt>) in the directory <tt>tutorials/dmft-02-hybridization</tt> in the examples. If you want to use Vistrails to run your DMFT-simulations, you can use [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/dmft-02-hybridization.vt dmft-02-hybridization.vt].
 
Alternatively you can run the python script [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2a.py tutorial2a.py]:-->
 
 
計算実行後、<tt>tutorials/dmft-02-hybridization</tt>ディレクトリにパラメータファイル(called <tt>*tsqrt2</tt>)が生成されます。DFMTシミュレーションをVistrailsで行う場合は、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/dmft-02-hybridization.vt dmft-02-hybridization.vt]、Python用のスクリプトは [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2a.py tutorial2a.py]になります。
 
計算実行後、<tt>tutorials/dmft-02-hybridization</tt>ディレクトリにパラメータファイル(called <tt>*tsqrt2</tt>)が生成されます。DFMTシミュレーションをVistrailsで行う場合は、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/dmft-02-hybridization.vt dmft-02-hybridization.vt]、Python用のスクリプトは [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2a.py tutorial2a.py]になります。
  
Line 92: Line 81:
 
     res = pyalps.runDMFT(input_file)
 
     res = pyalps.runDMFT(input_file)
 
   
 
   
<!--After running these simulations compare the output to the Hirsch Fye results of the section [[ALPS_2_Examples:Neel_Transition#Hirsch_Fye |  Hirsch-Fye]] or the DMFT review, or to the interaction expansion results of the section [[ALPS_2_Examples:Neel_Transition#Interaction_Expansion_CT-INT |  Interaction Expansion CT-INT]] . To rerun a simulation, you can specify a starting solution by defining <tt>G0OMEGA_INPUT</tt>, e.g. copy <tt>G0omga_output</tt> to <tt>G0_omega_input</tt>, specify <tt>G0OMEGA_INPUT = G0_omega_input</tt> in the parameter file and rerun the code.
 
You can observe the transition to the antiferromagnetic phase by plotting the Green's functions using the script:-->
 
 
これらのシミュレーションが実行後、[[ALPS_2_Examples:Neel_Transition#Hirsch_Fye |  Hirsch-Fye]]セクションの Hirsch FyeやDMFTの結果と比較してみてい下さい。また、[[ALPS_2_Examples:Neel_Transition#Interaction_Expansion_CT-INT |  Interaction Expansion CT-INT]]のセクションの 相互作用拡張の結果とも比較してみてください。<tt>G0OMEGA_INPUT</tt>を設定することで計算のスタートポイントを定義することができます。例えば、<tt>G0omga_output</tt> を <tt>G0_omega_input</tt>にコピーし specify <tt>G0OMEGA_INPUT = G0_omega_input</tt>と定義してみてください。
 
これらのシミュレーションが実行後、[[ALPS_2_Examples:Neel_Transition#Hirsch_Fye |  Hirsch-Fye]]セクションの Hirsch FyeやDMFTの結果と比較してみてい下さい。また、[[ALPS_2_Examples:Neel_Transition#Interaction_Expansion_CT-INT |  Interaction Expansion CT-INT]]のセクションの 相互作用拡張の結果とも比較してみてください。<tt>G0OMEGA_INPUT</tt>を設定することで計算のスタートポイントを定義することができます。例えば、<tt>G0omga_output</tt> を <tt>G0_omega_input</tt>にコピーし specify <tt>G0OMEGA_INPUT = G0_omega_input</tt>と定義してみてください。
  
Line 114: Line 101:
 
  plt.show()
 
  plt.show()
  
<!--You will notice that the results are relatively noisy. The reason for that is that the expansion order at such high temperatures is very small, which renders the measurement procedure inefficient. You can improve statistics by increasing the total run time (<tt>MAX_TIME</tt>) or by running it on more than one CPU. For running it with MPI, try <tt>mpirun -np procs dmft parameter_file</tt> or consult the man page of your mpi installation.-->
 
 
計算結果は比較的ノイズが多いことに気付くかと思います。理由は、測定結果を描写するのに、この様な高温度では展開数が非常に小さいからです。計算時間(<tt>MAX_TIME</tt>)を長くしたり、MPIを使って並列計算をおこなったりして計算の精度を向上させることができます。試してみてください。
 
計算結果は比較的ノイズが多いことに気付くかと思います。理由は、測定結果を描写するのに、この様な高温度では展開数が非常に小さいからです。計算時間(<tt>MAX_TIME</tt>)を長くしたり、MPIを使って並列計算をおこなったりして計算の精度を向上させることができます。試してみてください。
  
<!--If you want to check the convergence of your DMFT self-consistency, you can plot the Green's functions of different iterations using [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2b.py tutorial2b.py]:-->
 
 
DMFTの自己無憧着の収束を確認したい場合は、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2b.py tutorial2b.py]を用いて各繰り返し計算でのグリーン関数をプロットしてみてください。
 
DMFTの自己無憧着の収束を確認したい場合は、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2b.py tutorial2b.py]を用いて各繰り返し計算でのグリーン関数をプロットしてみてください。
 
  
 
  ll=pyalps.load.Hdf5Loader()
 
  ll=pyalps.load.Hdf5Loader()
Line 141: Line 125:
 
     plt.show()
 
     plt.show()
  
<!--It is usually best to observe convergence in the self energy, which is much more sensitive. Note that longer simulations are required to obtain smoother Green's fuctions and self energies.-->
 
 
自己エネルギーの収束性を確認する最も適した方法です。グリーン関数、自己エネルギーの収束には長いシミュレーションが必要なことに注意してください。
 
自己エネルギーの収束性を確認する最も適した方法です。グリーン関数、自己エネルギーの収束には長いシミュレーションが必要なことに注意してください。
  
<!--== Interaction Expansion CT-INT ==-->
 
 
== 相互作用展開CT-INT ==
 
== 相互作用展開CT-INT ==
  
<!--It is instructive to run the same calculations as in the section [[ALPS_2_Examples:Neel_Transition#Hybridization_Expansion_CT-HYB | Hybridization Expansion CT-HYB ]]  with a CT-INT code. This code performs an [http://link.aps.org/doi/10.1103/PhysRevB.72.035122 expansion in the interaction] (instead of the hybridization).
 
The corresponding parameter files are very similar, you can find them in the directory <tt>tutorials/dmft-03-interaction</tt>. If you prefer to run the simulations in python you can use [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/tutorial3a.py tutorial3a.py] and [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/tutorial3b.py tutorial3b.py] or use the [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/dmft-03-interaction.vt Vistrails file].-->
 
 
CT-INTコードを元にした[[ALPS_2_Examples:Neel_Transition#Hybridization_Expansion_CT-HYB | Hybridization Expansion CT-HYB ]]での計算例について述べます。このコードは[http://link.aps.org/doi/10.1103/PhysRevB.72.035122 相互作用エネルギーの展開]をおこないます。パラメータファイルは<tt>tutorials/dmft-03-interaction</tt>ディレクトリ内にあります。Pythonスクリプト、Vistrails用のファイルは、それぞれ[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/tutorial3a.py tutorial3a.py]、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/tutorial3b.py tutorial3b.py]、 [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/dmft-03-interaction.vt Vistrails file]です。
 
CT-INTコードを元にした[[ALPS_2_Examples:Neel_Transition#Hybridization_Expansion_CT-HYB | Hybridization Expansion CT-HYB ]]での計算例について述べます。このコードは[http://link.aps.org/doi/10.1103/PhysRevB.72.035122 相互作用エネルギーの展開]をおこないます。パラメータファイルは<tt>tutorials/dmft-03-interaction</tt>ディレクトリ内にあります。Pythonスクリプト、Vistrails用のファイルは、それぞれ[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/tutorial3a.py tutorial3a.py]、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/tutorial3b.py tutorial3b.py]、 [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-03-interaction/dmft-03-interaction.vt Vistrails file]です。
  
 
==Hirsch Fye==
 
==Hirsch Fye==
<!--We compare the continous time results by running a discrete time Monte Carlo code: the [http://dx.doi.org/10.1103/PhysRevLett.56.2521 Hirsch Fye] code. The Hirsch Fye algorithm is described in [http://dx.doi.org/10.1103/RevModPhys.68.13 here], and this review also provides an open source implementation for the codes. More information can also be found in [http://komet337.physik.uni-mainz.de/Bluemer/Thesis/bluemer_color.pdf Bl&uuml;mer's PhD]. While many improvements have been developed (see e.g. [http://doi.acm.org/10.1145/1413370.1413433 Alvarez08] or [http://dx.doi.org/10.1103/PhysRevB.80.195111 Nukala09]), the  algorithm
 
has been [http://dx.doi.org/10.1103/PhysRevB.76.235123 replaced by continuous-time algorithms].-->
 
 
離散時間モンテカルロコード[http://dx.doi.org/10.1103/PhysRevLett.56.2521 Hirsch Fye]の計算をおこない、連続時間との比較をおこないます。Hirsch Fyeアルゴリズムの詳細は[http://dx.doi.org/10.1103/RevModPhys.68.13 こちら]を参照してください。このコードはオープンソースとして公開されています。さらなる情報は[http://komet337.physik.uni-mainz.de/Bluemer/Thesis/bluemer_color.pdf Bl&uuml;mer's PhD]にあります。多くのアルゴリズムが開発され([http://doi.acm.org/10.1145/1413370.1413433 Alvarez08]、 [http://dx.doi.org/10.1103/PhysRevB.80.195111 Nukala09]など)、[http://dx.doi.org/10.1103/PhysRevB.76.235123 連続時間アルゴリズム]が主流となっています。
 
離散時間モンテカルロコード[http://dx.doi.org/10.1103/PhysRevLett.56.2521 Hirsch Fye]の計算をおこない、連続時間との比較をおこないます。Hirsch Fyeアルゴリズムの詳細は[http://dx.doi.org/10.1103/RevModPhys.68.13 こちら]を参照してください。このコードはオープンソースとして公開されています。さらなる情報は[http://komet337.physik.uni-mainz.de/Bluemer/Thesis/bluemer_color.pdf Bl&uuml;mer's PhD]にあります。多くのアルゴリズムが開発され([http://doi.acm.org/10.1145/1413370.1413433 Alvarez08]、 [http://dx.doi.org/10.1103/PhysRevB.80.195111 Nukala09]など)、[http://dx.doi.org/10.1103/PhysRevB.76.235123 連続時間アルゴリズム]が主流となっています。
  
<!--The Hirsch Fye simulation will run for about a minute per iteration. The parameter files for running this simulation can be found in the directory <tt>tutorials/dmft-01-hirschfye</tt>. -->
 
 
Hirsch Fyeシミュレーションのチュートリアルサンプルは<tt>tutorials/dmft-01-hirschfye</tt>ディレクトリ内を参照してください。
 
Hirsch Fyeシミュレーションのチュートリアルサンプルは<tt>tutorials/dmft-01-hirschfye</tt>ディレクトリ内を参照してください。
  
<!--The main parameters are:-->
 
 
パラメータファイルな主な部分は、次の通りです。
 
パラメータファイルな主な部分は、次の通りです。
  
Line 223: Line 199:
 
     res = pyalps.runDMFT(input_file)
 
     res = pyalps.runDMFT(input_file)
  
<!--The code will run for up to 10 self-consistency iterations. In the directory in which you run the program you will find Green's functions files <tt>G_tau_?</tt> as well the self energies (<tt>selfenergy_?</tt>) and Green's functions in frequency space <tt>G_omega_?</tt> in your output directory. <tt>G_tau</tt> in these examples has two entries: a spin-up and a  spin-down column. The entry at <tt>\beta</tt> is the negative density; where it is different outside of error bars the system is in an antiferromagnetic phase.
 
You can run the following lines in the python shell in order to plot the Green's functions for different <math>\beta</math> and compare your result to Fig. 11 of [http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.''].-->
 
 
コードは10回の反復計算をおこないます。出力ディレクトリに、グリーン関数ファイル<tt>G_tau_?</tt>、自己エネルギー(<tt>selfenergy_?</tt>)、周波数空間でのグリーン関数<tt>G_omega_?</tt>が生成されます。<tt>G_tau</tt>は2つの値をもちます。spin-upとspin-downです。\beta値は負の密度です。次に示すPythonスクリプトを用いて計算し、他の\beta<tt>でのグリーン関数をプロットしたり、[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11と比較してみてください。  
 
コードは10回の反復計算をおこないます。出力ディレクトリに、グリーン関数ファイル<tt>G_tau_?</tt>、自己エネルギー(<tt>selfenergy_?</tt>)、周波数空間でのグリーン関数<tt>G_omega_?</tt>が生成されます。<tt>G_tau</tt>は2つの値をもちます。spin-upとspin-downです。\beta値は負の密度です。次に示すPythonスクリプトを用いて計算し、他の\beta<tt>でのグリーン関数をプロットしたり、[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11と比較してみてください。  
  
Line 245: Line 219:
 
  plt.show()
 
  plt.show()
  
<!--As a discrete time method, HF suffers from <math>\Delta\tau</math> - errors. Pick a set of parameters and run it for sucessively larger <tt>N</tt>! Also: you're running the DMFT simulation using an (almost) converged input bath function. By deleting the file G0_omega_input you can restart the calculation from the free solution and observe convergence.-->
 
 
離散時間の方法では、Hirsch Fye法は<math>\Delta\tau</math>誤差が顕著にあらわれます。大きな<tt>N</tt>を用いて計算してください。また、DMFTシミュレーションではほとんど収束された入力ファイルを用いてシミュレーションをおこなっています。G0_omega_inputファイルを削除して、フリーな状態から計算して、収束状況を確認してみてください。
 
離散時間の方法では、Hirsch Fye法は<math>\Delta\tau</math>誤差が顕著にあらわれます。大きな<tt>N</tt>を用いて計算してください。また、DMFTシミュレーションではほとんど収束された入力ファイルを用いてシミュレーションをおこなっています。G0_omega_inputファイルを削除して、フリーな状態から計算して、収束状況を確認してみてください。
  
 
DMFTシミュレーションはVistrailsの利用が可能です。[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/dmft-01-hirschfye.vt dmft-01-hirschfye.vt]を参照してください。
 
DMFTシミュレーションはVistrailsの利用が可能です。[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/dmft-01-hirschfye.vt dmft-01-hirschfye.vt]を参照してください。

Revision as of 04:23, 19 March 2012

Single site DMFTのNeel転移

このチュートリアルでは、DFMTのFig.11Georges it et al.を再現します。この6つの曲線は、half filling近傍で相互作用U=3D/\sqrt{2}を持つBethe格子上でのHubbard模型を表しています。温度が下がると反強磁性相になります。

このサンプル計算は、コマンドライン、Pythonスクリプト、Vistrailsでの実行に対応しています。Vistrailは、自動的にパラメータファイルを生成し、計算を実行し、結果をプロットします。DMFTパラメーターを手動で設定する場合は、tutorials/dmft-0j-xxx内の'beta_14_U3_tsqrt2'ディレクトリを参照してください。'/opt/alps/bin/dmft xxx.param'で実行してください。

Hybridization 拡張CT-HYB

Hybridization拡張アルゴリズムCT-HYB、まず連続時間量子モンテカルロコードを実行させます。CT-HYBシミュレーションは、反復処理毎に約1分実行します。実行用のパラメータファイルはディレクトリtutorials/dmft-02-hybridizationにあります。

主なパラメータは次の通りです。

SEED = 0; //Monte Carlo Random Number Seed 
THERMALIZATION = 1000;  Thermalization Sweeps 
SWEEPS = 1000000; Total Sweeps to be computed 
MAX_TIME = 60;  Maximum time to run the simulation 
BETA = 12.;  Inverse temperature 
SITES = 1;  This is a single site DMFT simulation, so Sites is 1 
N = 16;  Number of time slices (you will see that this parameter is rather small) 
NMATSUBARA = 500;  The number of Matsubara frequencies 
U = 3;  Interaction energy 
t = 1;  hopping parameter. For the Bethe lattice considered here $W=2D=4t$
MU = 0;  Chemical potential 
H = 0;  Magnetic field 
SYMMETRIZATION = 0;  We are not enforcing a paramagnetic self consistency condition 
SOLVER = Hybridization;  The Hybridization solver

次のようにタイプし、シミュレーションを実行させます。

dmft hybrid.param

このサンプルプログラムでは10回の繰り返し計算をおこないます。計算が実行されると、出力ディレクトリに、グリーン関数ファイルG_tau_?、自己エネルギー(selfenergy_?)、周波数空間でのグリーン関数G_omega_?が生成されます。G_tauは2つの値をもちます。spin-upとspin-downです。\beta値は負の密度です。次に示すPythonスクリプトを用いて計算し、他の\beta<tt>でのグリーン関数をプロットしたり、Georges it et al.のFig.11と比較してみてください。 Hirsch-Fye のセクションで、離散時間量子モンテカルロコード:Hirsch Fyeコードを用いて再現計算をおこないます。パラメータは同じです。

計算実行後、<tt>tutorials/dmft-02-hybridizationディレクトリにパラメータファイル(called *tsqrt2)が生成されます。DFMTシミュレーションをVistrailsで行う場合は、dmft-02-hybridization.vt、Python用のスクリプトは tutorial2a.pyになります。

import pyalps
import numpy as np
import matplotlib.pyplot as plt
import pyalps.pyplot

#prepare the input parameters
parms=[]
for b in [6.,8.,10.,12.,14.,16.]:
    parms.append(
            {
              'ANTIFERROMAGNET'     : 1,
              'CONVERGED'           : 0.03,
              'F'                   : 10,
              'FLAVORS'             : 2,
              'H'                   : 0,
              'H_INIT'              : 0.2,
              'MAX_IT'              : 10,
              'MAX_TIME'            : 60,
              'MU'                  : 0,
              'N'                   : 1000,
              'NMATSUBARA'          : 1000,
              'N_FLIP'              : 0,
              'N_MEAS'              : 10000,
              'N_MOVE'              : 0,
              'N_ORDER'             : 50,
              'N_SHIFT'             : 0,
              'OMEGA_LOOP'          : 1,
              'OVERLAP'             : 0,
              'SEED'                : 0,
              'SITES'               : 1,
              'SOLVER'              : 'Hybridization',
              'SYMMETRIZATION'      : 0,
              'TOLERANCE'           : 0.01,
              'U'                   : 3,
              't'                   : 0.707106781186547,
              'SWEEPS'              : 100000000,
              'THERMALIZATION'      : 1000,
              'BETA'                : b,
              'CHECKPOINT'          : 'solverdump_beta_'+str(b)+'.task1.out.h5',
              'G0TAU_INPUT'         : 'G0_tau_input_beta_'+str(b)
            }
        )
#write the input file and run the simulation
for p in parms:
    input_file = pyalps.writeParameterFile('parm_beta_'+str(p['BETA']),p)
    res = pyalps.runDMFT(input_file)

これらのシミュレーションが実行後、 Hirsch-Fyeセクションの Hirsch FyeやDMFTの結果と比較してみてい下さい。また、 Interaction Expansion CT-INTのセクションの 相互作用拡張の結果とも比較してみてください。G0OMEGA_INPUTを設定することで計算のスタートポイントを定義することができます。例えば、G0omga_outputG0_omega_inputにコピーし specify G0OMEGA_INPUT = G0_omega_inputと定義してみてください。

flavors=parms[0]['FLAVORS']
listobs=[]   
for f in range(0,flavors):
    listobs.append('Green_'+str(f))

ll=pyalps.load.Hdf5Loader()
data = ll.ReadMeasurementFromFile(pyalps.getResultFiles(pattern='parm_beta_*h5'), respath='/simulation/results/G_tau', measurements=listobs, verbose=True)
for d in pyalps.flatten(data):
    d.x = d.x*d.props["BETA"]/float(d.props["N"])
    d.props['label'] = r'$\beta=$'+str(d.props['BETA'])
plt.figure()
plt.xlabel(r'$\tau$')
plt.ylabel(r'$G(\tau)$')
plt.title('Hubbard model on the Bethe lattice')
pyalps.pyplot.plot(data)
plt.legend()
plt.show()

計算結果は比較的ノイズが多いことに気付くかと思います。理由は、測定結果を描写するのに、この様な高温度では展開数が非常に小さいからです。計算時間(MAX_TIME)を長くしたり、MPIを使って並列計算をおこなったりして計算の精度を向上させることができます。試してみてください。

DMFTの自己無憧着の収束を確認したい場合は、tutorial2b.pyを用いて各繰り返し計算でのグリーン関数をプロットしてみてください。

ll=pyalps.load.Hdf5Loader()
for p in parms:
    data = ll.ReadDMFTIterations(pyalps.getResultFiles(pattern='parm_beta_'+str(p['BETA'])+'.h5'), measurements=listobs, verbose=True)
    grouped = pyalps.groupSets(pyalps.flatten(data), ['iteration'])
    nd=[]
    for group in grouped:
        r = pyalps.DataSet()
        r.y = np.array(group[0].y)
        r.x = np.array([e*group[0].props['BETA']/float(group[0].props['N']) for e in group[0].x])
        r.props = group[0].props
        r.props['label'] = r.props['iteration']
        nd.append( r )
    plt.figure()
    plt.xlabel(r'$\tau$')
    plt.ylabel(r'$G(\tau)$')
    plt.title(r'\beta = %.4s' %nd[0].props['BETA'])
    pyalps.pyplot.plot(nd)
    plt.legend()
    plt.show()

自己エネルギーの収束性を確認する最も適した方法です。グリーン関数、自己エネルギーの収束には長いシミュレーションが必要なことに注意してください。

相互作用展開CT-INT

CT-INTコードを元にした Hybridization Expansion CT-HYB での計算例について述べます。このコードは相互作用エネルギーの展開をおこないます。パラメータファイルはtutorials/dmft-03-interactionディレクトリ内にあります。Pythonスクリプト、Vistrails用のファイルは、それぞれtutorial3a.pytutorial3b.pyVistrails fileです。

Hirsch Fye

離散時間モンテカルロコードHirsch Fyeの計算をおこない、連続時間との比較をおこないます。Hirsch Fyeアルゴリズムの詳細はこちらを参照してください。このコードはオープンソースとして公開されています。さらなる情報はBlümer's PhDにあります。多くのアルゴリズムが開発され(Alvarez08Nukala09など)、連続時間アルゴリズムが主流となっています。

Hirsch Fyeシミュレーションのチュートリアルサンプルはtutorials/dmft-01-hirschfyeディレクトリ内を参照してください。

パラメータファイルな主な部分は、次の通りです。

SEED = 0; //Monte Carlo Random Number Seed 
THERMALIZATION = 10000;  Thermalization Sweeps 
SWEEPS = 1000000; Total Sweeps to be computed 
MAX_TIME = 60;  Maximum time to run the simulation 
BETA = 12.;  Inverse temperature 
SITES = 1;  This is a single site DMFT simulation, so Sites is 1 
N = 16;  Number of time slices (you will see that this parameter is rather small) 
NMATSUBARA = 500;  The number of Matsubara frequencies 
U = 3;  Interaction energy 
t = 1;  hopping parameter. For the Bethe lattice considered here $W=2D=4t$
MU = 0;  Chemical potential 
H = 0;  Magnetic field 
SYMMETRIZATION = 0;  We are not enforcing a paramagnetic self consistency condition 
SOLVER = /opt/alps/bin/hirschfye;  The path to the external Hirsch Fye solver

計算を実行させます。

dmft hirschfye.param

もしくは、Pythonスクリプトtutorial1a.pyを使用してください。

import pyalps
import numpy as np
import matplotlib.pyplot as plt
import pyalps.pyplot

#prepare the input parameters 
parms=[]
for b in [6.,8.,10.,12.,14.,16.]: 
    parms.append(
            { 
              'ANTIFERROMAGNET'     : 1,
              'CONVERGED'           : 0.03,
              'FLAVORS'             : 2,
              'H'                   : 0,
              'MAX_IT'              : 10,
              'MAX_TIME'            : 60,
              'MU'                  : 0,
              'N'                   : 16,
              'NMATSUBARA'          : 500, 
              'OMEGA_LOOP'          : 1,
              'SEED'                : 0, 
              'SITES'               : 1,
              'SOLVER'              : '/opt/alps/bin/hirschfye',
              'SYMMETRIZATION'      : 0,
              'TOLERANCE'           : 0.01,
              'U'                   : 3,
              't'                   : 0.707106781186547,
              'SWEEPS'              : 1000000,
              'THERMALIZATION'      : 10000,
              'BETA'                : b,
              'G0OMEGA_INPUT'       : 'G0_omega_input_beta_'+str(b),
              'BASENAME'            : 'hirschfye.param'
            }
        )

#write the input file and run the simulation
for p in parms:
    input_file = pyalps.writeParameterFile('parm_beta_'+str(p['BETA']),p)
    res = pyalps.runDMFT(input_file)

コードは10回の反復計算をおこないます。出力ディレクトリに、グリーン関数ファイルG_tau_?、自己エネルギー(selfenergy_?)、周波数空間でのグリーン関数G_omega_?が生成されます。G_tauは2つの値をもちます。spin-upとspin-downです。\beta値は負の密度です。次に示すPythonスクリプトを用いて計算し、他の\betaでのグリーン関数をプロットしたり、Georges it et al.のFig.11と比較してみてください。

flavors=parms[0]['FLAVORS']
listobs=[]   
for f in range(0,flavors):
    listobs.append('Green_'+str(f))

ll=pyalps.load.Hdf5Loader()
data = ll.ReadMeasurementFromFile(pyalps.getResultFiles(pattern='parm_beta_*h5'), respath='/simulation/results/G_tau', measurements=listobs, verbose=True)
for d in pyalps.flatten(data):
    d.x = d.x*d.props["BETA"]/float(d.props["N"])
    d.props['label'] = r'$\beta=$'+str(d.props['BETA'])
plt.figure()
plt.xlabel(r'$\tau$')
plt.ylabel(r'$G(\tau)$')
plt.title('Hubbard model on the Bethe lattice')
pyalps.pyplot.plot(data)
plt.legend()
plt.show()

離散時間の方法では、Hirsch Fye法は\Delta\tau誤差が顕著にあらわれます。大きな<tt>Nを用いて計算してください。また、DMFTシミュレーションではほとんど収束された入力ファイルを用いてシミュレーションをおこなっています。G0_omega_inputファイルを削除して、フリーな状態から計算して、収束状況を確認してみてください。

DMFTシミュレーションはVistrailsの利用が可能です。dmft-01-hirschfye.vtを参照してください。