Tutorials:MeasureHOWTO/ja

From ALPS
Revision as of 06:23, 2 March 2012 by Kota (talk | contribs) (解析方法の定義)

Jump to: navigation, search


解析方法の定義

計算結果の解析において、ALPSがデフォルトで用意している解析方法以外に、ユーザが独自に解析条件を設定する方法を紹介します。一般的な記述方法は以下の通りです。

MEASURE_LOCAL[Name]=Op
MEASURE_AVERAGE[Name]=Op

"Name"は XMLの出力ファイルにある物理量の計算結果です。"Op"は解析演算子で、 models.xmlファイルで定義されます。


MEASURE_AVERAGEは演算子Opの量子力学的、熱力学的(有限温度シミュレーション)期待値を求めます。

MEASURE_LOCALは格子の各サイトの演算子Opの期待値を求めます。

MEASURE_CORRELATIONS[Name]="Op1:Op2"
MEASURE_CORRELATIONS[Name]=Op    

MEASURE_CORRELATIONSは格子のサイトの全非同期ペアの演算子Op1とOp2のペア相関を求めます。2行目のMEASURE_CORRELATIONS[name]=Opは MEASURE_CORRELATIONS[Name]="Op:Op"と同じ意味です。現状のALPSでは2サイトの相互作用関数の計算に対応しています。Op1とOp2はサイト演算子である必要があります。

MEASURE_STRUCTURE_FACTOR[Name]=Op

すべてのバージョンで上記の記述をサポートしているとは限りません。他にも解析の定義方法があるコードがあります。ALPS1.3の チュートリアルも 参照してください。

応用例と問題回避法

QMCコードで非対角量を計算することは、一般的にノントリビアルで、一般的なコードを生成するのは難しい。ユーザが求めたい物理量にQMCプログラムが対応していたい場合は、ユーザ自ら、ソースコードを修正する必要があります。

このような場合、いくつかの対処方法があります。よく用いられる手法で、計算モデルの サイトの基底を拡張する方法がよく用いられています。 次の例を参照してください。 ワームコードを用いて、非均一な格子上でのボースハバードモデルを計算する場合、局所密度分布<ni2>の2次モーメントを計算してください。ワームコードはサイトの基底では動作しないのでこのような演算子は計算できないでしょう。ひとつの解決手法としては、ボースハバードハミルトニアンとして指定しているサイト基底"boson"を修正してみてください。


 <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"/>
 <OPERATOR name="n2" matrixelement="N*N"/>   <--!  added -->
 </SITEBASIS> 

この修正パッチを用いると、通常の方法で測定することができるでしょう。

MEASURE_LOCAL[Local density squared]="n2"
MEASURE_CORRELATIONS[Density squared, correlations]="n2:n2"