Difference between revisions of "ALPS 2 Tutorials:ED-03 Spectra/ja"
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 10: | Line 10: | ||
=== コマンドラインでのシミュレーションの実行 === | === コマンドラインでのシミュレーションの実行 === | ||
− | 最初に、S=1/2鎖のハイゼンベルグ結合を例にあげます。 パラメータファイル[http://alps.comp-phys.org/static/tutorials2. | + | 最初に、S=1/2鎖のハイゼンベルグ結合を例にあげます。 パラメータファイル[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/parm_chain parm_chain]は、L=10,...16、S_z=0のEDシミュレーションを設定します。 |
LATTICE = "chain lattice", | LATTICE = "chain lattice", | ||
Line 30: | Line 30: | ||
=== Pythonでのシミュレーションの実行 === | === Pythonでのシミュレーションの実行 === | ||
− | Pythonを使った計算の実行方法を記述したスクリプト[http://alps.comp-phys.org/static/tutorials2. | + | Pythonを使った計算の実行方法を記述したスクリプト[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/chain.py chain.py]を使用します。計算の実行には、Python起動ツールalpspythonやvispythonを使用します。 |
どのように入力データや計算もジュールを定義するか、次のスクリプトを参照してください。 | どのように入力データや計算もジュールを定義するか、次のスクリプトを参照してください。 | ||
Line 92: | Line 92: | ||
=== Vistrailsでのシミュレーションの実行 === | === Vistrailsでのシミュレーションの実行 === | ||
− | Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2. | + | Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/ed-03-spectra.vt ed-03-spectra.vt]を開き、"Chain"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。 |
== 二脚Heisenberg梯子 == | == 二脚Heisenberg梯子 == | ||
− | 上記の計算例の入力パラメータを修正することで、ハイゼンベルグスピンの二脚梯子のスペクトルを計算することができます。修正したパラメターは[http://alps.comp-phys.org/static/tutorials2. | + | 上記の計算例の入力パラメータを修正することで、ハイゼンベルグスピンの二脚梯子のスペクトルを計算することができます。修正したパラメターは[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/parm_ladder parm_ladder]です。 |
LATTICE = "ladder" | LATTICE = "ladder" | ||
Line 109: | Line 109: | ||
{ L = 10; } | { L = 10; } | ||
− | "chain lattice"を"ladder"に変更します。また、legs,rungsの2つの結合定数<tt>J0, J1</tt>を定義します。他に、ladderは<tt>2 L</tt>スピンを持つのでシステムサイズ<tt>L</tt>を縮小します。pythonスクリプトでも同様の修正をおこないます。修正後のスクリプトは、[http://alps.comp-phys.org/static/tutorials2. | + | "chain lattice"を"ladder"に変更します。また、legs,rungsの2つの結合定数<tt>J0, J1</tt>を定義します。他に、ladderは<tt>2 L</tt>スピンを持つのでシステムサイズ<tt>L</tt>を縮小します。pythonスクリプトでも同様の修正をおこないます。修正後のスクリプトは、[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/ladder.py ladder.py]です。 |
− | Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2. | + | Vistrailsを用いた計算の実行のチュートリアル[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/ed-03-spectra.vt ed-03-spectra.vt]を開き、"Ladder"のワークフローを見てください。入力ファイルの生成、計算の実行、計算の出力を設定する"Execute"をクリックしてください。 |
== 分離二量体 == | == 分離二量体 == | ||
− | isolated dimersの計算方法です。パラメータファイルは[http://alps.comp-phys.org/static/tutorials2. | + | isolated dimersの計算方法です。パラメータファイルは[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/parm_dimers parm_dimers]、Pythonスクリプトは[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/dimers.py dimers.py]、Vistrailsのワークフローファイルは[http://alps.comp-phys.org/static/tutorials2.2.0/ed-03-1dspectra/ed-03-spectra.vt ed-03-spectra.vt]、です。 |
== 質疑 == | == 質疑 == |
Revision as of 22:03, 28 September 2013
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
Contents
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'))
各システムサイズLのDataSetの全運動量からエネルギーを抽出します。くわえて、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はどうなりますか?