Difference between revisions of "ALPS 2.1 Tutorials:ED-04 Criticality/ja"
m (versioning BOT: creating ALPS 2.1. r4860. release_date: 2012-05-31 23:59:59+00:00.) |
m (versioning BOT: creating ALPS 2.1. Update links.) |
||
Line 1: | Line 1: | ||
− | {{Languages| | + | {{Languages|ALPS_2.1_Tutorials:ED-04_Criticality}} |
Latest revision as of 10:53, 12 September 2013
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
このチュートリアルでは、臨界スピン鎖と共形場の理論について学びます。
イジング鎖
まず最初に、次のハミルトニアンで与えられる臨界イジング鎖を例とします。
第一項は近接ペアの和です。は横磁場を表しています。系は
で臨界となります。基底状態は
で反強磁性物質、
で強磁性体となります。系は正確に解くことができます。(P. Pfeuty, Annals of Physics: 57, 79-90 (1970)).
臨界点では、この系は共形場の理論によって説明されます(参照してください。this review by John Cardy)
この場合、低位励起状態はCFT場として認識されます。このエネルギーはその演算子のスケーリングdimensionと呼ばれるものと関係があります。スケーリングdimensionの物理的意義は共形場理論の一定の相関関数の振る舞いを記述することです。たとえば、ある磁場(凖一磁場)の二点の相関は次のように表されます。
上記の式では、Δはその場のスケーリングの次元を表します。一次場と呼ばれる最も低いグループで発生します。また、次元のスケーリングで表現されます。イジングモデル(上記論文では式(3.7))の厳密解では、長期rangle相関関係は、次のように減衰することが判明されています。 さらに、我々は、アイデンティティ演算子のスケーリング次元は0であることを期待しています。
イジングモデルの厳密解(上記論文のEq. (3.7))では、長距離相関は次のように減衰します。
さらに、我々は、恒等演算子のスケーリング次元は0であることを予想します。
また、のスケーリングの次元がイジングモデルのCFTで現れることを予想しています。これらを確認するためにすべてのエネルギーを
のように再スケーリングします。
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の自由度の反強磁性ハイゼンベルグ鎖についてです。次の式で表されます。
このモデルの臨界理論はprimary fields 0,0.5及び1においてcentral charge c=1を持ちます。イジングモデルとは反対に、有限サイズ補正は対数的に消えます。すなわち、このサイズでは明らかな結果となります。Pythonファイルは上記の記述とよく似ているので、ここでは詳細は省略します。異なる点は、この系の計算では対称性を利用することができ、これは関係する状態をすべて含んでいるため、
セクターのみの計算実行で大丈夫です。
スペクトルを見て、異なるスケーリング場の分類と、システムサイズが大きくなると、どのよに正しい値に近づくか考えてみてください。大変難しいことが分かると思います。このシステムでの詳細なディスカッションはI Affleck et al 1989 J. Phys. A: Math. Gen. 22 511や、次のチュートリアルも参照してください。
コマンドラインでの実行
パラメータファイルはこちらを参照してください。