ALPS 2.1 Tutorials:DMRG-03 Local Observables/ja
From ALPS
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
Contents
局所観測量
局所観測量とは、ある特定のサイトでの観測量と考えます。スピン鎖の場合、局所観測量は局在磁化 となります。
スピン-1鎖の励起
鎖長と
を例にします。局在磁化
を計算し、磁化セクタ0、1、2での定常状態として、サイト
に対してプロットをおこないます。
開スピンの第一励起は、閉スピン系には存在しない境界励起です。同じく第二励起は、境界励起に加え、興味深いことにバルク励起でもあります。今のところ理由は不明です。したがって第一バルク励起のエネルギーはセクタ1、2を比較して抽出しなくてはなりません。
この局所的な現象を見ることによって、スピン-1鎖でのバルク励起から境界励起を見分けることが可能になります。
コマンドラインでの実行
以下のパラメータファイルspin_oneは個別の3つのセクタを実行する設定になっています。(前回と同様、ここでは容易に試行できるように、小さい系で計算をおこないます)
LATTICE_LIBRARY="my_lattices.xml" LATTICE="open chain lattice with special edges 32" MODEL="spin" local_S0=0.5 local_S1=1 CONSERVED_QUANTUMNUMBERS="N,Sz" J=1 NUMBER_EIGENVALUES=1 SWEEPS=4 MEASURE_LOCAL[Local magnetization]=Sz MAXSTATES=40 { Sz_total=0 } { Sz_total=1 } { Sz_total=2 }
Pythonでの実行
各3つのスピンに対応したPythonスクリプトspin_one.pyです。
import pyalps import numpy as np import matplotlib.pyplot as plt import pyalps.plot
parms = [] for sz in [0,1,2]: parms.append( { 'LATTICE_LIBRARY' : 'my_lattices.xml', 'LATTICE' : 'open chain lattice with special edges 32', 'MODEL' : "spin", 'local_S0' : '0.5', 'local_S1' : '1', 'CONSERVED_QUANTUMNUMBERS' : 'N,Sz', 'Sz_total' : sz, 'J' : 1, 'SWEEPS' : 4, 'NUMBER_EIGENVALUES' : 1, 'MAXSTATES' : 40, 'MEASURE_LOCAL[Local magnetization]' : 'Sz' } )
input_file = pyalps.writeInputFiles('parm_spin_one',parms) res = pyalps.runApplication('dmrg',input_file,writexml=True)
データファイルのローディング後、局所磁化計算の結果を抽出することができます。
data = pyalps.loadEigenstateMeasurements(pyalps.getResultFiles(prefix='parm_spin_one'))
curves = [] for run in data: for s in run: if s.props['observable'] == 'Local magnetization': sz = s.props['Sz_total'] s.props['label'] = '$S_z = ' + str(sz) + '$' s.y = s.y.flatten() curves.append(s)
プロットします。
plt.figure() pyalps.plot.plot(curves) plt.legend() plt.title('Magnetization of antiferromagnetic Heisenberg chain (S=1)') plt.ylabel('local magnetization') plt.xlabel('site') plt.show()
Vistrailsでの実行
dmrg-03-localobs.vtを開き、ワークフロー”spin 1”を選択してください。
スピン1/2鎖の磁化
最低磁化状態のスピン-1/2について同様の計算をおこないます。
コマンドラインでの実行
パラメータファイルは以下のように設定します。
LATTICE="open chain lattice" MODEL="spin" CONSERVED_QUANTUMNUMBERS="N,Sz" SWEEPS=4 J=1 NUMBER_EIGENVALUES=1 MEASURE_LOCAL[Local magnetization]=Sz L=32 MAXSTATES=40 { Sz_total=0 } { Sz_total=1 } { Sz_total=2 }
Pythonでの実行
Pythonでの実行も、上記のspin-1の時とあまり変更はありません。spin_one_half.pyを参照してください。
Vistrailsでの実行
ワークフロー"spin 1/2"を選択してください。ファイルはdmrg-03-localobs.vtです。