4.2. DSQSS/DLA のスタンダードモード¶
DSQSS/DLA のスタンダードモードでは, ユーザが模型や格子を定義して計算することができます. あらかじめ定義された模型や格子と組み合わせたり, 拡張することも可能です. 図 4.1 はスタンダードモードによる計算の流れ図です.
4.2.1. 入力ファイル一覧¶
lattice.dat |
格子datファイル. |
lattice.toml |
格子TOMLファイル. 格子ファイルはどちらか一方があればよい. |
hamiltonian.toml |
ハミルトニアンTOMLファイル. |
kpoints.dat |
波数ファイル. |
4.2.2. 格子データファイル¶
格子データファイルは空間の情報, たとえばサイトの数やサイト同士のつながりかたなどを定義するためのテキストファイルです.
dla_alg
の入力ファイルとして扱われます.
#
から行末まではコメントとして読み飛ばされます. また, 空白行も飛ばされます.
name
, lattice
, directions
, sites
, interactions
の5つのセクションから構成されます.
name
格子の名前です. 1行のテキストからなります. コメントや識別用であり, 実際の計算では利用されません.
lattice
格子の情報を指定するセクションです.
- 1行目
格子の次元を表す整数.
- 2行目
格子のサイズを表す, 空白区切りで次元の数だけ並べられた整数の組.
- 3行目
格子の境界条件を表す, 空白区切りで次元の数だけ並べられた整数の組. 1 で周期的境界条件を, 0 で開放端境界条件を示します.
- 4行目以降
空間の基底ベクトル \(\vec{e}^i\) を表す, 空白区切りで次元の数+1 だけ並べられた数の組. 最初の整数はベクトルの番号 \(i\) を, 残りの数はベクトルのデカルト座標 \(e_d^i\) を示します.
directions
ボンド(二体相互作用)の向きを指定するセクションです.
- 1行目
ボンドの向きの総数.
- 2行目以降
各向きを表すベクトルを表す, 空白区切りで次元の数+1 だけ並べられた数の組. 最初の整数は向きの番号を, 残りの数はベクトルの要素を示します.
lattice
で指定されたベクトルを基底とします.
sites
サイトの情報を指定するセクションです.
- 1行目
格子に含まれるサイトの総数を表す整数.
- 2行目以降
各サイトの情報を表す空白区切りで次元の数+2 だけ並べられた数の組. 意味は次表の通り.
列 |
説明 |
---|---|
1 |
サイト番号. 格子全体における通し番号. |
2 |
サイトタイプ. ハミルトニアンTOML ファイルにおけるサイトタイプと対応する. |
3 ... |
|
interactions
相互作用の空間情報を指定するセクションです.
- 1行目
格子に含まれる多体相互作用の総数を表す整数.
- 2行目以降
\(N = \text{関与サイト数} + 5\) 個の整数の組. 意味は次表の通り.
列 |
説明 |
---|---|
1 |
相互作用番号. 格子全体における通し番号. |
2 |
相互作用タイプ. ハミルトニアン TOML ファイルにおける相互作用タイプと対応する. |
3 |
関与サイト数 |
4 ... (N-2) |
サイト番号 |
N-1 |
ボンドが周期境界をまたぐ場合には1, そうでなければ0 |
N |
ボンドの方向番号 |
二次元正方格子の例を示します.
name
2 dimensional hypercubic lattice
lattice
2 # dim
4 4 # size
1 1 # 0:open boundary, 1:periodic boundary
0 1.0 0.0 # latvec_0
1 0.0 1.0 # latvec_1
directions
2 # ndirections
# id, coords...
0 1.0 0.0
1 0.0 1.0
sites
16 # nsites
# id, type, coord...
0 0 0 0
1 0 1 0
2 0 2 0
3 0 3 0
4 0 0 1
5 0 1 1
6 0 2 1
7 0 3 1
8 0 0 2
9 0 1 2
10 0 2 2
11 0 3 2
12 0 0 3
13 0 1 3
14 0 2 3
15 0 3 3
interactions
32 # nints
# id, type, nbody, sites..., edge_flag, direction
0 0 2 0 1 0 0
1 0 2 0 4 0 1
2 0 2 1 2 0 0
3 0 2 1 5 0 1
4 0 2 2 3 0 0
5 0 2 2 6 0 1
6 0 2 3 0 1 0
7 0 2 3 7 0 1
8 0 2 4 5 0 0
9 0 2 4 8 0 1
10 0 2 5 6 0 0
11 0 2 5 9 0 1
12 0 2 6 7 0 0
13 0 2 6 10 0 1
14 0 2 7 4 1 0
15 0 2 7 11 0 1
16 0 2 8 9 0 0
17 0 2 8 12 0 1
18 0 2 9 10 0 0
19 0 2 9 13 0 1
20 0 2 10 11 0 0
21 0 2 10 14 0 1
22 0 2 11 8 1 0
23 0 2 11 15 0 1
24 0 2 12 13 0 0
25 0 2 12 0 1 1
26 0 2 13 14 0 0
27 0 2 13 1 1 1
28 0 2 14 15 0 0
29 0 2 14 2 1 1
30 0 2 15 12 1 0
31 0 2 15 3 1 1
4.2.3. 格子TOML ファイル¶
格子TOML ファイルはユニットセルと基本並進ベクトルを用いて空間の情報を定義するための,
TOML 形式のファイルです.
dla_alg
の入力ファイルとして扱われます.
parameter
と unitcell
のふたつのテーブルから構成されます.
parameter
格子の情報を記述するテーブルです.
name
格子の名前です. 実際の計算には用いられません.
dim
格子の空間次元を表す整数です.
L
格子の大きさを表す整数配列です.
bc
格子の境界条件を表すブーリアンの配列です.
true
が周期的境界条件を,false
が開放端境界条件を示します.basis
格子の基本並進ベクトルを表す2次元配列(配列の配列)です.
unitcell
ユニットセルの情報を記述するテーブルです.
sites
ユニットセル内のサイトを示すテーブルの配列です.
siteid
サイトのユニットセル内での識別番号です.
type
サイトタイプを示す整数です.
coord
ユニットセル内におけるサイトの局所座標を示す配列です.
bonds
ユニットセル内のボンドを示すテーブルの配列です.
bondid
ボンドのユニットセル内での識別番号です.
type
相互作用タイプを示す整数です.
source
ボンドの始点サイトの情報を表すテーブルです.
siteid
サイトのユニットセル内での識別番号です.
target
ボンドの終点サイトの情報を表すテーブルです.
siteid
サイトのユニットセル内での識別番号です.
offset
始点サイトの属するユニットセルから見た, 終点サイトの属するユニットセルの相対座標です.
二次元正方格子の例を示します.
[parameter]
name = "square lattice"
dim = 2
L = [4,4]
bc = [true, true]
basis = [[1,0], [0,1]]
[unitcell]
[[unitcell.sites]]
siteid = 0
type = 0
coord = [0,0]
[[unitcell.bonds]]
bondid = 0
type = 0
source = { siteid = 0 }
target = { siteid = 0, offset = [1,0] }
[[unitcell.bonds]]
bondid = 1
type = 0
source = { siteid = 0 }
target = { siteid = 0, offset = [0,1] }
4.2.4. ハミルトニアンTOMLファイル¶
ハミルトニアンTOMLファイルは局所ハミルトニアン, 例えばボンドハミルトニアン, を指定する,
TOML 形式で記述されるテキストファイルです.
dla_alg
の入力として, アルゴリズム定義ファイルを作成するために用いる補助入力ファイルとなっています.
ハイゼンベルグ模型などのよく用いられる模型については,
補助ツール dla_hamgen
が用意されています.
name
ハミルトニアンの名前です. シミュレーション中で使われることはありません.
sites
サイトハミルトニアンの情報を記述するテーブルの配列です.
type
サイトタイプを示す整数です.
N
局所自由度が取りうる状態の数を示す整数です. 例えば \(S=1/2\) スピンでは 2 です.
values
局所自由度の基底演算子の対角要素. 例えば \(S=1/2\) スピンでは
[-0.5, 0.5]
.elements
サイトハミルトニアンの行列要素を示すテーブルの配列です.
istate
ハミルトニアンが作用する前のサイトの状態番号です.
fstate
ハミルトニアンが作用した後のサイトの状態番号です.
value
ハミルトニアンの行列要素の値です.
sources
ワームを導入するためのソースハミルトニアンの行列要素を示すテーブルの配列です.
istate
ハミルトニアンが作用する前のサイトの状態番号です.
fstate
ハミルトニアンが作用した後のサイトの状態番号です.
value
ハミルトニアンの行列要素の値です.
interactions
多体相互作用の情報を記述するテーブルの配列です.
type
相互作用タイプを示す整数です.
nbody
相互作用に関与するサイトの数を示す整数です.
N
相互作用に関与するサイトそれぞれで, 局所自由度が取りうる状態の数です. 整数の配列で指定します.
elements
相互作用ハミルトニアンの行列要素を記述するテーブルの配列です.
istate
相互作用ハミルトニアンが作用する前のサイトの状態を指定する整数の配列です.
fstate
相互作用ハミルトニアンが作用した後のサイトの状態を指定する整数の配列です.
value
相互作用ハミルトニアンの行列要素の値です.
\(S=1/2\) 反強磁性ハイゼンベルグ模型の例を示します.
name = "S=1/2 XXZ model"
[[sites]]
id = 0
N = 2
[[sites.elements]]
istate = 0
fstate = 0
value = 0.5
[[sites.elements]]
istate = 1
fstate = 1
value = -0.5
[[sites.sources]]
istate = 0
fstate = 1
value = 0.5
[[sites.sources]]
istate = 1
fstate = 0
value = 0.5
[[interactions]]
id = 0
nbody = 2
N = [ 2, 2]
[[interactions.elements]]
istate = [ 0, 0]
fstate = [ 0, 0]
value = 0.25
[[interactions.elements]]
istate = [ 0, 1]
fstate = [ 0, 1]
value = -0.25
[[interactions.elements]]
istate = [ 0, 1]
fstate = [ 1, 0]
value = 0.5
[[interactions.elements]]
istate = [ 1, 0]
fstate = [ 1, 0]
value = -0.25
[[interactions.elements]]
istate = [ 1, 0]
fstate = [ 0, 1]
value = 0.5
[[interactions.elements]]
istate = [ 1, 1]
fstate = [ 1, 1]
value = 0.25
4.2.5. 波数ファイル¶
波数ファイルは, 波数ベクトル
の \(\vec{n}^{(i)}\) を指定するテキストファイルです.
dim
格子の次元を示す整数です.
kpoints
波数ベクトルを指定するセクションです.
- 1行目
波数ベクトルの総数.
- 2行目以降
波数ベクトルを表す, 空白区切りで次元の数+1 だけ並べられた数の組. 最初の整数は波数ベクトルの番号を, 残りの数はベクトルの要素 \(k_d\) を示します.
ベクトルの基底は逆格子ベクトル \(\vec{g}\) です. 格子の座標が \(\vec{r} = \sum r_d \vec{e}_d\) で表現されて, 波数が \(\vec{k} = \sum k_d \vec{g}_d\) で表現されているとき, これらの内積は \(\vec{r}\cdot\vec{k} = \sum_d 2\pi r_d k_d / L_d\) となります. ここで \(L_d\) は \(d\) 番目の次元における格子のサイズです.
二次元の例を示します.
dim
2
kpoints
3
0 0 0
1 2 0
2 4 0