4.2. DSQSS/DLA による反強磁性ハイゼンベルグダイマーのエネルギー計算¶
このチュートリアルでは, S=1/2 反強磁性ハイゼンベルグダイマー H=J→S1⋅→S2 の基底状態エネルギー計算をすることで, DSQSS/DLA の使い方を学びます.
DSQSS/DLA による計算は,
- 入力ファイルの準備
- 計算の実行
- 計算結果の解釈
の3段階に分かれます.
4.2.1. 入力ファイルの準備¶
DSQSS/DLA を実行するには,
- パラメータファイル
- 格子定義ファイル
- アルゴリズム定義ファイル
の3つの入力ファイルが必要です. そのため, まずはこれらの入力ファイルを作成します. そのためのユーティリティツールが dsqss_pre.py です. これは単一の入力ファイルから, DSQSS/DLA および DSQSS/PMWA の入力ファイルを生成するPython スクリプトです. まず, dsqss_pre.py の入力ファイルとして, 次の内容を持つテキストファイル std.in を準備します(sample/dla/01_spindimer/std.in).
[System]
solver = DLA
[Hamiltonian]
model_type = spin
M = 1 # S=1/2
J = -0.5 # coupling constant, negative for AF, not 1 but 1/2 due to PBC
F = 0.0 # magnetic field
[Lattice]
lattice_type = square # hypercubic, periodic
D = 1 # dimension
L = 2 # number of sites along each direction
Beta = 100 # inverse temperature
[Parameter]
nset = 5 # set of Monte Carlo sweeps
npre = 10 # MCSteps to estimate hyperparameter
ntherm = 10 # MCSweeps for thermalization
nmcs = 10 # MCSweeps for measurement
なお, このツールで作成される格子は周期的境界条件に従うために,
2サイト系でもボンドが2本生成されます.
そのため, コメント(#
以下の文章) にもある通り, 相互作用として -1 ではなく -0.5 を指定しています.
このファイルを dsqss_pre.py に与えます.
$ python $DSQSS_ROOT/bin/dsqss_pre.py -i std.in
この結果, パラメータファイル param.in, 格子定義ファイル lattice.xml, アルゴリズム定義ファイル algorithm.xml と, アルゴリズム定義ファイル作成のための中間ファイル hamiltonian.xml が作成されます.
4.2.2. 計算の実行¶
入力ファイルを作成したら, DSQSS/DLA による計算を実行します.
$ $DSQSS_ROOT/bin/dla_H param.in
なお, 計算を実行するときにMPI を用いることで, 乱数並列計算が可能です.
$ mpiexec -np 4 $DSQSS_ROOT/bin/dla_H param.in
並列数 (今回は4) だけ独立に計算を行い, モンテカルロサンプル数を増やすことで計算精度を向上できます. [1]
4.2.3. 計算結果の解釈¶
計算結果は出力ファイル sample.log に書き出されます.
サイトあたりのエネルギーは ene
という名前で記されており, たとえば grep
コマンドで
$ grep ene sample.log
R ene = -3.74380000e-01 5.19493985e-03
と取得できます. 2つある数字はそれぞれ期待値と統計誤差です. 反強磁性ハイゼンベルグダイマーの基底状態でのサイトあたりエネルギーは −3|J|/8=−0.375|J| なので, 問題なく計算されていることがわかります.
脚注
[1] | macOS 上のOpenMPI を使う場合, プログラム終了時にエラーメッセージが出ることがあります( No such file or directory (errno 2) ). DSQSS/DLA の実行自体に影響はありませんが, これを抑制したい場合は, --mca shmem posix オプションを mpiexec に付与してください. |