5.2. tenes
の入力ファイル¶
ファイルフォーマットは TOML 形式
parameter
,lattice
,evolution
,observable
,correlation
の5つのセクションを持ちます。将来的にはファイル名を指定することで分割可能にする予定です。
5.2.1. parameter
セクション¶
更新回数など、種々のパラメータを記述します。このセクションのみ、各々のパラメータにデフォルト値が存在します。
サブセクションとして tensor
, simple_update
, full_update
,
ctm
, random
を持ちます。
parameter.tensor
¶
名前 |
説明 |
型 |
デフォルト |
---|---|---|---|
|
中心テンソルがもつ virtual ボンドの次元 |
整数 |
2 |
|
角転送行列の virtual ボンドの次元 |
整数 |
4 |
|
最適化後のテンソルを書き込むディレクトリ |
文字列 |
"" |
|
初期テンソルを読み込むディレクトリ |
文字列 |
"" |
save_dir
- 最適化後のテンソルをこのディレクトリ以下に保存します - 空文字列の場合は保存しませんload_dir
- 各種テンソルをこのディレクトリ以下から読み込みます - 保存したときと同じ並列度である必要があります - 空文字列の場合は読み込みません
parameter.simple_update
¶
名前 |
説明 |
型 |
デフォルト |
---|---|---|---|
|
simple update の回数 |
整数 |
0 |
|
simple update でゼロとみなす平均場のcutoff |
実数 |
1e-12 |
parameter.full_update
¶
名前 |
説明 |
型 |
デフォルト |
---|---|---|---|
|
full update の回数 |
整数 |
0 |
|
full update で環境テンソルを計算する際にゼロとみなす特異値のcutoff |
実数 |
1e-12 |
|
full update で擬似逆行列を計算する際にゼロとみなす特異値のcutoff |
実数 |
1e-12 |
|
full update でtruncationの最適化を行う際の収束判定値 |
実数 |
1e-12 |
|
full update でtruncationの最適化を行う際のiterationの最大回数 |
整数 |
1000 |
|
テンソルのゲージを固定するかどうか |
真偽値 |
true |
|
Fast full update にするかどうか |
真偽値 |
true |
parameter.ctm
¶
名前 |
説明 |
型 |
デフォルト |
---|---|---|---|
|
CTMのprojectorを計算する際にゼロとみなす特異値のcutoff |
実数 |
1e-12 |
|
CTMの収束判定値 |
実数 |
1e-10 |
|
CTMの収束iterationの最大回数 |
整数 |
100 |
|
CTMのprojector計算で1/4角のテンソルのみを使う |
真偽値 |
true |
|
SVD を 乱択SVD で置き換えるかどうか |
真偽値 |
false |
|
乱択SVD 中に計算する特異値の数の、最終的に用いる数に対する比率 |
実数 |
2.0 |
parameter.random
¶
名前 |
説明 |
型 |
デフォルト |
---|---|---|---|
|
テンソルの初期化や乱択SVD に用いる疑似乱数生成器のシード |
整数 |
11 |
MPI 並列において、各プロセスは seed
にプロセス番号を足した数を実際のシードとして持ちます。
例¶
[parameter]
[parameter.tensor]
D = 4 # tensor_dim
CHI = 16 # env_dim
[parameter.simple_update]
num_step = 1000
[parameter.full_update]
num_step = 1
[parameter.ctm]
iteration_max = 5
5.2.2. lattice
セクション¶
「ユニットセル」の情報を記述します。
ユニットセルは Lx
かける Ly
の大きさをもつ長方形の形をしています。
名前 |
説明 |
型 |
---|---|---|
|
ユニットセルの大きさ |
整数または整数のリスト |
L_sub
として2つの整数からなるリストを渡した場合、はじめの要素が Lx
に、もう片方が Ly
になります。
3つ以上の要素からなるリストを渡した場合にはエラー終了します。
L_sub
として整数を渡した場合、 Lx
と Ly
とが等しくなります。
ユニットセル内のサイトは0から順番に番号付けされます。 x 方向から順に並びます。
L_sub = [2,3]
としたときの例:
y
^ 4 5
| 2 3
.->x 0 1
ボンドの情報は evolution
や observable
で与えられます。
5.2.3. evolution
セクション¶
simple update, full update で使う虚時間発展演算子を記述します。
名前 |
説明 |
型 |
---|---|---|
|
虚時間発展演算子の行列表現 |
文字列のリスト |
|
simple update における、虚時間発展演算子のインデックスと作用するボンドの順番 |
文字列 |
|
full update における、虚時間発展演算子のインデックスと作用するボンドの順番 |
文字列 |
matrix
¶
ひとつの文字列がひとつの行列を意味します。
列は1つ以上の空白で区切られ、行は1つ以上の改行で区切られます。
定義した順番がそのまま行列の番号に対応し、
*_update
での指定で使われます (0-origin)。
simple_update
, full_update
¶
1行が1回の演算子作用を表します。
各行は
int int char int
の4つのフィールドからなります。ボンドがつながるサイト
ボンドがつながるサイト
横方向 (h) か縦方向 (v) か
演算子番号 (0-origin)
例¶
[evolution]
simple_update = """
0 1 h 0
3 2 h 0
2 3 h 0
1 0 h 0
0 2 v 0
3 1 v 0
2 0 v 0
1 3 v 0
"""
full_update = """
0 1 h 0
3 2 h 0
2 3 h 0
1 0 h 0
0 2 v 0
3 1 v 0
2 0 v 0
1 3 v 0
"""
matrix = [
"""
0.9975031223974601 0.0 0.0 0.0
0.0 1.0025156589209967 -0.005012536523536887 0.0
0.0 -0.005012536523536888 1.0025156589209967 0.0
0.0 0.0 0.0 0.9975031223974601
"""
]
5.2.4. observable
セクション¶
物理量測定に関する諸々を記述します。
名前 |
説明 |
型 |
---|---|---|
|
サイト演算子 (ex. Sz) |
文字列のリスト |
|
ボンドハミルトニアン |
文字列のリスト |
|
ボンドハミルトニアンの種類と作用するボンドの組 |
文字列 |
local_operator
, hamiltonian
¶
evolution.matrix
と同様。
定義した順番がそのまま演算子・ハミルトニアンのインデックスに対応します。
hamiltonian_bonds
¶
evolution.simple_update
と同様。
例¶
[observable]
local_operator = [
"""
0.5 0.0
0.0 -0.5
""",
"""
0.0 0.5
0.5 0.0
""",
]
hamiltonian_bonds = """
0 1 h 0
3 2 h 0
2 3 h 0
1 0 h 0
0 2 v 0
3 1 v 0
2 0 v 0
1 3 v 0
"""
hamiltonian = [
"""
0.25 0.0 0.0 0.0
0.0 -0.25 0.5 0.0
0.0 0.5 -0.25 0.0
0.0 0.0 0.0 0.25
""",
]