2.1. チュートリアル

UHFrでは、入力ファイルとして

  1. 環境設定入力ファイル

  2. Hamiltonian作成用ファイル

  3. 出力結果指定用ファイル

を用意した後、計算を行います。以下では、 docs/tutorial/Hubbard/UHFr ディレクトリにあるサンプルを例にチュートリアルを実施します。 なお、相互作用定義ファイルは StdFace ライブラリを用いて生成することもできます。詳細は StdFaceを用いた相互作用ファイルの作成 の章をご覧ください。

2.1.1. 環境設定入力ファイルの作成

環境設定入力ファイルでは、入出力を制御する情報を記載します。 docs/tutorial/Hubbard/UHFr ディレクトリ内に input.toml というファイルがありますが、これが環境設定入力ファイルになります。 以下、ファイルの中身を記載します。

[log]
print_level = 1
print_step = 20
[mode]
mode = "UHFr"
[mode.param]
Nsite = 8
2Sz = 0
Ncond = 8
IterationMax = 1000
EPS = 8
RndSeed = 123456789
T = 0.0
[file]
[file.input]
path_to_input = ""
OneBodyG = "greenone.def"
[file.input.interaction]
Trans = "trans.def"
CoulombIntra = "coulombintra.def"
[file.output]
path_to_output = "output"
energy = "energy.dat"
eigen = "eigen"
green = "green.dat"

このファイルはtoml形式で記述します。

log セクションに print_level で標準出力のレベル、 print_step でログファイルに出力するステップ間隔を指定します。

mode セクションに実行モードおよび基本パラメータを指定します。

file.input セクションに入力ファイルが格納されているディレクトリ path_to_input 、出力したい一体グリーン関数が定義されたファイル OneBodyG 及び初期配置 Initial を指定します。 OneBodyG を指定しない場合にはグリーン関数の出力がされません。また、Initial を指定しない場合には初期配置はランダムな配置が設定されます。

file.input.interaction セクションにHamiltonianを作成するための入力ファイルを指定します。

file.output セクションには出力ファイルを格納するディレクトリ path_to_output を指定します。 また、エネルギーの値を出力するファイル名 energy 、ハミルトニアンの固有値を出力するファイル名 eigen 、一体グリーン関数の出力ファイル名 green を指定します。これらのキーワードがない場合には情報は出力されません。

詳細については ファイルフォーマット の章をご覧ください。

2.1.2. Hamiltonianの指定

基本パラメータを設定した後は、Hamiltonianを構築するためのファイルを作成します。

Transfer部の指定

Trans でひも付けられるファイル(ここではtrans.def)で電子系のTransferに相当するHamiltonian

(2.1)\[\mathcal{H} = -\sum_{ij\sigma_1\sigma_2} t_{ij\sigma_1\sigma_2}c_{i\sigma_1}^{\dagger}c_{j\sigma_2}^{\phantom\dagger}.\]

を指定します。ファイルの中身は下記の通りです。

========================
NTransfer      64
========================
========i_j_s_tijs======
========================
    4     0     0     0         1.000000000000000         0.000000000000000
    0     0     4     0         1.000000000000000        -0.000000000000000
    4     1     0     1         1.000000000000000         0.000000000000000
    0     1     4     1         1.000000000000000        -0.000000000000000
    2     0     0     0         1.000000000000000         0.000000000000000
    0     0     2     0         1.000000000000000        -0.000000000000000
    2     1     0     1         1.000000000000000         0.000000000000000
    0     1     2     1         1.000000000000000        -0.000000000000000
...

Transファイルの詳細はセクション Trans指定ファイル をご覧ください。

二体相互作用部の指定

このチュートリアルの例では CoulombIntra でひも付けられるファイル(ここではcoulombintra.def)で電子系の二体相互作用部に相当するHamiltonian

(2.2)\[\mathcal{H} = \sum_{i} U_i n_{i\uparrow}n_{i\downarrow}.\]

を指定します。ファイルの中身は下記の通りです。

=============================================
NCoulombIntra          8
=============================================
================== CoulombIntra ================
=============================================
    0         8.000000000000000
    1         8.000000000000000
    2         8.000000000000000
    3         8.000000000000000
    4         8.000000000000000
 ...

なお、 CoulombIntra 以外にも、Hamiltonianを簡易的に記載するための各種ファイル形式に対応しています。 詳細はセクション InterAll指定ファイル - PairLift指定ファイル をご覧ください。

2.1.3. 出力ファイルの指定

一体Green関数の計算する成分を、OneBodyG でひも付けられるファイルで指定します。

一体Green関数の計算対象の指定

OneBodyG でひも付けられるファイル(ここではgreenone.def)で計算する一体Green関数 \(\langle c_{i\sigma_1}^{\dagger}c_{j\sigma_2} \rangle\) の成分を指定します。ファイルの中身は下記の通りです

===============================
NCisAjs         16
===============================
======== Green functions ======
===============================
    0     0     0     0
    0     0     1     0
    0     0     2     0
    0     0     3     0
    0     0     4     0
 ...

一体Green関数計算対象成分の指定に関するファイル入力形式の詳細はセクション OneBodyG指定ファイル をご覧ください。

2.1.4. 計算の実行

全ての入力ファイルが準備できた後、計算実行します。 環境設定入力ファイル(ここでは input.toml )を引数とし、ターミナルからH-waveを実行します。

$ hwave input.toml

計算が開始されると以下のようなログが出力されます。

2022-12-01 09:37:30,114 INFO qlms: Read def files
2022-12-01 09:37:30,116 INFO qlms: Get Hamiltonian information
2022-12-01 09:37:30,116 INFO qlms: Get Green function information
2022-12-01 09:37:30,116 INFO qlms.uhfr: Show input parameters
  Nsite               : 8
  Ncond               : 8
  2Sz                 : 0
  Mix                 : 0.5
  EPS                 : 1e-08
  IterationMax        : 1000
  RndSeed             : 123456789
  T                   : 0.0
  ene_cutoff          : 100.0
  threshold           : 1e-12
2022-12-01 09:37:30,117 INFO qlms: Start UHF calculation
2022-12-01 09:37:30,117 INFO qlms.uhfr: Set Initial Green's functions
2022-12-01 09:37:30,117 INFO qlms.uhfr: Initialize green function by random numbers
2022-12-01 09:37:30,117 INFO qlms.uhfr: Start UHFr calculations
2022-12-01 09:37:30,117 INFO qlms.uhfr: step, rest, energy, NCond, Sz
2022-12-01 09:37:30,119 INFO qlms.uhfr: 0, 0.022144468, -27.16081+0j, 8, -7.425e-16
2022-12-01 09:37:30,134 INFO qlms.uhfr: 20, 1.2083848e-05, -3.399532+0j, 8, -1.055e-15
2022-12-01 09:37:30,145 INFO qlms.uhfr: UHFr calculation is succeeded: rest=5.7552848630056134e-09, eps=1e-08.
2022-12-01 09:37:30,145 INFO qlms: Save calculation results.
2022-12-01 09:37:30,146 INFO qlms: All procedures are finished.
--------------------------------------------------------------------------------
Statistics
  function                         :  total elapsed  : average elapsed : ncalls
--------------------------------------------------------------------------------
  hwave.solver.uhfr.__init__       :      0.357 msec :      0.357 msec :      1
  hwave.solver.uhfr._initial_G     :      0.090 msec :      0.090 msec :      1
  hwave.solver.uhfr._makeham_const :      0.839 msec :      0.839 msec :      1
  hwave.solver.uhfr._makeham_mat   :      0.309 msec :      0.309 msec :      1
  hwave.solver.uhfr._makeham       :      6.001 msec :      0.176 msec :     34
  hwave.solver.uhfr._diag          :      2.468 msec :      0.073 msec :     34
  hwave.solver.uhfr._green         :      3.107 msec :      0.091 msec :     34
  hwave.solver.uhfr._calc_energy   :      1.990 msec :      0.059 msec :     34
  hwave.solver.uhfr._calc_phys     :     12.929 msec :      0.380 msec :     34
  hwave.solver.uhfr.solve          :     28.290 msec :     28.290 msec :      1
  hwave.solver.uhfr.save_results   :      0.852 msec :      0.852 msec :      1
--------------------------------------------------------------------------------

入力ファイル読み込みに関するログが出力されたあと、UHF計算の計算過程に関する情報が出力されます。 出力ファイルは input.tomlfile.output セクションでの設定にしたがい、 output ディレクトリに 固有値が記載された energy.dat , 固有ベクトルが記載された spin-down_eigen.npz, spin-up_eigen.npz, 一体グリーン関数の値が記載された green.dat ファイルが出力されます。 出力ファイルの詳細については ファイルフォーマット の章をご覧ください。