Difference between revisions of "ALPS 2 Tutorials:ED-04 Criticality/ja"

From ALPS
Jump to: navigation, search
(イジング鎖)
m (Text replace - "/tutorials2.0.0/" to "/tutorials2.1.0/")
Line 33: Line 33:
 
<!--We therefore expect scaling dimensions of <math>0, 1/8, 1, 1+1/8</math> to appear in the CFT of the Ising model. To see this, we will rescale all energies of the spectrum according to <math>E \rightarrow \frac{E-E_0}{(E_1-E_0)*1/8}</math>. This will force the two lowest states to occur where we expect the scaling dimensions; we can then check whether the rest of the spectrum is consistent with this.-->
 
<!--We therefore expect scaling dimensions of <math>0, 1/8, 1, 1+1/8</math> to appear in the CFT of the Ising model. To see this, we will rescale all energies of the spectrum according to <math>E \rightarrow \frac{E-E_0}{(E_1-E_0)*1/8}</math>. This will force the two lowest states to occur where we expect the scaling dimensions; we can then check whether the rest of the spectrum is consistent with this.-->
 
== Pythonでの実行 ==
 
== Pythonでの実行 ==
Pythonを使った計算の実行方法を記述したスクリプト[https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/ising.py]を使用します。スクリプトの最初の部分は計算モデルや、入力ファイルのインポートをおこないます。
+
Pythonを使った計算の実行方法を記述したスクリプト[https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/ising.py]を使用します。スクリプトの最初の部分は計算モデルや、入力ファイルのインポートをおこないます。
<!--Let us first go through the Python version of this tutorial. It can be found in [https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/ising.py]. We will first import some modules:-->
+
<!--Let us first go through the Python version of this tutorial. It can be found in [https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/ising.py]. We will first import some modules:-->
  
 
  import pyalps
 
  import pyalps
Line 111: Line 111:
  
 
== Vistrailsでの実行 ==
 
== Vistrailsでの実行 ==
<!--The Vistrails version of this tutorial is part of the file [https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/ed-04-criticality.vt].-->
+
<!--The Vistrails version of this tutorial is part of the file [https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/ed-04-criticality.vt].-->
Vistrailsを用いた計算の実行のチュートリアル[https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/ed-04-criticality.vt]を参照してください。
+
Vistrailsを用いた計算の実行のチュートリアル[https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/ed-04-criticality.vt]を参照してください。
  
 
== コマンドラインでの実行 ==
 
== コマンドラインでの実行 ==
コマンドラインでの実行に使用するパラメータファイルは、[https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/parm_ising here]を参照してください。
+
コマンドラインでの実行に使用するパラメータファイルは、[https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/parm_ising here]を参照してください。
  
 
= ハイゼンベルグ鎖 =
 
= ハイゼンベルグ鎖 =
Line 123: Line 123:
 
<math>H = \sum_{\langle i,j \rangle} \mathbf{S}^i \cdot \mathbf{S}^j</math>
 
<math>H = \sum_{\langle i,j \rangle} \mathbf{S}^i \cdot \mathbf{S}^j</math>
  
<!--The critical theory for this model has a central charge c=1 with primary fields 0, 0.5 and 1. As opposed to the Ising model, finite-size corrections vanish only logarithmically and are therefore quite pronounced at the system sizes we reach. The [https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/heisenberg.py Python file] is analogous to the above description and will therefore not be described here in detail. The primary difference is that we can make use of the <math>U(1)</math> symmetry of the system; we also run the simulations only for the <math>S_z = 0</math> sector, since this contains all the relevant states.-->
+
<!--The critical theory for this model has a central charge c=1 with primary fields 0, 0.5 and 1. As opposed to the Ising model, finite-size corrections vanish only logarithmically and are therefore quite pronounced at the system sizes we reach. The [https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/heisenberg.py Python file] is analogous to the above description and will therefore not be described here in detail. The primary difference is that we can make use of the <math>U(1)</math> symmetry of the system; we also run the simulations only for the <math>S_z = 0</math> sector, since this contains all the relevant states.-->
このモデルの臨界理論はprimary fields 0,0.5及び1においてcentral charge c=1を持ちます。イジングモデルとは反対に、有限サイズ補正は対数的に消えます。すなわち、このサイズでは明らかな結果となります。[https://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/heisenberg.py Pythonファイル]は上記の記述とよく似ているので、ここでは詳細は省略します。異なる点は、この系の計算では<math>U(1)</math>対称性を利用することができ、これは関係する状態をすべて含んでいるため、<math>S_z = 0</math>セクターのみの計算実行で大丈夫です。
+
このモデルの臨界理論はprimary fields 0,0.5及び1においてcentral charge c=1を持ちます。イジングモデルとは反対に、有限サイズ補正は対数的に消えます。すなわち、このサイズでは明らかな結果となります。[https://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/heisenberg.py Pythonファイル]は上記の記述とよく似ているので、ここでは詳細は省略します。異なる点は、この系の計算では<math>U(1)</math>対称性を利用することができ、これは関係する状態をすべて含んでいるため、<math>S_z = 0</math>セクターのみの計算実行で大丈夫です。
  
 
<!--Looking at the spectrum, try to identify the different scaling fields and how they approach the correct values as the system size is increased. You will notice that this is quite difficult. For a detailed discussion of the system, refer to [http://dx.doi.org/10.1088/0305-4470/22/5/015 I Affleck et al 1989 J. Phys. A: Math. Gen. 22 511] and the next tutorial.-->
 
<!--Looking at the spectrum, try to identify the different scaling fields and how they approach the correct values as the system size is increased. You will notice that this is quite difficult. For a detailed discussion of the system, refer to [http://dx.doi.org/10.1088/0305-4470/22/5/015 I Affleck et al 1989 J. Phys. A: Math. Gen. 22 511] and the next tutorial.-->
Line 130: Line 130:
  
 
== コマンドラインでの実行 ==
 
== コマンドラインでの実行 ==
パラメータファイルは[http://alps.comp-phys.org/static/tutorials2.0.0/ed-04-criticality/parm_heisenberg こちら]を参照してください。
+
パラメータファイルは[http://alps.comp-phys.org/static/tutorials2.1.0/ed-04-criticality/parm_heisenberg こちら]を参照してください。

Revision as of 22:09, 10 May 2012


このチュートリアルでは、臨界スピン鎖と共形場の理論について学びます。

イジング鎖

まず最初に、次のハミルトニアンで与えられる臨界イジング鎖を例とします。

H=J_{z} \sum_{\langle i,j \rangle} S^i_z S^j_z + \Gamma \sum_i S^i_x

第一項は近接ペアの和です。\Gammaは横磁場を表しています。系は\Gamma/J=\frac{1}{2}で臨界となります。基底状態はJ>0で反強磁性物質、J < 0で強磁性体となります。系は正確に解くことができます。(P. Pfeuty, Annals of Physics: 57, 79-90 (1970)).

臨界点では、この系は共形場の理論によって説明されます(参照してください。this review by John Cardy) この場合、低位励起状態はCFT場として認識されます。このエネルギーはその演算子のスケーリングdimensionと呼ばれるものと関係があります。スケーリングdimensionの物理的意義は共形場理論の一定の相関関数の振る舞いを記述することです。たとえば、ある磁場(凖一磁場)の二点の相関は次のように表されます。
\langle \phi(r_1) \phi(r_2) \rangle \sim |r_1 - r_2|^{-2\Delta}.
上記の式では、Δはその場のスケーリングの次元を表します。一次場と呼ばれる最も低いグループで発生します。また、次元のスケーリング\Delta + n, n \in \lbrace 1, 2, 3, ... \rbraceで表現されます。イジングモデル(上記論文では式(3.7))の厳密解では、長期rangle相関関係は、次のように減衰することが判明されています。 さらに、我々は、アイデンティティ演算子のスケーリング次元は0であることを期待しています。

イジングモデルの厳密解(上記論文のEq. (3.7))では、長距離相関は次のように減衰します。
\langle S^i_z S^{i+n}_z \rangle \sim n^{-2*1/8}
\langle S^i_y S^{i+n}_y \rangle \sim n^{-2*(1+1/8)}
\langle S^i_x S^{i+n}_x \rangle \sim n^{-2*1}
さらに、我々は、恒等演算子のスケーリング次元は0であることを予想します。

また、0, 1/8, 1, 1+1/8のスケーリングの次元がイジングモデルのCFTで現れることを予想しています。これらを確認するためにすべてのエネルギーをE \rightarrow \frac{E-E_0}{(E_1-E_0)*1/8}のように再スケーリングします。

Pythonでの実行

Pythonを使った計算の実行方法を記述したスクリプト[1]を使用します。スクリプトの最初の部分は計算モデルや、入力ファイルのインポートをおこないます。

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

2つのシステムサイズパラメータを設定します。縦磁場hではなく、横磁場Gammaを使用すること注意してください。

data = []
for L in [10,12]:
    parms.append({
        'LATTICE'    : "chain lattice",
        'MODEL'      : "spin",
        'local_S'    : 0.5,
        'Jxy'        : 0,
        'Jz'         : -1,
        'Gamma'      : 0.5,
        'NUMBER_EIGENVALUES' : 5,
        'L'          : L
    })

2つの系を計算し、入力データを設定し計算をおこないます。

prefix = 'ising'
input_file = pyalps.writeInputFiles(prefix,parms)
res = pyalps.runApplication('sparsediag', input_file)
# res = pyalps.runApplication('sparsediag', input_file, MPI=2, mpirun='mpirun')
data = pyalps.loadEigenstateMeasurements(pyalps.getResultFiles(prefix=prefix))

最後から二番目のコメントアウトしてある行のコメントを外して、ジョブ数、MPIの設定(デフォルトmpirun)をおこなうと、複数のCPUを利用してALPSが実行されます。


E0 = {}
E1 = {}
for Lsets in data:
    L = pyalps.flatten(Lsets)[0].props['L']
    allE = []
    for q in pyalps.flatten(Lsets):
        allE += list(q.y)
    allE = np.sort(allE)
    E0[L] = allE[0]
    E1[L] = allE[1]

ALPSはシミュレーションによってグループ化されたリストのエネルギーをロードするので、上記のコードは正常に動作します。dataはトップレベルと異なる運動量でのシミュレーション結果のリストです。上記の式に従ってエネルギーの再スケールと運動量の関数としてデータを収集します。

for q in pyalps.flatten(data):
    L = q.props['L']
    q.y = (q.y-E0[L])/(E1[L]-E0[L]) * (1./8.)
spectrum = pyalps.collectXY(data, 'TOTAL_MOMENTUM', 'Energy', foreach=['L'])

比較から、最初の場とそのいくつかの派生をプロットします。

for SD in [0.125, 1, 1+0.125, 2]:
    d = pyalps.DataSet()
    d.x = np.array([0,4])
    d.y = SD+0*d.x
    spectrum += [d]

最後に、図を作成します。

pyalps.pyplot.plot(spectrum)
plt.legend(prop={'size':8})
plt.xlabel("$k$")
plt.ylabel("E_0")
plt.xlim(-0.02, math.pi+0.02)
plt.show()

Vistrailsでの実行

Vistrailsを用いた計算の実行のチュートリアル[2]を参照してください。

コマンドラインでの実行

コマンドラインでの実行に使用するパラメータファイルは、hereを参照してください。

ハイゼンベルグ鎖

より難しいサンプル計算を紹介します。スピン-1/2の自由度の反強磁性ハイゼンベルグ鎖についてです。次の式で表されます。

H = \sum_{\langle i,j \rangle} \mathbf{S}^i \cdot \mathbf{S}^j

このモデルの臨界理論はprimary fields 0,0.5及び1においてcentral charge c=1を持ちます。イジングモデルとは反対に、有限サイズ補正は対数的に消えます。すなわち、このサイズでは明らかな結果となります。Pythonファイルは上記の記述とよく似ているので、ここでは詳細は省略します。異なる点は、この系の計算ではU(1)対称性を利用することができ、これは関係する状態をすべて含んでいるため、S_z = 0セクターのみの計算実行で大丈夫です。

スペクトルを見て、異なるスケーリング場の分類と、システムサイズが大きくなると、どのよに正しい値に近づくか考えてみてください。大変難しいことが分かると思います。このシステムでの詳細なディスカッションはI Affleck et al 1989 J. Phys. A: Math. Gen. 22 511や、次のチュートリアルも参照してください。

コマンドラインでの実行

パラメータファイルはこちらを参照してください。