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

From ALPS
Jump to: navigation, search
(Created page with "{{Languages|ALPS_2_Tutorials:DMRG-03_Local_Observables}} = 局所観測量 = <!--As local observables we consider observables that are linked to one specific site. In the case …")
 
Line 3: Line 3:
 
= 局所観測量 =
 
= 局所観測量 =
  
<!--As local observables we consider observables that are linked to one specific site. In the case of spin chains, the meaningful local observable is the local magnetization <math>\langle S^z_i \rangle </math>.-->
+
局所観測量とは、ある特定のサイトでの観測量と考えます。スピン鎖の場合、局所観測量は局在磁化 <math>\langle S^z_i \rangle </math>となります。
局所観測量とは、ある固定のサイトでの観測量と考えます。スピン鎖の場合、局所観測量は局在磁化 <math>\langle S^z_i \rangle </math>となります。
 
  
 
== スピン-1鎖の励起 ==
 
== スピン-1鎖の励起 ==
  
<!--Take a chain of length <math>L=96</math> and <math>D=200</math>. Calculate the local magnetization <math>\langle S^z_i \rangle </math> and plot it versus the site <math>i</math> for the ground states in the magnetisation sectors 0, 1, and 2.-->
 
 
鎖長<math>L=96</math>と<math>D=200</math>を例にします。局在磁化<math>\langle S^z_i \rangle </math>を計算し、磁化セクタ0、1、2での定常状態として、サイト<math>i</math>に対してプロットをおこないます。
 
鎖長<math>L=96</math>と<math>D=200</math>を例にします。局在磁化<math>\langle S^z_i \rangle </math>を計算し、磁化セクタ0、1、2での定常状態として、サイト<math>i</math>に対してプロットをおこないます。
  
<!--What you should obtain is an essentially flat curve for sector 0, a magnetisation which is essentially concentrated at the chain ends for sector 1, and a magnetisation which is both at the chain ends and in the bulk of the chain for sector 2. This means that the first excitation of the open chain is a boundary excitation, which would not exist on a closed system, and the second excitation of the open chain is a boundary plus a bulk excitation, which is the one we are interested in. For an as of now unknown reason, the energy of the first bulk excitation therefore has to be extracted from comparing sectors 1 and 2.-->
+
開スピンの第一励起は、閉スピン系には存在しない境界励起です。同じく第二励起は、境界励起に加え、興味深いことにバルク励起でもあります。今のところ理由は不明です。したがって第一バルク励起のエネルギーはセクタ1、2を比較して抽出しなくてはなりません。
開スピンの第一励起は、閉スピン系には存在しない境界励起です。同じく第二励起は、境界励起に加え、興味深いことにバルク励起でもあります。今のところ理由は不明です。したがって第一バルク励起のエネルギーはせくた1、2を比較して抽出しなくてはなりません。
 
  
<!--The morale of the story is that by looking at this local observable, we can distinguish boundary from bulk excitations in the spin-1 chain.-->
 
 
この局所的な現象を見ることによって、スピン-1鎖でのバルク励起から境界励起を見分けることが可能になります。
 
この局所的な現象を見ることによって、スピン-1鎖でのバルク励起から境界励起を見分けることが可能になります。
  
 
=== コマンドラインでの実行 ===
 
=== コマンドラインでの実行 ===
  
<!--The following parameter file [http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one spin_one] will setup three individual runs, one for each spin sector (same as before, we shall use a smaller system and number of states for illustration):-->
 
 
以下のパラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one spin_one]は個別の3つのセクタを実行する設定になっています。(前回と同様、ここでは容易に試行できるように、小さい系で計算をおこないます)
 
以下のパラメータファイル[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one spin_one]は個別の3つのセクタを実行する設定になっています。(前回と同様、ここでは容易に試行できるように、小さい系で計算をおこないます)
  
Line 39: Line 34:
 
=== Pythonでの実行 ===
 
=== Pythonでの実行 ===
  
<!--The script [http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one.py spin_one.py] runs one simulation for each of the three spin sectors.-->
 
 
各3つのスピンに対応したPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one.py spin_one.py]です。
 
各3つのスピンに対応したPythonスクリプト[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one.py spin_one.py]です。
  
Line 67: Line 61:
 
  res = pyalps.runApplication('dmrg',input_file,writexml=True)
 
  res = pyalps.runApplication('dmrg',input_file,writexml=True)
  
<!--After loading the data files, we can extract the results for the local magnetization-->
 
 
データファイルのローディング後、局所磁化計算の結果を抽出することができます。
 
データファイルのローディング後、局所磁化計算の結果を抽出することができます。
  
Line 81: Line 74:
 
             curves.append(s)
 
             curves.append(s)
  
<!--and plot them.-->
 
 
プロットします。
 
プロットします。
  
Line 94: Line 86:
 
=== Vistrailsでの実行 ===
 
=== Vistrailsでの実行 ===
  
<!--Open the file [http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt] and select the workflow "spin 1".-->
 
 
[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]を開き、ワークフロー”spin 1”を選択してください。
 
[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]を開き、ワークフロー”spin 1”を選択してください。
  
 
== スピン1/2鎖の磁化 ==
 
== スピン1/2鎖の磁化 ==
  
<!--Repeat a similar calculation for the spin-1/2 chain in the lowest magnetisation sectors. What do you observe here?-->
 
 
最低磁化状態のスピン-1/2について同様の計算をおこないます。
 
最低磁化状態のスピン-1/2について同様の計算をおこないます。
  
Line 122: Line 112:
 
=== Pythonでの実行 ===
 
=== Pythonでの実行 ===
  
<!--Apart from the obvious parameter changes, the script [http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one_half.py spin_one_half.py] is the same as the spin_one script explained above.-->
 
 
Pythonでの実行も、上記のspin-1の時とあまり変更はありません。[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one_half.py spin_one_half.py]を参照してください。
 
Pythonでの実行も、上記のspin-1の時とあまり変更はありません。[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/spin_one_half.py spin_one_half.py]を参照してください。
  
 
=== Vistrailsでの実行 ===
 
=== Vistrailsでの実行 ===
  
<!--Select the workflow "spin 1/2" in the file [http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt].-->
 
 
ワークフロー"spin 1/2"を選択してください。ファイルは[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]です。
 
ワークフロー"spin 1/2"を選択してください。ファイルは[http://alps.comp-phys.org/static/tutorials2.0.0/dmrg-03-local-observables/dmrg-03-localobs.vt dmrg-03-localobs.vt]です。

Revision as of 06:20, 16 March 2012

局所観測量

局所観測量とは、ある特定のサイトでの観測量と考えます。スピン鎖の場合、局所観測量は局在磁化 \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です。