Difference between revisions of "ALPS 2 Tutorials:DMFT-07 Hirsch-Fye/ja"

From ALPS
Jump to: navigation, search
(Created page with "{{Languages|ALPS_2_Tutorials:DMFT-07_Hirsch-Fye}} =Tutorial 07: Hirsch Fye コード= <!--We start by running a discrete time Monte Carlo code: the [http://dx.doi.org/10.1103/Ph…")
 
m (Text replace - "http://alps.comp-phys.org/static/tutorials2.1.0" to "http://alps.comp-phys.org/static/tutorials2.2.0")
 
(3 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
=Tutorial 07: Hirsch Fye コード=
 
=Tutorial 07: Hirsch Fye コード=
<!--We start by running a discrete time Monte Carlo code: the [http://dx.doi.org/10.1103/PhysRevLett.56.2521 Hirsch Fye] code. 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.-->
 
 
離散時間モンテカルロコード、[http://dx.doi.org/10.1103/PhysRevLett.56.2521 Hirsch Fye]コードで計算を実行します。例として、DFMT
 
離散時間モンテカルロコード、[http://dx.doi.org/10.1103/PhysRevLett.56.2521 Hirsch Fye]コードで計算を実行します。例として、DFMT
 
で紹介した[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11を取り上げます。6つの曲線は、half filling近傍で相互作用<math>U=3D/\sqrt{2}</math>でのBethe格子上のHubbard模型が温度が下がると反強磁性相にいたる様子を表現しています。
 
で紹介した[http://dx.doi.org/10.1103/RevModPhys.68.13 Georges ''it et al.'']のFig.11を取り上げます。6つの曲線は、half filling近傍で相互作用<math>U=3D/\sqrt{2}</math>でのBethe格子上のHubbard模型が温度が下がると反強磁性相にいたる様子を表現しています。
  
<!--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].-->
 
 
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]を参照してください。多くの改良法が開発されています。( e.g. [http://doi.acm.org/10.1145/1413370.1413433 Alvarez08]、[http://dx.doi.org/10.1103/PhysRevB.80.195111 Nukala09])
 
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]を参照してください。多くの改良法が開発されています。( e.g. [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/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シミュレーションは反復処理毎に約1分の時間を要します。パラメータファイルは<tt>tutorials/dmft-01-hirschfye</tt>ディレクトリ内にあります。
 
Hirsch Fyeシミュレーションは反復処理毎に約1分の時間を要します。パラメータファイルは<tt>tutorials/dmft-01-hirschfye</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-01-hirschfye, adjusting the 'solver' path 'SOLVER = /opt/alps/bin/hirschfye' in hirschfye.param to point to the hirsch fye executable and running the dmft code '/opt/alps/bin/dmft hirschfye.param' leads to the same results.-->
+
すべてのDMFTチュートリアルはvistrailsベースでもコマンドベースでもどちらでも対応可能です。vistrailsでは、パラメータファイル生成、計算の実行、結果のプロットを自動的におこないます。手動で計算をおこなう例として、tutorials/dmft-01-hirschfyeの'beta_14_U3_tsqrt2'に移動し、hirsch fyeの実行もジュールを使用することができるように'solver'パスを'SOLVER = /opt/alps/bin/hirschfye'と設定します。そして、'/opt/alps/bin/dmft hirschfye.param'とタイプし計算の実行をおこないます。
すべてのDMFTチュートリアルはvistrailsベースでもコマンドベースでもどちらでも対応可能です。vistrailsでは、パラメータファイル生成、計算の実行、結果のプロットを自動的におこないます。
 
手動で計算をおこなう例として、tutorials/dmft-01-hirschfyeの'beta_14_U3_tsqrt2'に移動し、hirsch fyeの実行もジュールを使用することができるように'solver'パスを'SOLVER = /opt/alps/bin/hirschfye'と設定します。そして、'/opt/alps/bin/dmft hirschfye.param'とタイプし計算の実行をおこないます。
 
  
<!--The main parameters are:-->
 
 
パラメータファイルです。
 
パラメータファイルです。
  
Line 36: Line 29:
 
  SOLVER = /opt/alps/bin/hirschfye;  The path to the external Hirsch Fye solver
 
  SOLVER = /opt/alps/bin/hirschfye;  The path to the external Hirsch Fye solver
  
<!--To start a simulation type:-->
 
 
計算を実行します。
 
計算を実行します。
  
 
  dmft hirschfye.param
 
  dmft hirschfye.param
  
<!--or run the python script [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/tutorial1a.py tutorial1a.py]:-->
+
Pythonを使った実行方法は [http://alps.comp-phys.org/static/tutorials2.2.0/dmft-01-hirschfye/tutorial1a.py tutorial1a.py]を参照してください。
Pythonを使った実行方法は [http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/tutorial1a.py tutorial1a.py]を参照してください。
 
  
 
  import pyalps
 
  import pyalps
Line 84: Line 75:
 
     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>,self energies(<tt>selfenergy_?</tt>)、<tt>G_omega_?</tt>、Green's functions in frequency space<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シェルスクリプトを使用することができます。
 
コードは最大10回の自己無どう着逐次近似をおこないます。計算をおこなってるディレクトリ内にグリーン関数ファイル<tt>G_tau_?</tt>,self energies(<tt>selfenergy_?</tt>)、<tt>G_omega_?</tt>、Green's functions in frequency space<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シェルスクリプトを使用することができます。
  
Line 106: Line 95:
 
  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.-->
+
離散時間法では、HFは <math>\Delta\tau</math>誤差の問題があります。この問題を解決するために、パラメータのセットを適切に選択し、大きな <tt>N</tt>で計算してみてください。ほぼ収束している入力関数を使用してDMFTを計算をおこないます。G0_omega_inputを削除することによって自由な解から再計算することができ、収束が見られるでしょう。
離散時間法では、HFは <math>\Delta\tau</math>誤差の問題があります。この問題を解決するために、パラメータのセットを適切に選択し、大きな <tt>N</tt>で計算してみてください。ほぼ収束している入力関数を使用してDMFTを計算をおこないます。
+
Vistrailsでの実行は[http://alps.comp-phys.org/static/tutorials2.2.0/dmft-01-hirschfye/dmft-01-hirschfye.vt dmft-01-hirschfye.vt]を参照してください。
G0_omega_inputを削除することによって自由な解から再計算することができ、収束が見られるでしょう。
 
 
 
<!--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-01-hirschfye.vt dmft-01-hirschfye.vt].-->
 
Vistrailsでの実行は[http://alps.comp-phys.org/static/tutorials2.0.0/dmft-01-hirschfye/dmft-01-hirschfye.vt dmft-01-hirschfye.vt]を参照してください。
 
  
 
Tutorial by [[User:Gullc|Emanuel]] - Please don't hesitate to ask!
 
Tutorial by [[User:Gullc|Emanuel]] - Please don't hesitate to ask!

Latest revision as of 23:00, 28 September 2013

Tutorial 07: Hirsch Fye コード

離散時間モンテカルロコード、Hirsch Fyeコードで計算を実行します。例として、DFMT で紹介したGeorges it et al.のFig.11を取り上げます。6つの曲線は、half filling近傍で相互作用U=3D/\sqrt{2}でのBethe格子上のHubbard模型が温度が下がると反強磁性相にいたる様子を表現しています。

Hirsch Fyeアルゴリズムはこちらで記述されています。このレビューはオープンソースのコードを提供しています。詳しくはBlümer's PhDを参照してください。多くの改良法が開発されています。( e.g. Alvarez08Nukala09連続時間でのアルゴリズムに置き換えられています。

Hirsch Fyeシミュレーションは反復処理毎に約1分の時間を要します。パラメータファイルはtutorials/dmft-01-hirschfyeディレクトリ内にあります。

すべてのDMFTチュートリアルはvistrailsベースでもコマンドベースでもどちらでも対応可能です。vistrailsでは、パラメータファイル生成、計算の実行、結果のプロットを自動的におこないます。手動で計算をおこなう例として、tutorials/dmft-01-hirschfyeの'beta_14_U3_tsqrt2'に移動し、hirsch fyeの実行もジュールを使用することができるように'solver'パスを'SOLVER = /opt/alps/bin/hirschfye'と設定します。そして、'/opt/alps/bin/dmft hirschfye.param'とタイプし計算の実行をおこないます。

パラメータファイルです。

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_?,self energies(selfenergy_?)、G_omega_?、Green's functions in frequency spaceG_omega_?が出力されます。これらのサンプル計算のG_tauは2つの値を持ちます。スピンアップとスピンダウンです。\betaの値は、負の密度です。系が反強磁性相で、エラーバーの外側という点でことなります。異なる\betaでのグリーン関数のプロットやGeorges it et al.のFig.11の結果と比較するために次のPythonシェルスクリプトを使用することができます。

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()

離散時間法では、HFは \Delta\tau誤差の問題があります。この問題を解決するために、パラメータのセットを適切に選択し、大きな Nで計算してみてください。ほぼ収束している入力関数を使用してDMFTを計算をおこないます。G0_omega_inputを削除することによって自由な解から再計算することができ、収束が見られるでしょう。 Vistrailsでの実行はdmft-01-hirschfye.vtを参照してください。

Tutorial by Emanuel - Please don't hesitate to ask!