Difference between revisions of "ALPS 2 Tutorials:ED-01 SparseDiagonalization/ja"

From ALPS
Jump to: navigation, search
(コマンドラインでの実行)
(コマンドラインでの実行)
Line 40: Line 40:
  
 
<!--The numbers [( a ) -- ( b )] in the above brackets refer to site indices, i. e. Sz(a)*Sz(b). In the right column one can read off the (complex) value of the correlation function. -->
 
<!--The numbers [( a ) -- ( b )] in the above brackets refer to site indices, i. e. Sz(a)*Sz(b). In the right column one can read off the (complex) value of the correlation function. -->
[( a ) -- ( b )]で示されるa,bの数字は[Sz(a)*Sz(b)]の番号を意味します。右側の()内の値は、相関関数を表しています。
+
[( a ) -- ( b )]で示されるa,bの数字は[Sz(a)*Sz(b)]の番号を意味します。右側の()内の複素数の値は、相関関数を表しています。
  
 
<!--The output for the Sz structure factor for this state looks like-->
 
<!--The output for the Sz structure factor for this state looks like-->

Revision as of 03:26, 12 March 2012


疎行列の対角化

このチュートリアルでは、Lanczosアルゴリズムを用いた疎行列の対角化プログラムの使用方法を学びます。

1次元ハイゼンベルグ鎖の計算

コマンドラインでの実行

パラメータファイルparm1a は、4サイト、S=1鎖の厳密対角化計算を設定します。

 MODEL="spin"
 LATTICE="chain lattice"
 CONSERVED_QUANTUMNUMBERS="Sz"
 MEASURE_STRUCTURE_FACTOR[Structure Factor Sz]=Sz
 MEASURE_CORRELATIONS[Diagonal spin correlations]=Sz
 MEASURE_CORRELATIONS[Offdiagonal spin correlations]="Splus:Sminus"
 local_S=1
 J=1
 {L=4;}

他のコードと計算結果を比較するために、物理量の平均値、ローカルな値、また相関因子、構造因子といった求める計算量のパラメータの指定をおこないます。 さらにカスタムした計算、解析手順は こちらを参照してください。

以下の標準的な計算手順に従い、入力パラメータファイルをXML形式に変換し、sparsediagを実行します。

 parameter2xml parm1a
 sparsediag --write-xml parm1a.in.xml

各セクター(Sz、P)での最小固有値や固有状態が計算されます。Pは全運動量です。出力ファイルparm1.task1.out.xmlは全計算結果が格納されており、インターネットブラウザを用いて閲覧することができます。このチュートリアルのケースでは基底状態は Sz=0, P=0のセクターです。対角スピン相関は、XML形式で次のように示されます。

 Diagonal spin correlations[( 0 ) -- ( 0 )]	(0.666667,0)
 Diagonal spin correlations[( 0 ) -- ( 1 )]	(-0.5,0)
 Diagonal spin correlations[( 0 ) -- ( 2 )]	(0.333333,0)
 Diagonal spin correlations[( 0 ) -- ( 3 )]	(-0.5,0)

[( a ) -- ( b )]で示されるa,bの数字は[Sz(a)*Sz(b)]の番号を意味します。右側の()内の複素数の値は、相関関数を表しています。

Szの構造因子は次のような結果になります。

 Structure Factor Sz[( 0 )]	                5.551115123125783e-17
 Structure Factor Sz[( 1.570796326794897 )]	0.333333333333333
 Structure Factor Sz[( 3.141592653589793 )]	2
 Structure Factor Sz[( 4.71238898038469 )]	0.3333333333333329

[(q)]の数字は、波数を表しています。

パラメータファイルに次の行を加えることで、Szセクターを制限することができます。

 Sz_total=0

Pythonでの実行

Pythonで計算の実行を設定します。Pythonスクリプトtutorial1a.pyを参照してください。次の記述のように、必要なモジュールのインポート、パラメータの定義、入力ファイルの設定、計算の実行をおこないます。

import pyalps
parms = [{ 
         'LATTICE'                   : "chain lattice", 
         'MODEL'                     : "spin",
         'local_S'                   : 1,
         'J'                         : 1,
         'L'                         : 4,
         'CONSERVED_QUANTUMNUMBERS'  : 'Sz',
         'MEASURE_STRUCTURE_FACTOR[Structure Factor S]'        : 'Sz',
         'MEASURE_CORRELATIONS[Diagonal spin correlations]='   : 'Sz',
         'MEASURE_CORRELATIONS[Offdiagonal spin correlations]' : 'Splus:Sminus'
       }]
input_file = pyalps.writeInputFiles('parm1a',parms)
res = pyalps.runApplication('sparsediag',input_file)

計算の実行には、起動スクリプトのalpspythonvispythonを使用します。前節でおこなったコマンドラインでの実行結果と同じ出力結果が得られます。

次に、各固有状態の計測結果をロードします。

data = pyalps.loadEigenstateMeasurements(pyalps.getResultFiles(prefix='parm1a'))

最後に、基底状態の結果を図示します。

for sector in data[0]:
  print '\nSector with Sz =', sector[0].props['Sz'], 
  print 'and k =', sector[0].props['TOTAL_MOMENTUM']
  for s in sector:
    if pyalps.size(s.y[0])==1:
      print s.props['observable'], ' : ', s.y[0]
    else:
      for (x,y) in zip(s.x,s.y[0]):
        print  s.props['observable'], '(', x, ') : ', y

Vistrailでの実行

Vistrailsでの計算実行は、ed-01-sparsediag.vtを参照してください。