Skip to content

tenes JP

Yuichi Motoyama edited this page Nov 18, 2019 · 3 revisions

[日本語/ENGLISH]

version

COMMIT bbeccc31649fb5e19db452795453ea143d625bce (2019-11-18 14:45 JST)

実行

$ tenes --help
TeNeS: TEnsor NEtwork Solver for 2D quantum lattice system

  Usage:
    tenes [--quiet] <input_toml>
    tenes --help
    tenes --version

  Options:
    -h --help       Show this help message.
    -v --version    Show the version.
    -q --quiet      Do not print any messages.
  • 引数として入力ファイル名を取る
  • コマンドラインオプション
    • help
    • version
tenes input.toml

入力ファイル

  • ファイルフォーマットは TOML 形式
  • parameter, lattice, evolution, observable の4つのセクションを持つ
    • ファイル名を指定することで分割可能にする予定

parameter

更新回数など、種々のパラメータを記述する。このセクションのみ、各々のパラメータにデフォルト値が存在する。 サブセクションとして tensor, simple_update, full_update, ctm をもつ。

parameter.tensor

name desc default
D 中心テンソルがもつ virtual ボンドの次元 2
CHI 角転送行列の virtual ボンドの次元 4
Lcor 相関関数を測る距離の上限 0

parameter.simple_update

name desc default
num_step simple update の回数 0
inverse_lambda_cutoff simple update でゼロとみなす平均場のcutoff 1e-12

parameter.full_update

name desc default
num_step full update の回数 0
inverse_projector_cutoff 使っていない気がする(オリジナルのinverse_env_cut?) 1e-12
inverse_precision full update で擬似逆行列を計算する際にゼロとみなす特異値のcutoff 1e-12
convergence_epsilon full update でtruncationの最適化を行う際の収束判定値 1e-12
iteration_max full update でtruncationの最適化を行う際のiterationの最大回数 1000
gauge_fix テンソルのゲージを固定するかどうか true
fastfullupdate Fast full update にするかどうか true

parameter.ctm

name desc default
inverse_projector_cutoff CTMのprojectorを計算する際にゼロとみなす特異値のcutoff 1e-12
convergence_epsilon CTMの収束判定値 1e-10
iteration_max CTMの収束iterationの最大回数 100
projector_corner CTMのprojector計算で1/4角のテンソルのみを使う trueにした方が一般の問題では安定
use_rsvd SVD を 乱択SVD で置き換えるかどうか false
rsvd_oversampling_factor 2

[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


lattice

「ユニットセル」の情報を記述する。

name desc type
L_sub ユニットセルの大きさ 整数のリスト

evolution

simple update, full update で使う虚時間発展演算子を記述する。

name desc type
matrix 虚時間発展演算子の行列表現 文字列のリスト
simple_update simple update における、虚時間発展演算子のインデックスと作用するボンドの順番 文字列
full_update full update における、虚時間発展演算子のインデックスと作用するボンドの順番 文字列

matrix

  • ひとつの文字列がひとつの行列を意味する
  • 列は1つ以上の空白で区切られ、行は1つ以上の改行で区切られる
  • 定義した順番がそのまま行列の番号に対応し、 *_update での指定で使われる (0-origin)。

*_update

  • 1行が1回の演算子作用を表す
  • 各行は int int char int の4つのフィールドからなる
    1. ボンドがつながるサイト
    2. ボンドがつながるサイト
    3. 横方向 (h) か縦方向 (v) か
    4. 演算子番号 (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
"""
]

observable

物理量測定に関する諸々を記述する。

name desc type
local_operator サイト演算子 (ex. Sz) 文字列のリスト
hamiltonian ボンドハミルトニアン 文字列のリスト
hamiltonian_bonds ボンドハミルトニアンの種類と作用するボンドの組 文字列

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
""",
]

correlation

相関関数 C = <A(0)B(r)> を指定するセクション

name desc type
r_max 相関関数の距離 r の最大値 整数
operators 相関関数を測る演算子 A,B の番号 整数のリストのリスト

演算子は observable セクションで指定したものが用いられる。

[correlation]
r_max = 5
operators = [[0,0], [0,1], [1,1]]

出力ファイル

  • 計算結果は output ディレクトリに保存される
    • ディレクトリ名は変更可能にする予定
      • 入力ファイル and/or コマンドライン引数?

parameters.dat

parameterlattice のパラメータが出力される

energy.dat

サイトあたりのエネルギーが出力される

site_obs.dat

  • サイト演算子の期待値が出力される
  • 各行4列からなる
    1. 演算子のインデックス
    2. サイトのインデックス
    3. 期待値の実部
    4. 期待値の虚部

# $1: op_index
# $2: site_index
# $3: real
# $4: imag

0 0 1.92549465249573365e-02 0.00000000000000000e+00
0 1 -1.92620814130195529e-02 0.00000000000000000e+00
0 2 -1.95243093055922252e-02 0.00000000000000000e+00
0 3 1.91619477632061150e-02 0.00000000000000000e+00
1 0 4.07206063348768799e-01 0.00000000000000000e+00
1 1 -4.07243511737157671e-01 0.00000000000000000e+00
1 2 -4.07255967738734126e-01 0.00000000000000000e+00
1 3 4.07308918791554009e-01 0.00000000000000000e+00

neighbor_obs.dat

  • サイト演算子の最近接相関が出力される
  • 各行5列からなる
    1. 演算子のインデックス
    2. サイトのインデックス
    3. サイトのインデックス
    4. 期待値の実部
    5. 期待値の虚部
# $1: op_index
# $2: source_site
# $3: target_site
# $4: real
# $5: imag

0 0 1 -7.05927615064968900e-02 0.00000000000000000e+00
0 0 2 -7.27068456430051274e-02 0.00000000000000000e+00
0 1 0 -7.13284385957392297e-02 0.00000000000000000e+00
0 1 3 -7.19523349256113581e-02 0.00000000000000000e+00
0 2 3 -7.12610364895483045e-02 0.00000000000000000e+00
0 2 0 -7.19731507561011952e-02 0.00000000000000000e+00
0 3 2 -7.05633558230210067e-02 0.00000000000000000e+00
0 3 1 -7.26803750807340498e-02 0.00000000000000000e+00
1 0 1 -1.85942869237103348e-01 0.00000000000000000e+00
1 0 2 -1.87164731677545187e-01 0.00000000000000000e+00
1 1 0 -1.86360382550076586e-01 0.00000000000000000e+00
1 1 3 -1.86768451086366694e-01 0.00000000000000000e+00
1 2 3 -1.86384181909805935e-01 0.00000000000000000e+00
1 2 0 -1.86747576732693515e-01 0.00000000000000000e+00
1 3 2 -1.85975089525013598e-01 0.00000000000000000e+00
1 3 1 -1.87196522916879049e-01 0.00000000000000000e+00

correlation.dat

  • 相関関数が出力される
  • 各行8列からなる
    1. 左演算子のインデックス
    2. 左演算子のサイトインデックス
    3. 右演算子のインデックス
    4. 右演算子のサイトインデックス
    5. 右演算子のユニットセルオフセット (x)
    6. 右演算子のユニットセルオフセット (y)
    7. 演算子の実部
    8. 演算子の虚部

# $1: left_op
# $2: left_site
# $3: right_op
# $4: right_site
# $5: offset_x
# $6: offset_y
# $7: real
# $8: imag

0 0 0 1 0 0 -7.05927615064967928e-02 0.00000000000000000e+00 
0 0 0 0 1 0 1.19668843226761017e-02 0.00000000000000000e+00 
0 0 0 1 1 0 -2.43086229320005863e-03 0.00000000000000000e+00 
0 0 0 0 2 0 7.42729194528496308e-04 0.00000000000000000e+00 
0 0 0 1 2 0 -4.38794819416885419e-04 0.00000000000000000e+00 
0 0 0 2 0 0 -7.27068456430051135e-02 0.00000000000000000e+00 
0 0 0 0 0 1 1.23339845746621279e-02 0.00000000000000000e+00 
0 0 0 2 0 1 -2.50111186244407349e-03 0.00000000000000000e+00 
0 0 0 0 0 2 7.54607806587391516e-04 0.00000000000000000e+00 
0 0 0 2 0 2 -4.47734559969679546e-04 0.00000000000000000e+00 
1 0 1 1 0 0 -1.85942869237103237e-01 0.00000000000000000e+00 
(中略)
1 3 1 1 0 3 -1.65874245891461547e-01 0.00000000000000000e+00

time.dat

計算時間が出力される