Difference between revisions of "Tutorials:ModelHOWTO/ja"
(→単一サイトの基底) |
(→単一サイトの基底) |
||
Line 84: | Line 84: | ||
The <code><QUANTUMNUMBER></code> elements each take a name, and minimum and maximum values in the min and max attributes. The quantum numbers can take values between min, min+1, min+2 ... up to max. Optionally, a type attribute can be set to bosonic (the default) or fermionic. It should be set to fermionic when the quantum number is a fermionic number operator. This information will be used when determining commutation relation between operators on different sites. | The <code><QUANTUMNUMBER></code> elements each take a name, and minimum and maximum values in the min and max attributes. The quantum numbers can take values between min, min+1, min+2 ... up to max. Optionally, a type attribute can be set to bosonic (the default) or fermionic. It should be set to fermionic when the quantum number is a fermionic number operator. This information will be used when determining commutation relation between operators on different sites. | ||
--> | --> | ||
− | <code><QUANTUMNUMBER></code>要素では名前と、min,max属性で最大値、最小値を設定します。量子数はmin,min+1,min+2...maxまでの値を取ることができます。オプションとして、type属性で、bosonic(デフォルト) | + | <code><QUANTUMNUMBER></code>要素では名前と、min,max属性で最大値、最小値を設定します。量子数はmin,min+1,min+2...maxまでの値を取ることができます。オプションとして、type属性で、bosonic(デフォルト)とfermionicが選択できます。量子数がフェルミオン数の演算子の時は"fermionic"を指定しなければいけません。これらの情報は異なるサイト間の演算子間での相互作用を考慮するために必要になります。 |
<!-- | <!-- | ||
The range of the quantum numbers can be parametrized by input parameters, and <code>default</code> can be specified such as in | The range of the quantum numbers can be parametrized by input parameters, and <code>default</code> can be specified such as in | ||
--> | --> | ||
− | + | 量子数の範囲は入力パラメータから求められます。次のように<code>default</code>で指定することも可能です。 | |
<SITEBASIS name="boson"> | <SITEBASIS name="boson"> | ||
Line 105: | Line 105: | ||
For more complicated models, such as a <i>t-J</I> model, sometimes several options are possible. We can label the states either by the particle number and spin, or by the number of up and down spins: | For more complicated models, such as a <i>t-J</I> model, sometimes several options are possible. We can label the states either by the particle number and spin, or by the number of up and down spins: | ||
--> | --> | ||
− | <i>t-J</I> | + | <i>t-J</I>モデルのような、より複雑なモデルでは、いくつかのオプション指定が可能です。上下スピン数や、粒子数の状態に対してラベル付けができます。 |
<SITEBASIS name="t-J"> | <SITEBASIS name="t-J"> |
Revision as of 06:08, 2 March 2012
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
ALPSの機能として、量子格子モデルがあります。格子中の各サイト、ボンドの基底とハミルトニアンを関連付けて説明します。
Contents
デフォルトのモデルライブラリファイル
モデルライブラリファイルは問題のHilbert空間やハミルトニアンを定義します。ALPSが用意するデフォルトライブラリは"$ALPSPATH/lib/xml/models.xml"にあります。このライブラリには"t_J"、"Bose Hubbard"、"スピン1/2"など一般的に使われる多くのモデルに対応しています。
model name | list of available parameters |
---|---|
spin | J Jz Jxy J0 Jz0 Jxy0 J1 Jz1 Jxy1 h Gamma D K K0 K1 |
boson Hubbard | mu t V U t0 t1 V0 V1 |
hardcore boson | same as above |
fermion Hubbard | same as above |
spinless fermions | mu t V t0 t1 V0 V1 |
Kondo lattice | mu t J |
t-J | mu t J V J t0 t1 t2 V0 V1 V2 J0 J1 J2 |
モデルライブラリファイルの構造
モデルライブラリの内部構造は次のように記述されます。
<MODEL> <SITEBASIS Name=...> ... </SITEBASIS> <BASIS Name=...> ... </BASIS> <HAMILTONIAN Name=...> ... </HAMILTONIAN> </MODEL>
<SITEBASIS>では単一サイトのHilbert空間の定義をおこない、<BASIS>では全格子のHilbert空間、<HAMILTONIAN>ではハミルトニアンの定義をおこないます。
単一サイトの基底
単一サイトの基底状態は次のように1以上のQUANTUMNMBER要素で表現されます。
<SITEBASIS name="hardcore boson"> <QUANTUMNUMBER name="N" min="0" max="1"/> </SITEBASIS>
<SITEBASIS name="spin-1/2"> <QUANTUMNUMBER name="S" min="1/2" max="1/2"/> <QUANTUMNUMBER name="Sz" min="-1/2" max="1/2"/> </SITEBASIS>
<SITEBASIS name="fermion"> <QUANTUMNUMBER name="Nup" min="0" max="1" type="fermionic"/> <QUANTUMNUMBER name="Ndown" min="0" max="1" type="fermionic"/> </SITEBASIS>
スピンを定義する上で、スピン演算子の行列要素の定義に必要になるので、トータルスピンS量子数の設定をおこなってください。
<SITEBASIS>
は参照で使用される名前属性を設定します。
<QUANTUMNUMBER>
要素では名前と、min,max属性で最大値、最小値を設定します。量子数はmin,min+1,min+2...maxまでの値を取ることができます。オプションとして、type属性で、bosonic(デフォルト)とfermionicが選択できます。量子数がフェルミオン数の演算子の時は"fermionic"を指定しなければいけません。これらの情報は異なるサイト間の演算子間での相互作用を考慮するために必要になります。
量子数の範囲は入力パラメータから求められます。次のようにdefault
で指定することも可能です。
<SITEBASIS name="boson"> <PARAMETER name="Nmax" default="infinity"/> <QUANTUMNUMBER name="N" min="0" max="Nmax"/> </SITEBASIS>
<SITEBASIS name="spin"> <PARAMETER name="local_spin" default="1/2"/> <QUANTUMNUMBER name="S" min="local_spin" max="local_spin"/> <QUANTUMNUMBER name="Sz" min="-S" max="S"/> </SITEBASIS>
t-Jモデルのような、より複雑なモデルでは、いくつかのオプション指定が可能です。上下スピン数や、粒子数の状態に対してラベル付けができます。
<SITEBASIS name="t-J"> <QUANTUMNUMBER name="N" min="0" max="1" type="fermionic"/> <QUANTUMNUMBER name="S" min="N/2" max="N/2"/> <QUANTUMNUMBER name="Sz" min="-S" max="S"/> </SITEBASIS>
<SITEBASIS name="alternative t-J"> <QUANTUMNUMBER name="Nup" min="0" max="1" type="fermionic"/> <QUANTUMNUMBER name="Ndown" min="0" max="1-Nup" type="fermionic"/> </SITEBASIS>
完全格子モデルの基底
格子モデルの基底関数は格子中のサイト(バーテックス)の各タイプに与えられます。サイトのタイプが1種類ならば、次の記述のように基底を与えます。
<BASIS name="spin"> <SITEBASIS ref="spin"/> </BASIS>
<BASIS name="spin"> <SITEBASIS name="spin-1"> <QUANTUMNUMBER name="S" min="1" max="1"/> <QUANTUMNUMBER name="Sz" min="-1" max="1"/> </SITEBASIS> </BASIS>
<SITEBASIS>
要素で基底名は与えられます。この名前は全サイトでデフォルト名として扱われます。<SITEBASIS>では、すでに定義済みの情報を参照するか、上記のように全サイトの基底を指定する必要があります。
単位セルに複数のサイトを持つ格子
格子に単位セルあたり複数のサイトがある場合、<BASIS>は単位セルの各サイトに<SITEBASIS>を指定する必要があります。各エントリは格子ライブラリファイル(参照)で与えられる定義に関連する異なる Type
を持たなければなりません。
二分格子中のヒルベルト空間の例を次に示します。
<BASIS name="Kondo lattice"> <SITEBASIS type="0" ref="fermion"/> <SITEBASIS type="1" ref="spin-1/2"/> </BASIS>
スピンモデルにおいて、スピンの大きさは変わるかもしれまんせんが、同じローカルサイト基底で取り扱われるでしょう。例えば、local_S0
とlocal_S1
のパラメータによってtype 0,1を指定します。また、適切なデフォルト値を設定することができます。
<BASIS name="spin"> <SITEBASIS type="0" ref="spin"> <PARAMETER name="local_spin" value="local_S0"/> <PARAMETER name="local_S0" value="local_S"/> <PARAMETER name="local_S" value="1/2"/> </SITEBASIS> <SITEBASIS type="1" ref="spin"> <PARAMETER name="local_spin" value="local_S1"/> <PARAMETER name="local_S1" value="local_S"/> <PARAMETER name="local_S" value="1/2"/> </SITEBASIS> </BASIS>
さらに、サイトタイプを付け加えたい場合は記述が煩雑になってしまいます。それを解消する方法として、ALPSはショートカットでの記述ができます。
<BASIS name="spin"> <SITEBASIS ref="spin"> <PARAMETER name="local_spin" value="local_S#"/> <PARAMETER name="local_S#" value="local_S"/> <PARAMETER name="local_S" value="1/2"/> </SITEBASIS> </BASIS>
制限事項
最後に、基底は特定の量子数の合計に制限を決めることによって、制限することができます。例えば、スピンSz_totalの値を用いたスピンモデルを定義するために、<CONSTRAINT>
要素を加えます。
<BASIS name="spin"> <SITEBASIS ref="spin"/> <CONSTRAINT quantumnumber="Sz" value="Sz_total"/> </BASIS>
量子演算子
単一サイト演算子
ハミルトンの演算子が構築され、そこから基本的な量子演算子は、名前、行列要素と演算子は量子数で発生し、任意の変更によって指定されています。これらの演算子は、サイト単位で定義されています。例は次のとおりです。
<SITEBASIS name="spin"> <PARAMETER name="local_spin" default="1/2"/> <QUANTUMNUMBER name="S" min="local_spin" max="local_spin"/> <QUANTUMNUMBER name="Sz" min="-S" max="S"/> <OPERATOR name="Splus" matrixelement="sqrt(S*(S+1)-Sz*(Sz+1))"> <CHANGE quantumnumber="Sz" change="1"/> </OPERATOR> <OPERATOR name="Sminus" matrixelement="sqrt(S*(S+1)-Sz*(Sz-1))"> <CHANGE quantumnumber="Sz" change="-1"/> </OPERATOR> <OPERATOR name="Sz" matrixelement="Sz"/> </SITEBASIS>
<SITEBASIS name="boson"> <PARAMETER name="Nmax" default="infinity"/> <QUANTUMNUMBER name="N" min="0" max="Nmax"/> <OPERATOR name="bdag" matrixelement="sqrt(N+1)"> <CHANGE quantumnumber="N" change="1"/> </OPERATOR> <OPERATOR name="b" matrixelement="sqrt(N)"> <CHANGE quantumnumber="N" change="-1"/> </OPERATOR> <OPERATOR name="n" matrixelement="N"/> </SITEBASIS>
Complex site operators
ユニークな手法で量子数を変化するシンプルなサイト演算子に加え、Sxスピン演算子のようなより複雑なサイト演算子も構築が可能です。
<SITEOPERATOR name="Sx" site="i"> 1/2*(Splus(i)+Sminus(i)) </SITEOPERATOR>
次の例はbosonic模型の二重占有演算子です。
<SITEOPERATOR name="double_occupancy" site="x"> n(x)*(n(x)-1)/2 </SITEOPERATOR>
これらの演算子の定義はどんなサイトにも適用が可能です。括弧で演算子に与えられる議論はサイトの記号的な名前です。そして、それはSITEOPERATOR要素でサイト属性によって指定されます。
Complex bond operators
"bond"演算子の定義についても、先ほどと同様に設定が可能です。以下の例を参照してください。
<BONDOPERATOR name="exchange" source="x" target="y"> Sz(x)*Sz(y)+1/2*(Splus(x)*Sminus(y)+Sminus(x)*Splus(y)) </BONDOPERATOR>
<BONDOPERATOR name="fermion_hop" source="x" target="y"> cdag_up(x)*c_up(y)+cdag_up(y)*c_up(x)+cdag_down(x)*c_down(y)+cdag_down(y)*c_down(x) </BONDOPERATOR>
2つのサイトがあり、source
、 target
でラベリングされています。これらの演算子はハミルトニアンや物理量計算で使われます。
ハミルトニアンの取扱い
以下の記述にあるようにモデルのハミルトニアンを表現します。簡単なハードコア・ボゾンモデルの例を示します。
<HAMILTONIAN name="hardcore boson"> <PARAMETER name="mu" default="0"/> <PARAMETER name="t" default="1"/> <PARAMETER name="t'" default="1"/> <BASIS ref="hardcore boson"/> <SITETERM type="0"> -mu*n </SITETERM> <BONDTERM type="0" source="i" target="j"> -t*(bdag(i)*b(j)+bdag(j)*b(i))) </BONDTERM> <BONDTERM type="1" source="i" target="j"> -t'*(bdag(i)*b(j)+bdag(j)*b(i))) </BONDTERM> </HAMILTONIAN>
最初に、カップリング定数のような値のデフォルト値は<PARAMETER>
要素を使って定義されます。
次に、モデルに使われる基底<BASIS>
を定義します。ref
属性を持ちいて参照することも可能です。
ハミルトニアンの項はサイトの格子、結合といった情報によって定義されます。各<SITETERM>
、<BONDTERM>
要素はそれぞれのtype属性を持ちます。このtype属性はいくつかの項目をもつサイト(ボンド)のタイプを指定します。格子の設定でも同じtypeによって定義されます。type属性を省略すると、すべてのサイト、ボンドは特に何も設定されません。
<SITETERM>
要素は単一サイトに関連したハミルトニアンの項目を含んでいます。上記の例のように、項目muはパラメータmuを、項目nは演算子を参照しています。
<BONDTERM>
要素は、演算子が異なる2つのサイトを参照するのに必要な定義です。これは、サイトiで動作するように例えば、(I)Nのように、演算子の後の括弧内にサイトのインデックスを追加することによって行われます。ソースとターゲットの属性は、サイト(この例ではiとj)を指定するために使用する変数を指定します。
<!_-To simplify writing of the Hamltonians, the pre-defined site and bond operators above can be used. E.g. for a transverse field spin model we can use the Sx
and exchange
operators defined above:-->
ハミルトニアンをシンプルに表現するために、上記の用にあらかじめ定義したサイト、ボンド演算子を使用することができます。例えば、横磁場スピンモデルではSx
、 exchange
演算子をつぎのように定義します。
<HAMILTONIAN name="spin"> <PARAMETER name="J" default="1"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> -h*Sz(i)-Gamma*Sx(i)) </SITETERM> <BONDTERM source="i" target="j"> J*exchange(i,j) </BONDTERM> </HAMILTONIAN>
サイトタイプに依存する結合条件のいずれかを与える、最初の例のように指定することができるタイプの型に置き換えられます。結合定数の名前に#ワイルドカード文字を使用して再度サイトやボンドの項目の適用可能性を再構造化、または属性をのようにサイトの:
<HAMILTONIAN name="spin"> <PARAMETER name="J" default="1"/> <PARAMETER name="h" default="0"/> <PARAMETER name="Gamma" default="0"/> <BASIS ref="spin"/> <SITETERM site="i"> <PARAMETER name="h#" default="h"/> <PARAMETER name="Gamma#" default="Gamma"/> -h#*Sz(i)-Gamma#*Sx(i)) </SITETERM> <BONDTERM source="i" target="j"> <PARAMETER name="J#" default="J"/> J#*exchange(i,j) </BONDTERM> </HAMILTONIAN>
タイプ0のボンド上で、結合をJ0
, h0
、 Gamma0
、タイプ1のボンド上でGamma1
、、、と定義しました。
さらに複雑な項への拡張として、3、4サイトでの設定は現在準備中です。このような項目についてはALPSライブラリでサポート予定です。