43
ALPS チュートリアル – ALPS の概要 ALPS チュートリアル – ALPS の概要 CMSI ハンズオン ALPS Collaboration http://alps.comp-phys.org/ 2014-10-16 1 / 43

ALPSチュートリアル(1) ALPSの概要

Embed Size (px)

DESCRIPTION

CMSIハンズオン資料

Citation preview

Page 1: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要

ALPSチュートリアル – ALPSの概要

CMSIハンズオン

ALPS Collaborationhttp://alps.comp-phys.org/

2014-10-16

1 / 43

Page 2: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要Outline

1 チュートリアルの概要

2 量子格子模型とは?

3 ALPSプロジェクト

4 ALPSの開発

5 ALPSの構成

6 ALPSライブラリ

7 ALPSアプリケーション

2 / 43

Page 3: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要チュートリアルの概要

ALPSチュートリアル 資料

ALPSチュートリアル資料 (日)

PDF: http://sf.net/projects/alps-tutorial/files/TEXソース: https://github.com/cmsi/alps-tutorial/

ALPSオフィシャルページ (英日): http://alps.comp-phys.org/

ALPS Developer Wiki (英): http://alps.comp-phys.org/trac/

CMSI MateriApps: http://ma.cms-initiative.jp/

ALPS web講習会: http://ma.cms-initiative.jp/jp/...

藤堂眞治「“実験技術”としての量子多体系シミュレーションソフトウェア ALPS」日本物理学会誌 (掲載予定)

3 / 43

Page 4: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要チュートリアルの概要

困った時は…

ALPSサポートチーム (日): [email protected]

MateriApps ALPS フォーラム (日):http://ma.cms-initiative.jp/ja/community/materiapps-...

ALPS User’s Mailing List (英):https://alps.comp-phys.org/mediawiki/index.php/Forum...

4 / 43

Page 5: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要チュートリアルの概要

ALPSチュートリアル スタッフ

チュートリアル資料作成・講師藤堂眞治 (東大院理/物性研)松尾春彦 (RIST)五十嵐亮 (東大物性研)本山裕一 (東大物性研)諏訪秀麿 (東大院理)

主催CMSI: 計算物質科学イニシアティブhttp://cms-initiative.jp/

共催RIST: 一般財団法人 高度情報科学技術研究機構http://www.rist.or.jp/

5 / 43

Page 6: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要チュートリアルの概要

チュートリアルの流れ

ALPSの概要 01_overview ○ ◎ ◎ALPSのインストール 02_installation ◎ ◎ ◎アプリケーション実習 (1) 03_tutorial ◎ ◎ ◎Python入門 04_python ○ ○ ◎ALPS Python入門 05_pyalps ○ ○ ◎Matplotlib入門 06_matplotlib ○ ○ ◎アプリケーション実習 (2) ◎ ◎アプリケーションの ALPS化 07_alpsize ◎ ◎○: ユーザコース, ○: 開発者コース ○: 集中コース

6 / 43

Page 7: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要チュートリアルの概要

ALPSチュートリアルの目標

ALPSの概要を知る [○○○]

ALPSアプリケーションの実行方法を学ぶ [○ー○]

ALPS Pythonツールを使った結果の解析方法を学ぶ [○ー○]

ALPSライブラリの仕組みを学ぶ [ー○○]

ユーザアプリケーションの作成方法を学ぶ [ー○○]

(ALPSチュートリアルの問題点を洗い出し改良する) [◎◎◎]

7 / 43

Page 8: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要量子格子模型とは?

●●

量子格子模型: Quantum Lattice Models

量子スピン模型 (XXZ模型)

H =Jxy

2

∑⟨i ,j⟩

(S+i S−

j + S−i S+

j ) + Jz∑⟨i ,j⟩

Szi S

zj

Hubbard模型

H = −t∑⟨i ,j⟩σ

(c†iσcjσ + h.c.) + U∑i

ni↑ni↓

t-J模型

H = −t∑⟨i ,j⟩σ

(c†iσcjσ+h.c.)+J∑i ,j

(Si ·Sj−ninj/4)

8 / 43

Page 9: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要量子格子模型とは?

●●

なぜ QLMを考えるのか?

量子多体系における強相関効果さまざまな秩序状態量子的に強くゆらいだ相: 量子液体, スピンギャップ相量子相転移, 量子臨界現象

量子統計物理におけるユニバーサリティー量子臨界現象は系の次元, 秩序変数の対称性などにしか依存しない量子臨界現象特有のユニバーサリティークラスの探索

新しい計算物理学的手法の発展量子モンテカルロ法, DMRG, DMFT, テンソルネットワーク, など

9 / 43

Page 10: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSプロジェクト●●

ALPSプロジェクトの目標

量子統計物理分野の現状研究グループ毎に異なるコードを開発シミュレーションを行う模型毎に異なる実装アルゴリズムはますます複雑になりソフトウェア開発が長期化可搬性・互換性のない入出力形式

ALPSプロジェクトの目標最新のアルゴリズムを用いた “community code”の開発大規模並列計算などのための C++ライブラリ・フレームワーク開発統一入出力形式の提案とそれにもとづくデータ解析ツールの作成計算物理の専門家だけでなく, 理論家・実験家にも使えるシミュレーションソフトウェア

10 / 43

Page 11: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSプロジェクト●●

ALPSとは?

ALPS = Algorithms and Libraries for Physics Simulations

量子スピン系, 電子系など強相関量子格子模型のシミュレーションためのオープンソースソフトウェアの開発を目指す国際共同プロジェクトALPSライブラリ = C++による格子模型のための汎用ライブラリ群ALPSアプリケーション = 最新のアルゴリズムに基づくアプリケーション群: QMC, DMRG, ED, DMFT等ALPSフレームワーク = 汎用入出力形式, 解析ツール, スケジューラなど, 大規模並列シミュレーションのための環境

11 / 43

Page 12: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSプロジェクト●●

ターゲット・オーディエンス

実験家物質のモデリングにソフトウェアパッケージを利用実験結果とシミュレーション結果のフィッティングにより, 相互作用定数などを決定

理論家理論的なアイデアのチェックに使いやすい整備されたコードを利用自前のコードのデバッグに新しいコード開発の基盤としての利用

計算機科学者, 学生, · · ·

12 / 43

Page 13: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

基盤となる技術

C++によるジェネリック・プログラミングC++標準テンプレートライブラリBoost C++ ライブラリ http://www.boost.org/

ALPS独自のクラス, ジェネリック・アルゴリズムを実装柔軟性, 再利用性, 高信頼性, 高性能を同時に達成

XML, HDF5 http://www.hdfgroup.org/HDF5/による入出力

可搬性, 自己記述性, 変換が容易

量子格子模型に対する最新のシミュレーション手法

13 / 43

Page 14: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

なぜ C++を使うのか?

14 / 43

Page 15: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

ALPSの歴史

1990年代中頃 ALPSの前身となる PALM C++, DMRG,looper などが開発される2002年 ALPSプロジェクト始動2004年 バージョン 1.0, 第 1回 Users Workshop

2010年 バージョン 2.0

2014年 10月現在ソースコード: C++ 396,000行, Python 39,000行, Fortran10,000行開発者: 約 30名 (7ヶ国)

15 / 43

Page 16: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

ALPSの開発者

Austria

H. G. Evertz

France

O. Parcollet

Germany

S. FuchsG. GuertlerD. KoopU. SchollwockS. TrebstS. Wessel

Poland

G. Pawlowski

Switerland

B. BauerL. GamperJ. GukelbergerA. HehnS. V. IsakovP. N. MaP. MatesJ. D. PiconL. PolletB. SurerM. TroyerP. Werner

Japan

五十嵐 亮松尾春彦藤堂眞治

USA

L. D. CarrA. FeiguinJ. FreireE. GullE. SantosV. W. ScarlolaC. SilvaM. L. Wall

16 / 43

Page 17: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

ALPSの展開

上方展開 (大規模化・高性能化・並列化)

量子モンテカルロ法 (ALPS/looper)の超並列化高並列スケジューラ (ALPS/parapack)のハイブリッド多重並列化Fortran, C プログラムのための API 作成

下方展開 (裾野を広げる)

実験家・理論家による幅広い利用の促進Windows/Macintosh 用バイナリインストーラの開発ワークフロー・履歴管理システムとの統合GUI (グラフィカルユーザインターフェース)の開発

17 / 43

Page 18: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

開発のためのインフラストラクチャ

ソースコードの規模, 開発体制が大きくなると今までの方法では破綻する開発・サポートのためのツールを一から作りあげるのは非現実的フリーソフトウェアの利用

ビルドシステム: CMakeソースコードの管理: Subversionプロジェクト管理・バグ追跡: Tracドキュメント作成: MediaWikiメーリングリスト: Mailman

Linux ワークステーションが 1台あれば, これらの環境を整えるのは現在では比較的容易

18 / 43

Page 19: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

ビルドシステム: CMake

Makefileを生成するためのユーティリティー (configureスクリプトに対応)

Windows の Visual C++ 用ソリューションファイル, Mac OSX の Xcode 用プロジェクトファイルの生成も可能

設定は CMakeLists.txt に記述する

テスト (CTest)やバイナリ配布 (CPack)の機能もある

ファイルの依存関係の自動検出

19 / 43

Page 20: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

VCS (Version Control System)によるソース管理:Subversion

開発者が複数になると, ディレクトリ名やログファイルによるバージョン管理はすぐに破綻するソースコードをサーバー上で一括管理

ネットワーク経由でソースを check out/check in

更新毎に一意なバージョン番号を付与全ての修正履歴を保存複数人が同時に更新した場合に衝突を回避するしくみブランチ・マージ・タグ付けなどが可能開発者が一人, 公開の予定がない場合でも積極的に使うべき

20 / 43

Page 21: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

BTS (Bug Tracking System) の利用: Trac

プロジェクト管理とバグ追跡のためのツール

Web ブラウザからアクセス・操作開発者の情報共有のための wikiSubversion との連携 (ソース, 修正履歴の web 上での閲覧)プロジェクト管理 (ロードマップ, マイルストーンの管理)チケットシステム: バグやタスクの登録, 担当者の決定, 修正状況の追跡

21 / 43

Page 22: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

Wikiによるマニュアル作成: MediaWiki

もともとはウィキペディアのために開発されたWiki とは?

Webブラウザを利用してWeb文書を書き換えるシステムネットワーク上のどこからでも書き換えができる共同作業が容易Webブラウザがあれば編集作業が行えるHTMLよりも簡潔な書式文書間のリンクの作成が容易

ALPS Wiki のコンテンツニュース, インストール方法, ALPSに関連する論文, 発表資料,ライブラリリファレンスマニュアル, チュートリアル

22 / 43

Page 23: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発ー●

メーリングリストの活用: Mailman

開発者メーリングリスト開発方針に関する意見交換, リリーススケジュール調整, 担当者調整等Trac チケットの変更ログも自動的にここに流れる

ユーザメーリングリストWeb からの自動登録開発者 + ユーザコミュニティーによるサポートの場FAQ ⇒ Wiki ドキュメントへ反映バグレポート, 要望など ⇒ Trac チケットへ

23 / 43

Page 24: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

ワークショップ

ALPS developers workshop

今後の開発方針についてブレインストーミング・ディスカッション年 1回程度

ALPS users workshop / tutorial

アルゴリズムについてのレビュートークWiki のチュートリアルを用いて ALPS の実習CMSIハンズオン: 年 4回程度, 神戸や柏にて ALPSチュートリアルを開催中

24 / 43

Page 25: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

ALPS“cite-me”ライセンス

GNU General Public License 2 (GPL2) を基本としたライセンスNon-commercial academic use の場合自由に利用可能自由に再配布可ユーザが変更を施したコードも同じライセンスの下で再配布可ALPSを用いた研究成果を公表する場合には,acknowledgement と論文の引用をお願いします

In any scientific publication based wholly or in part on theLibrary, the use of the Library must be acknowledged andthe publications listed in the accompanying CITATIONS.txtdocument must be cited.

25 / 43

Page 26: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの開発●●

参考文献

ALPS papers

B. Bauer et al. The ALPS project release 2.0: Open sourcesoftware for strongly correlated systems, J. Stat. Mech.,P05001 (2011).A. F. Albuquerque et al. The ALPS project release 1.3: opensource software for strongly correlated systems, J. Mag. Mag.Mat. 310, 1187 (2007).F. Alet et al. The ALPS Project: Open Source Software forStrongly Correlated Systems, J. Phys. Soc. Jpn. Suppl. 74, 30(2005).

26 / 43

Page 27: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの構成●●

ALPSの階層構造

generic C++

numerics

domain-specificlibraries

applications

tools

C / Fortran BLAS LAPACK MPI HDF5

graph serialization XML/XSLT

iterative eigenvalue solverrandom ublas

lattice model observables scheduler

MC QMC ED DMRG DMFT

XML manipulation Python binding GUI

Boost library

27 / 43

Page 28: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSの構成●●

サードパーティーのライブラリ

BLAS, LAPACK: 線形演算 (行列対角化, 特異値分解など) (オプション)

MPI (Message Passing Interface): 並列計算のためのメッセージ通信 (オプション)

HDF5 (Hierarchical Data Format): プラットフォーム非依存のバイナリファイル格納形式

Boost C++ Library: 乱数, グラフ, シリアル化, など多くの有用なライブラリ群

28 / 43

Page 29: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

ALPS/parameterライブラリ

パラメータの入出力のためのライブラリ改行, セミコロン, コンマで変数を区別四則演算, 初等関数 (sin, cos,expなど)が使えるπ (PI), 虚数単位 (I)

C 風, C++風のコメント{ } で囲まない変数は共通パラメータ{ } で囲んだ変数は異なるパラメータセット

LATTICE = "chain lattice";

L = 16,

SEED = 2873

// C++ style comment

SWEEPS = 4096;

THERMALIZATION = SWEEPS/8;

/* C style comment */

{ T = 2; Sq = 2*PI/3; }

{ T = 1.8; }

29 / 43

Page 30: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリー●

ALPS/parameterを使ったコード例

#include <boost/foreach.hpp>

#include <alps/parameter.h>

int main() {

std::ifstream fin;

fin.open("parameters.txt");

alps::ParameterList plist(fin);

BOOST_FOREACH(alps::Parameters& p, plist) {

double a = p["a"];

double b = p.value_or_default("b", 0.5);

...

}

...

}

30 / 43

Page 31: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

ALPS/aleaライブラリ

マルコフ連鎖における平均値, 分散, 自己相関を計算するライブラリalps::RealObservable mag2("Magnetization^2");

...

mag2 << m * m; // at each MC step

ビンニング解析を用いた平均値, エラー, 自己相関時間の評価std::cout << mag2 << std::endl;

出力Magnetization^2: 3.142 +/- 0.001; tau = 10.3

31 / 43

Page 32: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリー●

ALPS/aleaライブラリ

ジャックナイフ法を用いた非線形量のエラー評価alps::RealObsevaluator mag2eval(mag2);

alps::RealObsevaluator mag4eval(mag4);

alps::RealObsevaluator binder = mag2eval * mag2eval /

mag4eval;

std::cout << binder;

出力(Magnetization^2) * (Magnetization^2) / (Magnetization^4):

0.453 +/- 0.005

32 / 43

Page 33: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

ALPS/latticeライブラリ

「格子構造」は数学的には「グラフ」で表現できるsite ⇔ vertexbond ⇔ edge

Boost Graph Library に対する「ラッパー」を提供XMLによる「格子構造」の入出力「ユニットセル」による繰り返し構造の指定座標, パリティ, 逆格子ベクトルなどの属性

あらかじめ用意されている格子: ”chain lattice”, ”squarelattice”, ”triangular lattice”, ”honeycomb lattice”, ”simplecubic lattice”, など

33 / 43

Page 34: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

有限格子 + ユニットセルの埋め込み

格子の指定<LATTICE name="2D" dimension="2">

<BASIS>

<VECTOR> 1 0 </VECTOR>

<VECTOR> 0.5 1 </VECTOR>

</BASIS>

</LATTICE>

34 / 43

Page 35: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

有限格子 + ユニットセルの埋め込み

ユニットセル<UNITCELL name="simple1d" dimension="1" vertices="1">

<EDGE>

<SOURCE vertex="1" offset="0"/><TARGET vertex="1" offset

="1"/>

</EDGE>

</UNITCELL>

35 / 43

Page 36: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

有限格子 + ユニットセルの埋め込み

サイズ, 境界条件の指定<LATTICEGRAPH name = "chain lattice">

<FINITELATTICE>

<LATTICE ref="chain lattice"/>

<PARAMETER name="L"/>

<EXTENT size ="L"/>

<BOUNDARY type="periodic"/>

</FINITELATTICE>

<UNITCELL ref="simple1d"/>

</LATTICEGRAPH>

より複雑な格子の作り方ALPS Lattice HOWTO: http://alps.comp-phys.org/mediawiki/index.php/Tutorials:LatticeHOWTO/ja

36 / 43

Page 37: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSライブラリ●●

ALPS/modelライブラリ

XMLを使ってハミルトニアンを定義する量子数や演算子の定義シンボリックな表現を使って, ハミルトニアンのサイト項やボンド項を定義

Jz*Sz(i)*Sz(j)+Jxy/2*(Splus(i)*Sminus(j)+Sminus(i)*Splus(j))

作成した局所ハミルトニアンは行列の形で取り出せるプラケット項などの多サイトにわたる相互作用には未対応ALPS Model HOWTO: http://alps.comp-phys.org/mediawiki/

index.php/Tutorials:ModelHOWTO/ja

あらかじめ用意されている模型: ”spin”, ”boson Hubbard”,”hardcore boson”, ”fermion Hubbard”, ”alternative fermionHubbard”, ”spinless fermions”, ”Kondo lattice”, ”t-J”

37 / 43

Page 38: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSアプリケーション●●

ALPSアプリケーション

fulldiag 厳密対角化 (全対角化法)

sparsediag 厳密対角化 (Lanczos法)

spinmc 古典モンテカルロ法loop 量子モンテカルロ法 (ループアルゴリズム)

dirloop sse 量子モンテカルロ (向き付きループアルゴリズム)

worm 量子モンテカルロ (ワームアルゴリズム)

dmrg,tebd 密度行列繰り込み群hirshfye,interaction,hybridization 動的平均場近似の QMCソルバ

38 / 43

Page 39: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSアプリケーション●●

厳密対角化

fulldiag 厳密対角化 (全対角化法)ハウスホルダー法を用いて量子格子模型の全てのエネルギー固有値と固有状態を計算任意の温度における物理量を数値誤差の範囲で厳密に計算

sparsediag 厳密対角化 (Lanczos法)ランチョス法を用いて, 基底状態と少数の低励起状態を求める

全磁化などの保存量や系の並進対称性などを利用して, ヒルベルト空間の次元を削減任意の局所的な演算子の期待値, 対角および非対角演算子の相関関数, 構造因子などの測定が可能並列固有値ソルバライブラリ Rokkoと, それに基づく並列厳密対角化パッケージ ALPS/Baristaを開発中

39 / 43

Page 40: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSアプリケーション●●

古典モンテカルロ法

spinmc 古典モンテカルロ法メトロポリス法あるいはクラスターアルゴリズム古典スピン模型のモンテカルロシミュレーション磁場中のイジング模型, XY模型, ハイゼンベルグ模型, ポッツ模型

40 / 43

Page 41: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSアプリケーション●●

量子モンテカルロ法

loop 量子モンテカルロ法 (ループアルゴリズム)

連続虚時間ループアルゴリズム時間反転対称性を持つ系 (零磁場の場合、横磁場イジング模型など)に有効2点相関関数 (グリーン関数を含む)の計算

dirloop sse 量子モンテカルロ (向き付きループアルゴリズム)

SSE (Stochastic Series Expansion)表示磁場中スピン模型, ボーズハバード模型などに有効

worm 量子モンテカルロ (ワームアルゴリズム)

連続虚時間表示ワームアルゴリズム非常に強い磁場が存在する場合などに有効

41 / 43

Page 42: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSアプリケーション●●

密度行列繰り込み群・動的平均場

dmrg,tebd 密度行列繰り込み群一次元系・擬一次元系の基底状態および低励起状態を計算局所的な物理量や 2点相関関数の測定エンタングルメントエントロピーの測定

hirshfye,interaction,hybridization 動的平均場近似の QMCソルバ系の自己エネルギーの波数依存性を無視することで, 多体フェルミオン模型を不純物問題に帰着Hirsch-Fye法 hirshfye

相互作用展開 interaction

混成状態展開 hybridization

42 / 43

Page 43: ALPSチュートリアル(1) ALPSの概要

ALPSチュートリアル – ALPSの概要ALPSアプリケーション●●

ALPSによるシミュレーション — ワークフロー

parameter2xmltool

application programs

Python based evaluation tools

Parameter XML File

Outputs in HDF5 & XML

Quantum Monte Carlo

Quantum Lattice Model

Exact Diagonalization DMRG

Lattice XML Filesquare lattice

<LATTICES> <LATTICE name="square lattice" dimension="2"> <PARAMETER name="a" default="1"/> <BASIS><VECTOR>a 0</VECTOR><VECTOR>0 a</VECTOR></BASIS> </LATTICE> <UNITCELL name="simple2d" dimension="2"> <VERTEX/> <EDGE> <SOURCE vertex="1" offset="0 0"/> <TARGET vertex="1" offset="0 1"/> </EDGE> <EDGE> <SOURCE vertex="1" offset="0 0"/> <TARGET vertex="1" offset="1 0"/> </EDGE> </UNITCELL> <LATTICEGRAPH name="square lattice"> <FINITELATTICE> <LATTICE ref="square lattice"/> <EXTENT dimension="1" size="L"/> <EXTENT dimension="2" size="L"/> <BOUNDARY type="periodic"/> </FINITELATTICE> <UNITCELL ref="simple2d"/> </LATTICEGRAPH></LATTICES>

(0,0)

(0,1)

(1,0)

<MODELS> <BASIS name="spin"> <SITEBASIS name="spin"> <PARAMETER name="local_S" default="1/2"/> <QUANTUMNUMBER name="S" min="local_S" max="local_S"/> <QUANTUMNUMBER name="Sz" min="-S" max="S"/> <OPERATOR name="Sz" matrixelement="Sz"/> <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> </SITEBASIS> </BASIS> <HAMILTONIAN name="spin"> <PARAMETER name="J" default="1"/> <PARAMETER name="h" default="0"/> <BASIS ref="spin"/> <SITETERM> -h * Sz(i) </SITETERM> <BONDTERM source="i" target="j"> J * (Sz(i)*Sz(j) + (Splus(i)*Sminus(j)+Sminus(i)*Splus(j)))/2 </BONDTERM> </HAMILTONIAN></MODELS>

Model XML File

H = J< i,j>

[ S zi S z

j + ( S +i S -

j + S -i S +

j )/ 2 - hi

S zi]Σ Σ

Plots

Parameter FileLATTICE = "square lattice"MODEL = "spin"L = 16Jxy = 1Jz = 2SWEEPS = 10000THERMALIZATION = 1000

{ T = 0.1 }{ T = 0.2 }{ T = 0.5 }{ T = 1.0 }

DMFT

43 / 43