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

From ALPS
Jump to: navigation, search
m (Text replace - "http://alps.comp-phys.org/static/tutorials2.1.0" to "http://alps.comp-phys.org/static/tutorials2.2.0")
 
(2 intermediate revisions by 2 users not shown)
Line 33: Line 33:
 
  dmft hirschfye.param
 
  dmft hirschfye.param
  
Pythonを使った実行方法は [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]を参照してください。
  
 
  import pyalps
 
  import pyalps
Line 96: Line 96:
  
 
離散時間法では、HFは <math>\Delta\tau</math>誤差の問題があります。この問題を解決するために、パラメータのセットを適切に選択し、大きな <tt>N</tt>で計算してみてください。ほぼ収束している入力関数を使用してDMFTを計算をおこないます。G0_omega_inputを削除することによって自由な解から再計算することができ、収束が見られるでしょう。
 
離散時間法では、HFは <math>\Delta\tau</math>誤差の問題があります。この問題を解決するために、パラメータのセットを適切に選択し、大きな <tt>N</tt>で計算してみてください。ほぼ収束している入力関数を使用してDMFTを計算をおこないます。G0_omega_inputを削除することによって自由な解から再計算することができ、収束が見られるでしょう。
 
+
Vistrailsでの実行は[http://alps.comp-phys.org/static/tutorials2.2.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!