Difference between revisions of "ALPS 2 Tutorials:DMRG-03 Local Observables/ja"

From ALPS
Jump to: navigation, search
m (Text replace - "/tutorials2.0.0/" to "/tutorials2.1.0/")
m (Text replace - "http://alps.comp-phys.org/static/tutorials2.1.0" to "http://alps.comp-phys.org/static/tutorials2.2.0")
 
Line 15: Line 15:
 
=== コマンドラインでの実行 ===
 
=== コマンドラインでの実行 ===
  
以下のパラメータファイル[http://alps.comp-phys.org/static/tutorials2.1.0/dmrg-03-local-observables/spin_one spin_one]は個別の3つのセクタを実行する設定になっています。(前回と同様、ここでは容易に試行できるように、小さい系で計算をおこないます)
+
以下のパラメータファイル[http://alps.comp-phys.org/static/tutorials2.2.0/dmrg-03-local-observables/spin_one spin_one]は個別の3つのセクタを実行する設定になっています。(前回と同様、ここでは容易に試行できるように、小さい系で計算をおこないます)
  
 
  LATTICE_LIBRARY="my_lattices.xml"
 
  LATTICE_LIBRARY="my_lattices.xml"
Line 34: Line 34:
 
=== Pythonでの実行 ===
 
=== Pythonでの実行 ===
  
各3つのスピンに対応したPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.1.0/dmrg-03-local-observables/spin_one.py spin_one.py]です。
+
各3つのスピンに対応したPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.2.0/dmrg-03-local-observables/spin_one.py spin_one.py]です。
  
 
  import pyalps
 
  import pyalps
Line 86: Line 86:
 
=== Vistrailsでの実行 ===
 
=== Vistrailsでの実行 ===
  
[http://alps.comp-phys.org/static/tutorials2.1.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]を開き、ワークフロー”spin 1”を選択してください。
+
[http://alps.comp-phys.org/static/tutorials2.2.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]を開き、ワークフロー”spin 1”を選択してください。
  
 
== スピン1/2鎖の磁化 ==
 
== スピン1/2鎖の磁化 ==
Line 112: Line 112:
 
=== Pythonでの実行 ===
 
=== Pythonでの実行 ===
  
Pythonでの実行も、上記のspin-1の時とあまり変更はありません。[http://alps.comp-phys.org/static/tutorials2.1.0/dmrg-03-local-observables/spin_one_half.py spin_one_half.py]を参照してください。
+
Pythonでの実行も、上記のspin-1の時とあまり変更はありません。[http://alps.comp-phys.org/static/tutorials2.2.0/dmrg-03-local-observables/spin_one_half.py spin_one_half.py]を参照してください。
  
 
=== Vistrailsでの実行 ===
 
=== Vistrailsでの実行 ===
  
ワークフロー"spin 1/2"を選択してください。ファイルは[http://alps.comp-phys.org/static/tutorials2.1.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]です。
+
ワークフロー"spin 1/2"を選択してください。ファイルは[http://alps.comp-phys.org/static/tutorials2.2.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]です。

Latest revision as of 23:02, 28 September 2013

局所観測量

局所観測量とは、ある特定のサイトでの観測量と考えます。スピン鎖の場合、局所観測量は局在磁化 \langle S^z_i \rangle となります。

スピン-1鎖の励起

鎖長L=96D=200を例にします。局在磁化\langle S^z_i \rangle を計算し、磁化セクタ0、1、2での定常状態として、サイトiに対してプロットをおこないます。

開スピンの第一励起は、閉スピン系には存在しない境界励起です。同じく第二励起は、境界励起に加え、興味深いことにバルク励起でもあります。今のところ理由は不明です。したがって第一バルク励起のエネルギーはセクタ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です。