Difference between revisions of "ALPS 2 Tutorials:DMFT-02 Hybridization/ja"

From ALPS
Jump to: navigation, search
(Created page with "{{Languages|ALPS_2_Tutorials:DMFT-02_Hybridization}} =Tutorial 02: Hybridization Expansion CT-HYB = <!--We start by running a continuous-time quantum Monte Carlo code - the hybr…")
 
Line 2: Line 2:
  
 
=Tutorial 02: Hybridization Expansion CT-HYB =
 
=Tutorial 02: Hybridization Expansion CT-HYB =
<!--We start by running a continuous-time quantum Monte Carlo code - the hybridization expansion algorithm CT-HYB. As an 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.-->
 
 
まず最初に、連続時間量子モンテカルロコードについて説明します。ハイブリッド拡張アルゴリズムCT-HYBです。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模型です。
 
まず最初に、連続時間量子モンテカルロコードについて説明します。ハイブリッド拡張アルゴリズムCT-HYBです。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模型です。
  
<!--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>. -->
 
 
CT-HYBシミュレーションは反復処理ごとに約1分間実行されます。このシミュレーションを実行するためのパラメータ·ファイルはディレクトリ<tt>tutorials/dmft-02-hybridization</tt>にあります。
 
CT-HYBシミュレーションは反復処理ごとに約1分間実行されます。このシミュレーションを実行するためのパラメータ·ファイルはディレクトリ<tt>tutorials/dmft-02-hybridization</tt>にあります。
  
<!--All DMFT tutorials can either be started using vistrails, or directly by invoking a command 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-02-hybridization, and running the dmft code '/opt/alps/bin/dmft hybrid.param' leads to the same results.-->
 
 
全DMFTチュートリアルでは、Vistrailsを使って計算を始めるか、直接コマンドラインから実行させるか、どちらも可能です。vistrailsスクリプトは、以下に説明するように、自動的にパラメータを生成し、実行し、結果をプロットします。DMFTパラメータを手動で実行すると、例えば、tutorials/dmft-02-hybridizationの'beta_14_U3_tsqrt2'ディレクトリで、dmftを'/opt/alps/bin/dmft hybrid.param'のように実行すると、同じ結果が得られます。パラメータは次の通りです。
 
全DMFTチュートリアルでは、Vistrailsを使って計算を始めるか、直接コマンドラインから実行させるか、どちらも可能です。vistrailsスクリプトは、以下に説明するように、自動的にパラメータを生成し、実行し、結果をプロットします。DMFTパラメータを手動で実行すると、例えば、tutorials/dmft-02-hybridizationの'beta_14_U3_tsqrt2'ディレクトリで、dmftを'/opt/alps/bin/dmft hybrid.param'のように実行すると、同じ結果が得られます。パラメータは次の通りです。
  
Line 30: Line 27:
 
バンド構造や、格子タイプのパラメータが無いことに注意してください。デフォルトではBethe格子が採用されていますが、変更が可能です。(後述)
 
バンド構造や、格子タイプのパラメータが無いことに注意してください。デフォルトではBethe格子が採用されていますが、変更が可能です。(後述)
  
<!--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.
+
10回の自己無どう着逐次近似法を実行します。プログラムを実行しているディレクトリで、グリーン関数ファイル <tt>G_tau_?</tt>と自己のエネルギー(<tt>selfenergy_?</tt>)ならびに、グリーン関数の周波数<tt>G_omega_?</tt>が出力されます。サンプルの<tt>G_tau</tt>は2つの値を持ちます。スピンアップとスピンダウンの列です。<tt>\beta</tt>の値は、負の密度です。系が反強磁性相で、エラーバーの外側という点で異なります。異なる<tt>\beta</tt>でのグリーン関数のプロットや[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11の結果と比較するために次のPythonシェルスクリプトを使用することができます。チュートリアル07では、離散時間量子モンテカルロプログラムHirsch Fyeコードで同じ結果を再現します。パラメータは同じです。
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 tutorial 07 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つの値を持ちます。スピンアップとスピンダウンの列です。<tt>\beta</tt>の値は、負の密度です。系が反強磁性相で、エラーバーの外側という点でことなります。異なる<tt>\beta</tt>でのグリーン関数のプロットや[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11の結果と比較するために次のPythonシェルスクリプトを使用することができます。チュートリアル07では、離散時間量子モンテカルロプログラム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-01-hirschfye/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>にパラメータファイル(<tt>*tsqrt2</tt>ディレクトリ内)があります。DFMTシミュレーションにvistrailsを使用するなら、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/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>にパラメータファイル(<tt>*tsqrt2</tt>ディレクトリ内)があります。DFMTシミュレーションにvistrailsを使用するなら、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/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 83:
 
     res = pyalps.runDMFT(input_file)
 
     res = pyalps.runDMFT(input_file)
 
   
 
   
<!--After running these simulations compare the output to the Hirsch Fye results of tutorials 07 or the DMFT review, or to the interaction expansion results of the next tutorial. 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.
+
シミュレーション後、チュートリアル07のHirsch FyeやDFMTreviewの結果と比較してみてください。また、次のチュートリアルの相互作用展開の結果とも比較してみてください。また、再計算するために、<tt>G0OMEGA_INPUT</tt>を定義することによって再開する箇所を決めることができます。例えば、<tt>G0omga_output</tt>を<tt>G0_omega_input</tt>にコピーし、 パラメータファイルで<tt>G0OMEGA_INPUT = G0_omega_input</tt>と規程し、再計算させます。http://alps.comp-phys.org/mediawiki/index.php/ALPS_2_Tutorials:DMFT-01_Hirsch-Fye Tutorial DMFT-01 Hirsch-Fye]で、このスクリプトを用いてグリーン関数をプロットすることによって反強磁性相の相転移を見ることができます。
As in the [http://alps.comp-phys.org/mediawiki/index.php/ALPS_2_Tutorials:DMFT-01_Hirsch-Fye Tutorial DMFT-01 Hirsch-Fye] you can observe the transition to the antiferromagnetic phase by plotting the Green's functions using the script:-->
 
シミュレーション後、チュートリアル07のHirsch FyeやDFMTreviewの結果と比較してみてください。また、次のチュートリアルの相互作用展開の結果とも比較してみてください。また、シミュレーションを再計算するために、<tt>G0OMEGA_INPUT</tt>を定義することによって再開する箇所を決めることができます。例えば、<tt>G0omga_output</tt>を<tt>G0_omega_input</tt>にコピーし、 パラメータファイルで<tt>G0OMEGA_INPUT = G0_omega_input</tt>と規程し、再計算させます。http://alps.comp-phys.org/mediawiki/index.php/ALPS_2_Tutorials:DMFT-01_Hirsch-Fye Tutorial DMFT-01 Hirsch-Fye]で、このスクリプトを用いてグリーン関数をプロットすることによって反強磁性相の相転移を見ることができます。
 
  
 
  flavors=parms[0]['FLAVORS']
 
  flavors=parms[0]['FLAVORS']
Line 114: Line 103:
 
  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>)を長くしたり、多くのCPUを使用することによって統計結果を改善することができます。MPIでの実行は、<tt>mpirun -np procs dmft parameter_file</tt>としてください。詳細はMPIのman等を参考にしてください。
 
この結果は、比較的ノイズが多いことに気づくでしょう。その理由は、このような高温の拡張オーダーは非常に小さく、測定性能の効率が悪くなるからです。計算時間 (<tt>MAX_TIME</tt>)を長くしたり、多くのCPUを使用することによって統計結果を改善することができます。MPIでの実行は、<tt>mpirun -np procs dmft parameter_file</tt>としてください。詳細はMPIのman等を参考にしてください。
  
<!--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]:-->
 
 
DFMTの自己無どう着逐次近似法の収束状況を確認したいなら、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2b.py tutorial2b.py]を用いてグリーン関数をプロットすることが可能です。
 
DFMTの自己無どう着逐次近似法の収束状況を確認したいなら、[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-02-hybridization/tutorial2b.py tutorial2b.py]を用いてグリーン関数をプロットすることが可能です。
  
Line 140: Line 127:
 
     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.-->
 
 
収束が難しいself energyが収束していることが確認されることが望ましいです。長時間シミュレーションが必要なことに注意してください。
 
収束が難しいself energyが収束していることが確認されることが望ましいです。長時間シミュレーションが必要なことに注意してください。

Revision as of 03:25, 19 March 2012

Tutorial 02: Hybridization Expansion CT-HYB

まず最初に、連続時間量子モンテカルロコードについて説明します。ハイブリッド拡張アルゴリズムCT-HYBです。DFMTのFig.11(Georges it et al.)を例にします。この図の6つの曲線は、系が冷却時にどのように反強磁性相になるのか示しています。系はhalf filling近傍の相互作用U=3D/\sqrt{2}でのBethe格子のHubbard模型です。

CT-HYBシミュレーションは反復処理ごとに約1分間実行されます。このシミュレーションを実行するためのパラメータ·ファイルはディレクトリtutorials/dmft-02-hybridizationにあります。

全DMFTチュートリアルでは、Vistrailsを使って計算を始めるか、直接コマンドラインから実行させるか、どちらも可能です。vistrailsスクリプトは、以下に説明するように、自動的にパラメータを生成し、実行し、結果をプロットします。DMFTパラメータを手動で実行すると、例えば、tutorials/dmft-02-hybridizationの'beta_14_U3_tsqrt2'ディレクトリで、dmftを'/opt/alps/bin/dmft hybrid.param'のように実行すると、同じ結果が得られます。パラメータは次の通りです。


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

バンド構造や、格子タイプのパラメータが無いことに注意してください。デフォルトではBethe格子が採用されていますが、変更が可能です。(後述)

シミュレーションを実行します。

dmft hybrid.param

10回の自己無どう着逐次近似法を実行します。プログラムを実行しているディレクトリで、グリーン関数ファイル G_tau_?と自己のエネルギー(selfenergy_?)ならびに、グリーン関数の周波数G_omega_?が出力されます。サンプルのG_tauは2つの値を持ちます。スピンアップとスピンダウンの列です。\betaの値は、負の密度です。系が反強磁性相で、エラーバーの外側という点で異なります。異なる\betaでのグリーン関数のプロットやGeorges it et al.のFig.11の結果と比較するために次のPythonシェルスクリプトを使用することができます。チュートリアル07では、離散時間量子モンテカルロプログラムHirsch Fyeコードで同じ結果を再現します。パラメータは同じです。

サンプルtutorials/dmft-02-hybridizationにパラメータファイル(*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)

シミュレーション後、チュートリアル07のHirsch FyeやDFMTreviewの結果と比較してみてください。また、次のチュートリアルの相互作用展開の結果とも比較してみてください。また、再計算するために、G0OMEGA_INPUTを定義することによって再開する箇所を決めることができます。例えば、G0omga_outputG0_omega_inputにコピーし、 パラメータファイルでG0OMEGA_INPUT = G0_omega_inputと規程し、再計算させます。http://alps.comp-phys.org/mediawiki/index.php/ALPS_2_Tutorials:DMFT-01_Hirsch-Fye Tutorial DMFT-01 Hirsch-Fye]で、このスクリプトを用いてグリーン関数をプロットすることによって反強磁性相の相転移を見ることができます。

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)を長くしたり、多くのCPUを使用することによって統計結果を改善することができます。MPIでの実行は、mpirun -np procs dmft parameter_fileとしてください。詳細はMPIのman等を参考にしてください。

DFMTの自己無どう着逐次近似法の収束状況を確認したいなら、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()

収束が難しいself energyが収束していることが確認されることが望ましいです。長時間シミュレーションが必要なことに注意してください。