Difference between revisions of "ALPS 2 Tutorials:ED-03 Spectra/ja"

From ALPS
Jump to: navigation, search
(質疑)
(質疑)
Line 130: Line 130:
 
<!--* Bonus question: Have a close look at the spectrum of the chain for different system sizes: There seems to be a difference between cases where  
 
<!--* Bonus question: Have a close look at the spectrum of the chain for different system sizes: There seems to be a difference between cases where  
 
<tt>L/2</tt> is even and those where it is odd. Can you explain this? What happens in the TDL where </ttL</tt> goes to infinity?-->
 
<tt>L/2</tt> is even and those where it is odd. Can you explain this? What happens in the TDL where </ttL</tt> goes to infinity?-->
* システムサイズに対する鎖のスペクトルの変化をよく観察してみてください。L/2のときは偶数で、それ以外では奇数になります。これはなぜですか?<tt>L</ttが無限に近づくとTDLはどうなりますか?
+
* システムサイズに対する鎖のスペクトルの変化をよく観察してみてください。L/2のときは偶数で、それ以外では奇数になります。これはなぜですか? <tt>L</tt>が無限に近づくとTDLはどうなりますか?

Revision as of 02:03, 16 March 2012


1次元量子系のスペクトル

このチュートリアルでは、様々な1次元格子上での量子ハイゼンベルグモデルのスペクトルの計算方法を説明します。Lanczosアルゴリズム、反復対角ソルバーで実装されているsparsediagが計算のメイン部分です。

ハイゼンベルグ鎖

コマンドラインでのシミュレーションの実行

最初に、S=1/2鎖のハイゼンベルグ結合を例にあげます。 パラメータファイルparm_chainは、L=10,...16、S_z=0のEDシミュレーションを設定します。

   LATTICE = "chain lattice", 
   MODEL = "spin",
   local_S = 0.5,
   J = 1,
   CONSERVED_QUANTUMNUMBERS = "Sz"
   Sz_total = 0
   { L = 10; }
   { L = 12; }
   { L = 14; }
   { L = 16; }

次の手順で、対角化の計算を実行してください。計算が終了したら、計算結果parm_chain.out.xmlをブラウザで確認してください。

parameter2xml parm_chain
sparsediag --write-xml parm_chain.in.xml

Pythonでのシミュレーションの実行

Pythonを使った計算の実行方法を記述したスクリプトchain.pyを使用します。計算の実行には、Python起動ツールalpspythonやvispythonを使用します。

どのように入力データや計算もジュールを定義するか、次のスクリプトを参照してください。

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

parms=[]
for l in [10, 12, 14, 16]:
    parms.append(
      { 
        'LATTICE'                   : "chain lattice", 
        'MODEL'                     : "spin",
        'local_S'                   : 0.5,
        'J'                         : 1,
        'L'                         : l,
        'CONSERVED_QUANTUMNUMBERS'  : 'Sz',
        'Sz_total'                  : 0
      }
    )

次に、入力パラメーターをXMLジョブファイルに記述し、sparsediag計算を実行します。

input_file = pyalps.writeInputFiles('parm_chain',parms)
res = pyalps.runApplication('sparsediag',input_file)

スペクトルをプロットし、計算結果のHDF5ファイルをロードします。

data = pyalps.loadSpectra(pyalps.getResultFiles(prefix='parm_chain'))

各システムサイズLDataSetの全運動量からエネルギーを抽出します。くわえて、lineやstyleの指定をおこない、全固有値から基底エネルギーを求め、プロットします。

spectra = {}
for sim in data:
  l = int(sim[0].props['L'])
  all_energies = []
  spectrum = pyalps.DataSet()
  for sec in sim:
    all_energies += list(sec.y)
    spectrum.x = np.concatenate((spectrum.x,np.array([sec.props['TOTAL_MOMENTUM'] for i in range(len(sec.y))])))
    spectrum.y = np.concatenate((spectrum.y,sec.y))
  spectrum.y -= np.min(all_energies)
  spectrum.props['line'] = 'scatter'
  spectrum.props['label'] = 'L='+str(l)
  spectra[l] = spectrum

次の手順で、1つの図に異なるサイズで求めたスペクトルをプロットします。

plt.figure()
pyalps.pyplot.plot(spectra.values())
plt.legend()
plt.title('Antiferromagnetic Heisenberg chain (S=1/2)')
plt.ylabel('Energy')
plt.xlabel('Momentum')
plt.xlim(0,2*3.1416)
plt.ylim(0,2)
plt.show()

Vistrailsでのシミュレーションの実行

Vistrailsを用いた計算の実行のチュートリアルed-03-spectra.vtを開き、"Chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。

二脚Heisenberg梯子

上記の計算例の入力パラメータを修正することで、ハイゼンベルグスピンの二脚梯子のスペクトルを計算することができます。修正したパラメターはparm_ladderです。

LATTICE = "ladder"
MODEL = "spin"
local_S = 0.5
J0 = 1
J1 = 1
CONSERVED_QUANTUMNUMBERS = "Sz"
Sz_total = 0
{ L = 6; }
{ L = 8; }
{ L = 10; }

"chain lattice"を"ladder"に変更します。また、legs,rungsの2つの結合定数J0, J1を定義します。他に、ladderは2 Lスピンを持つのでシステムサイズLを縮小します。pythonスクリプトでも同様の修正をおこないます。修正後のスクリプトは、ladder.pyです。

Vistrailsを用いた計算の実行のチュートリアルed-03-spectra.vtを開き、"Ladder"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。

分離二量体

isolated dimersの計算方法です。パラメータファイルはparm_dimers、Pythonスクリプトはdimers.py、Vistrailsのワークフローファイルはed-03-spectra.vt、です。

質疑

  • 様々なサイズから得られるスペクトルは、どのようなバンドをとるのか確認してください。
  • ハイゼンベルグ梯子で、連続束縛状態を特定してください。
  • 鎖、梯子スペクトルの最も大きな差は何ですか?
  • isolated dimersスペクトルとは?
  • 梯子の結合定数を変化させ、どのようにスペクトルが変化するか観察してみてください。
  • システムサイズに対する鎖のスペクトルの変化をよく観察してみてください。L/2のときは偶数で、それ以外では奇数になります。これはなぜですか? Lが無限に近づくとTDLはどうなりますか?