Difference between revisions of "ALPS 2 Tutorials:MC-08 Quantum Phase Transition/ja"

From ALPS
Jump to: navigation, search
Line 1: Line 1:
 
{{Languages|ALPS_2_Tutorials:MC-08_Quantum_Phase_Transition}}
 
{{Languages|ALPS_2_Tutorials:MC-08_Quantum_Phase_Transition}}
  
<!--
 
In this tutorial we will learn how to detect quantum critical points in a quantum spin model. The model we are going to look at is the square lattice quantum Heisenberg model with dimerization in the form of ladder arrangements. Ladders with coupling <math>J_0</math> on the legs and <math>J_1</math> on the rungs are coupled together with coupling strength <math>J_2</math>. The model is depicted in Fig. 1 of  [http://prb.aps.org/abstract/PRB/v79/i1/e014410 Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)], albeit with different notations. In this tutorial we will consider the case <math>J_0=J_1=1</math>, and vary the interladder coupling <math>J_2</math>. Even though there are no phase transitions at finite temperatures in 2D Heisenberg models (Mermin-Wagner Theorem), transitions between different ground-states can occur at <math>T=0</math>.二次元のハイゼンベルグモデル()
 
-->
 
  
 
このチュートリアルでは、量子スピンモデルで量子臨界点を検出する方法を学習します。ここで対象とするモデルは立方格子の梯子状の二量体の量子ハイゼンベルグモデルです。足に<math>J_0</math>の結合と横木に<math>J_1</math>結合を持つ梯子は<math>J_2</math>の強さで結合しています。このモデルは少し異なりますが、[http://prb.aps.org/abstract/PRB/v79/i1/e014410 Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)]のFig.1を参照してください。このチュートリアルでは、<math>J_2</math>結合間をさせる<math>J_0=J_1=1</math>を考えます。二次元のハイゼンベルグモデル(Mermin‐Wagnerの定理)の有限温度では相転移が存在しないにもかかわらず、異なる定常状態が<math>T=0</math>で現れる可能性があります。
 
このチュートリアルでは、量子スピンモデルで量子臨界点を検出する方法を学習します。ここで対象とするモデルは立方格子の梯子状の二量体の量子ハイゼンベルグモデルです。足に<math>J_0</math>の結合と横木に<math>J_1</math>結合を持つ梯子は<math>J_2</math>の強さで結合しています。このモデルは少し異なりますが、[http://prb.aps.org/abstract/PRB/v79/i1/e014410 Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)]のFig.1を参照してください。このチュートリアルでは、<math>J_2</math>結合間をさせる<math>J_0=J_1=1</math>を考えます。二次元のハイゼンベルグモデル(Mermin‐Wagnerの定理)の有限温度では相転移が存在しないにもかかわらず、異なる定常状態が<math>T=0</math>で現れる可能性があります。

Revision as of 06:26, 28 March 2012


このチュートリアルでは、量子スピンモデルで量子臨界点を検出する方法を学習します。ここで対象とするモデルは立方格子の梯子状の二量体の量子ハイゼンベルグモデルです。足にJ_0の結合と横木にJ_1結合を持つ梯子はJ_2の強さで結合しています。このモデルは少し異なりますが、Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)のFig.1を参照してください。このチュートリアルでは、J_2結合間をさせるJ_0=J_1=1を考えます。二次元のハイゼンベルグモデル(Mermin‐Wagnerの定理)の有限温度では相転移が存在しないにもかかわらず、異なる定常状態がT=0で現れる可能性があります。

CoupledLadder.jpg

相転移の特定

まず最初に、2つのシンプルな制限を設けます。分離している梯子(J_2=0)と等方的な正方格子(J_2=1)です。分離した梯子は短距離相関と基底状態を持っており、有限のスピンギャップを示します。これは液相でのスピンです。一方、正方格子では、有限のスタガード磁化と長距離秩序が表示されます。これは反強磁性ネール相を示します。 このような2つの異なった二つの相の問題に対するシンプルな方法は、磁化率で\chiをを見ることです。この2つの異なったケースについて以下の温度を用いて8x8のシミュレーションをおこなってみましょう。プロットとで帯磁率を比較し、両方の( J_2=0)と等方性( J_2=1)状況で分離する必要があります。分離した梯子で、磁化率は、スピンギャップの存在に起因する低い温度で活性化の挙動を示します。しかし、正方格子の系では、磁化率は低いTで定数のように振る舞います。有限系では、\chiは常に、最終的には有限サイズのギャップが存在するため、小さいTでゼロになる傾向があることに注意してください。これらのチュートリアルはファイルparm8aで実行することができます。

parameter2xml parm8a
loop parm8a.in.xml


またはPythonスクリプトを使用して、tutorial8a.py

import pyalps
import matplotlib.pyplot as plt
import pyalps.pyplot
import numpy as np
import pyalps.fit_wrapper as fw
from math import sqrt

#prepare the input parameters
parms = []
for j2 in [0.,1.]:
    for t in [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]:
        parms.append(
            { 
              'LATTICE'        : "coupled ladders", 
              'LATTICE_LIBRARY': 'lattices.xml',
              'MODEL_LIBRARY'  : 'models.xml',
              'local_S'        : 0.5,
              'ALGORITHM'      : 'loop',
              'SEED'           : 0,
              'T'              : t,
              'J0'             : 1 ,
              'J1'             : 1,
              'J2'             : j2,
              'THERMALIZATION' : 5000,
              'SWEEPS'         : 50000, 
              'MODEL'          : "spin",
              'L'              : 8,
              'W'              : 4
            }
    )

#write the input file and run the simulation
input_file = pyalps.writeInputFiles('parm8a',parms)
pyalps.runApplication('loop',input_file) 


J_2=0では、スピンギャップの値は、次の式(Phys. Rev. B 50, 13515 (1994)で派生した)\chi=A/\sqrt{T}\exp(-\Delta/T)を使用して、帯磁率の有限温度の振る舞いによって、推定することができます。Aとスピンギャップ \Deltaはフィッティングパラメータです。T\leq1をフィッティングしてみてください。そして、スピンギャップの正確な値を見積もってください。(Phys. Rev. Lett. 73, 886 (1994) or Phys. Rev. Lett. 77, 1865 (1996))のような文献の値と比較してみてください。 ここにpythonでのサンプル例を示します。参照してください。


lines = []
for data in susc1:
    pars = [fw.Parameter(1), fw.Parameter(1)]
    data.y= data.y[data.x < 1]
    data.x= data.x[data.x < 1]
    f = lambda self, x, pars: (pars[0]()/np.sqrt(x))*np.exp(-pars[1]()/x)
    fw.fit(None, f, pars, [v.mean for v in data.y], data.x)
    prefactor = pars[0].get()
    gap = pars[1].get()
    print prefactor,gap
    
    lines += plt.plot(data.x, f(None, data.x, pars))
    lines[-1].set_label('$J_2=%.4s$: $\chi = \\frac{%.4s}{T}\exp(\\frac{-%.4s}{T})$' % (data.props['J2'], prefactor,gap))

相転移の場所

2つの相、J_2=0J_2=1を比較するために、少なくとも1つの量子相転移を分離しなくていはいけません。結合範囲を J_2 \in [0.2,0.4] 、システムサイズL=8,10,12,16、逆温度\beta=2.Lの条件でシミュレーションをおこないます。他のパラメータはファイルparm8bです。また、pythonスクリプトはtutorial8b.pyです。

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

#prepare the input parameters
parms = []
for l in [8,10,12,16]:
    for j2 in [0.2,0.25,0.3,0.35,0.4]:
        parms.append(
            { 
              'LATTICE'        : "coupled ladders", 
              'LATTICE_LIBRARY': 'lattices.xml',
              'MODEL_LIBRARY'  : 'models.xml',
              'local_S'        : 0.5,
              'ALGORITHM'      : 'loop',
              'SEED'           : 0,
              'BETA'           : 2*l,
              'J0'             : 1 ,
              'J1'             : 1,
              'J2'             : j2,
              'THERMALIZATION' : 5000,
              'SWEEPS'         : 50000, 
              'MODEL'          : "spin",
              'L'              : l,
              'W'              : l/2
            }
    )

#write the input file and run the simulation
input_file = pyalps.writeInputFiles('parm8a',parms)
pyalps.runApplication('loop',input_file)


staggered磁化、バインダーキュムラント、スピン剛性

古典モンテカルロのチュートリアルのように、反強磁性相のパラメーターであるstaggered磁化m_sのバインダーキュムラントU_4=<m_s^4> /<m_s^2>^2の分析によって相転移を特定します。バインダーキュムラントの交点は、このチュートリアルで勉強したモデルの小さなシステムのサイズに大きな偏差を示していますので、より小さい有限サイズ補正(Wenzel and Janke, Phys. Rev. B 79, 014410 (2009))を持つスピン剛性を考慮します。この計算量は\rho_s = \frac{3}{4\beta} <w_x^2 + w_y^2>で与えられます。x-,y-に沿った世界線の曲線番号w_x,w_yで、これらは量子臨界点で\rho_s \propto L^{d-2-z}としてスケールします。dはシステムの次元、zは、動的臨界指数です。z=1\rho_sLの量は、異なるシステムのシステムサイズがLの臨界点で交差しています。バインダーキュムラントとスピン剛性が交差するという事実は、実際に相転移が連続して、初めての現象ではないことを示していることに注意してください。

ロードし、次の行を使用して観測量をプロットすることができます。

data = pyalps.loadMeasurements(pyalps.getResultFiles(pattern='parm8a.task*.out.h5'),['Binder Ratio of Staggered Magnetization','Stiffness'])
binder=pyalps.collectXY(data,x='J2',y='Binder Ratio of Staggered Magnetization', foreach=['L'])
stiffness =pyalps.collectXY(data,x='J2',y='Stiffness', foreach=['L'])

for q in stiffness:
    q.y = q.y*q.props['L']

#make plot    
plt.figure()
pyalps.pyplot.plot(stiffness)
plt.xlabel(r'$J2$')
plt.ylabel(r'Stiffness $\rho_s L$')
plt.title('coupled ladders')

plt.figure()
pyalps.pyplot.plot(binder)
plt.xlabel(r'$J_2$')
plt.ylabel(r'$g(m_s)$')
plt.title('coupled ladders')
plt.show()

量子臨界点の見積りはどのようになりますか?

有限温度の影響

このシミュレーションが温度ゼロでおこなわれず、逆温度\beta=T^{-1}=2Lの有限値ではおこなわれたことに気づきましたか?(量子臨界点の特定の推定値)の有限温度によって影響されていないことを確認する必要があります。この簡単な確認方法は、温度を下げ、同じシミュレーションをおこなうことです。結果が影響を受けていなかったら、シミュレーションは収束するでしょう。\beta=2L\beta=4Lと修正して、剛性とバインダーキュムラントの影響を受けるかどうか確認します。また\beta=L/4 でためしてみてください。結果はどうでしたか?

重要なポイントが2つあります。1つ目は、計算時間はおおよそ\betaに比例していることが分かると思います。実際、与えられた経路積分表示が用いられます。それは、量子相でさえ、ここで使用されるループアルゴリズムのスケーリングが最適(実際、有限TQMCアルゴリズムは空間時間体積 \beta.L^dより早くスケールできません)であることを意味します。

第二に、なぜLに比例する逆温度\betaを選んだのでしょうか?実際には、時間と空間のスケールとの間のこの線形関係は、この量子相転移の動的臨界指数の値z=1に由来します。暗黙的に\ rho_s.L</ math>をの交差を見て、それをチェックするでしょう。一般的には、<math>zは団結と等しくなる必要があり、システムのサイズと温度(基底状態のサンプリングを確保するために)の正しいスケーリングをチェックする必要がありません。

臨界点の見積り

量子臨界点J_2^cのおおまかな見積りをおこないました。classical caseでは、臨界指数は、より多くの計算と、特にJ_2^cのより正確な測定を必要とします。


J_2^cの小さなグリッド点での大規模計算をおこないます。パラメータファイルはparm8dです。これらのシミュレーションはかなりの時間を要します。注意してください。staggered磁化U_4 のバインダーキュムラントなど、さまざまなシステムのサイズで、システムサイズの \rho_s.Lを掛け剛性に対してプロットしてください。これらの曲線の交点は、J_2^cのより正確な見積りの助けとなるでしょう。相関長の発散に関連した臨界指数\nuを得るためには、J_2^cで正確に値を求め、これらの量のderivative(J_2^cに関する)のシステムサイズのスケーリングを考慮することが有用です。これらの微分値\frac{dU_4}{d J_2}L \frac{d\rho_s}{d J_2}はモンテカルロの計測値として最初に得られます。しかし、このチュートリアルでは、J_2での小さなグリッドが求められるため、数値微分を実行するのに十分です。

この量子数での異なるシステムサイズに対して数値微分をおこなってください。また、J_2^cでのそれらの値をシステムサイズの関数としてプロットしてみてください。データはべき法則でスケール\frac{dU_4}{d J_2}(J_2^c) \propto L \frac{d\rho_s}{d J_2}(J_2^c) \propto L^{1/\nu}すると思います。

-Exercise :視覚的にclassical caseのように値を見積もることができると思います。U_4 \rho_s.Lのスケーリングの方法は、古典相転移のバインダーキュムラントのときと同じです。

z\nuを除いて、指数\etaは次のように求めることが可能です。古典的な場合、臨界点での磁化率は\chi_s (J_2^c) \sim L^{2-\eta}のようにスケールします。この最後の式で1つのパラメータの変動に関連した磁化率を考慮する必要があることに注意してください。すなわち、ここでは均一な磁化率\chiではなく、staggered susceptibility\chi_sのシステムサイズを元にスケーリングするべきです。システムサイズの関数として、J_2^cでの\chi_sをプロットしてください。\etaはどうなりますか?

このチュートリアルでの量子相転移の学習は、3次元古典ハイゼンベルグモデルの有限温度での相転移の普遍的な問題になります。求めた臨界点\nuとここPhys. Rev. B 65, 144520 (2002)で述べられている値とを比較してみてください。

2番目の臨界点の推定

このモデルでは、高いJ_2の値で量子相転移を起こすだけではなく、他の量子相転移を見つけることができ、また、パラメータによって同じような解析をおこなうことが出来ます。ここでは、次の行を変更します。

for j2 in [0.2,0.25,0.3,0.35,0.4]:

by

for j2 in [1.8,1.85,1.9,1.95,2.,2.05,2.1]:

シミュレーションを実行し、プロットしてみてください。pythonでの実行はスクリプトtutorial8c.pyを参照してください。Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)の結果と得られた結果を比較してみてください。

Vistrails での実行

Vistrailsでの実行は、mc-08-quantum-phase-transition.vtを参照してください。