Difference between revisions of "ALPS 2 Tutorials:MC-08 Quantum Phase Transition/ja"
Line 1: | Line 1: | ||
{{Languages|ALPS_2_Tutorials:MC-08_Quantum_Phase_Transition}} | {{Languages|ALPS_2_Tutorials:MC-08_Quantum_Phase_Transition}} | ||
− | |||
− | |||
− | |||
このチュートリアルでは、量子スピンモデルで量子臨界点を検出する方法を学習します。ここで対象とするモデルは立方格子の梯子状の二量体の量子ハイゼンベルグモデルです。足に<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 07:26, 28 March 2012
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
このチュートリアルでは、量子スピンモデルで量子臨界点を検出する方法を学習します。ここで対象とするモデルは立方格子の梯子状の二量体の量子ハイゼンベルグモデルです。足にの結合と横木に
結合を持つ梯子は
の強さで結合しています。このモデルは少し異なりますが、Wenzel and Janke, Phys. Rev. B 79, 014410 (2009)のFig.1を参照してください。このチュートリアルでは、
結合間をさせる
を考えます。二次元のハイゼンベルグモデル(Mermin‐Wagnerの定理)の有限温度では相転移が存在しないにもかかわらず、異なる定常状態が
で現れる可能性があります。
Contents
相転移の特定
まず最初に、2つのシンプルな制限を設けます。分離している梯子()と等方的な正方格子(
)です。分離した梯子は短距離相関と基底状態を持っており、有限のスピンギャップを示します。これは液相でのスピンです。一方、正方格子では、有限のスタガード磁化と長距離秩序が表示されます。これは反強磁性ネール相を示します。
このような2つの異なった二つの相の問題に対するシンプルな方法は、磁化率で
をを見ることです。この2つの異なったケースについて以下の温度を用いて8x8のシミュレーションをおこなってみましょう。プロットとで帯磁率を比較し、両方の(
)と等方性(
)状況で分離する必要があります。分離した梯子で、磁化率は、スピンギャップの存在に起因する低い温度で活性化の挙動を示します。しかし、正方格子の系では、磁化率は低いTで定数のように振る舞います。有限系では、
は常に、最終的には有限サイズのギャップが存在するため、小さい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)
では、スピンギャップの値は、次の式(Phys. Rev. B 50, 13515 (1994)で派生した)
を使用して、帯磁率の有限温度の振る舞いによって、推定することができます。
とスピンギャップ
はフィッティングパラメータです。
をフィッティングしてみてください。そして、スピンギャップの正確な値を見積もってください。(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つの相、と
を比較するために、少なくとも1つの量子相転移を分離しなくていはいけません。結合範囲を
、システムサイズ
、逆温度
の条件でシミュレーションをおこないます。他のパラメータはファイル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磁化のバインダーキュムラント
の分析によって相転移を特定します。バインダーキュムラントの交点は、このチュートリアルで勉強したモデルの小さなシステムのサイズに大きな偏差を示していますので、より小さい有限サイズ補正(Wenzel and Janke, Phys. Rev. B 79, 014410 (2009))を持つスピン剛性を考慮します。この計算量は
で与えられます。x-,y-に沿った世界線の曲線番号
で、これらは量子臨界点で
としてスケールします。dはシステムの次元、zは、動的臨界指数です。
と
の量は、異なるシステムのシステムサイズが
の臨界点で交差しています。バインダーキュムラントとスピン剛性が交差するという事実は、実際に相転移が連続して、初めての現象ではないことを示していることに注意してください。
ロードし、次の行を使用して観測量をプロットすることができます。
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()
量子臨界点の見積りはどのようになりますか?
有限温度の影響
このシミュレーションが温度ゼロでおこなわれず、逆温度の有限値ではおこなわれたことに気づきましたか?(量子臨界点の特定の推定値)の有限温度によって影響されていないことを確認する必要があります。この簡単な確認方法は、温度を下げ、同じシミュレーションをおこなうことです。結果が影響を受けていなかったら、シミュレーションは収束するでしょう。
を
と修正して、剛性とバインダーキュムラントの影響を受けるかどうか確認します。また
でためしてみてください。結果はどうでしたか?
重要なポイントが2つあります。1つ目は、計算時間はおおよそに比例していることが分かると思います。実際、与えられた経路積分表示が用いられます。それは、量子相でさえ、ここで使用されるループアルゴリズムのスケーリングが最適(実際、有限TQMCアルゴリズムは空間時間体積
より早くスケールできません)であることを意味します。
第二に、なぜに比例する逆温度
を選んだのでしょうか?実際には、時間と空間のスケールとの間のこの線形関係は、この量子相転移の動的臨界指数の値
に由来します。暗黙的に
は団結と等しくなる必要があり、システムのサイズと温度(基底状態のサンプリングを確保するために)の正しいスケーリングをチェックする必要がありません。
臨界点の見積り
量子臨界点のおおまかな見積りをおこないました。classical caseでは、臨界指数は、より多くの計算と、特に
のより正確な測定を必要とします。
の小さなグリッド点での大規模計算をおこないます。パラメータファイルはparm8dです。これらのシミュレーションはかなりの時間を要します。注意してください。staggered磁化
のバインダーキュムラントなど、さまざまなシステムのサイズで、システムサイズの
を掛け剛性に対してプロットしてください。これらの曲線の交点は、
のより正確な見積りの助けとなるでしょう。相関長の発散に関連した臨界指数
を得るためには、
で正確に値を求め、これらの量のderivative(
に関する)のシステムサイズのスケーリングを考慮することが有用です。これらの微分値
や
はモンテカルロの計測値として最初に得られます。しかし、このチュートリアルでは、
での小さなグリッドが求められるため、数値微分を実行するのに十分です。
この量子数での異なるシステムサイズに対して数値微分をおこなってください。また、でのそれらの値をシステムサイズの関数としてプロットしてみてください。データはべき法則でスケール
すると思います。
-Exercise :視覚的にclassical caseのように値を見積もることができると思います。と
のスケーリングの方法は、古典相転移のバインダーキュムラントのときと同じです。
と
を除いて、指数
は次のように求めることが可能です。古典的な場合、臨界点での磁化率は
のようにスケールします。この最後の式で1つのパラメータの変動に関連した磁化率を考慮する必要があることに注意してください。すなわち、ここでは均一な磁化率
ではなく、staggered susceptibilityな
のシステムサイズを元にスケーリングするべきです。システムサイズの関数として、
での
をプロットしてください。
はどうなりますか?
このチュートリアルでの量子相転移の学習は、3次元古典ハイゼンベルグモデルの有限温度での相転移の普遍的な問題になります。求めた臨界点とここPhys. Rev. B 65, 144520 (2002)で述べられている値とを比較してみてください。
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を参照してください。