コンテンツにスキップ

ワームアルゴリズム

はじめに

worm コードは、N. Prokof’ev らによって考案されたワームアルゴリズムに基づく量子モンテカルロ (QMC) シミュレーションの、完全で汎用的な実装を提供します。技術的には、分配関数の経路積分表示に基づく連続時間 QMC コードです。

現在の実装では、任意の格子上で次のモデルをシミュレートできます。

  • 任意のスピンの大きさ、磁場、異方性を持つ(フラストレーションのない)量子スピンモデル
  • 符号問題のない(ソフトコア)ボソンモデル

必要であれば、符号問題のあるシミュレーションへの対応を追加することもできます。

シミュレーションの実行

シミュレーションの例はチュートリアルで説明しています。

入力パラメータ

worm コードは、ここで説明した共通の入力パラメータを使います。

上級者向けパラメータ

さらに、シミュレーション固有のパラメータを指定することもできます(意味が分かる場合にのみ使用してください!)。

パラメータデフォルト値意味
SKIP1各測定の間に行うモンテカルロスイープの回数
RESTRICT_MEASUREMENTS[N]定義されている場合、量子数 N(粒子数)がこのパラメータで与えた値を持つ配置に測定を制限します。シミュレーション自体は依然として大正準集団で行われるため、目的の粒子数を持つ配置を実際にサンプリングするには、化学ポテンシャルを適切な範囲に調整する必要があることに注意してください。
RESTRICT_MEASUREMENTS[Sz]定義されている場合、量子数 Sz(磁化)がこのパラメータで与えた値を持つ配置に測定を制限します。シミュレーション自体は依然として大正準集団で行われるため、目的の磁化を持つ配置を実際にサンプリングするには、磁場を適切な範囲に調整する必要があることに注意してください。
WORMS_PER_KINK11 スイープあたり、ワームが 1 つのキンクを平均して何回訪れるべきかを決めます。
MEASURE_GREENfalseグリーン関数を測定するかどうかを示すフラグ。テストされていないので使用しないでください!

コンパイル時パラメータ

さらに、コンパイル時にファイル WRun.h で次の変数を定義できます。

パラメータ意味
NONLOCAL未定義にすると、局所的な相互作用に対してコードが高速化されます。
USE_VECTOR定義すると、データ構造として std::list の代わりに std::vector を使います。
USE_SET定義すると、データ構造として std::list の代わりに std::set を使います。

測定

worm コードのアプリケーションは次の観測量を測定します。

名前説明
Energy系の全エネルギー
Energy Densityサイトあたりのエネルギー
Density粒子数(ボソンモデルの場合)
Density^2粒子数の 2 乗(ボソンモデルの場合)
Stiffness系のスティフネス(ボソンモデルの場合)
Green’s functionグリーン関数(局所的な相互作用の場合のみ動作)

貢献者

次の人々が worm アプリケーションに貢献しました。

  • Simon Trebst
  • Matthias Troyer