3.2. エキスパートモード

エキスパートモードでは、入力ファイルとして

  1. 入力ファイルリスト
  2. 基本パラメータ用ファイル
  3. Hamiltonian作成用ファイル
  4. 出力結果指定用ファイル

を用意した後、計算を行います。計算開始後に関しては、スタンダードモードと同様です。 ここでは前節のスタンダードモードでのチュートリアルを行った後の状況を例に入力ファイルの作成に関する説明を行います。

3.2.1. 入力ファイルリストファイル

入力ファイルの種類と名前を指定するファイルnamelist.defには、下記の内容が記載されています。 各入力ファイルリストファイルでは、行毎にKeywordとファイル名を記載し、ファイルの種類の区別を行います。 詳細はセクション 入力ファイル指定用ファイル をご覧ください。

       ModPara  modpara.def
       LocSpin  locspn.def
  CoulombInter  coulombinter.def
          Hund  hund.def
      Exchange  exchange.def
      OneBodyG  greenone.def
      TwoBodyG  greentwo.def
       CalcMod  calcmod.def
PairExcitation  pair.def
   SpectrumVec  zvo_eigenvec_0

3.2.2. 基本パラメータの指定

計算モード、計算用パラメータ、局在スピンの位置を以下のファイルで指定します。

計算モードの指定

CalcModでひも付けられるファイル(ここではcalcmod.def)で計算モードを指定します。 ファイルの中身は下記の通りです。 計算モード、計算用パラメータ、局在スピンの位置を以下のファイルで指定します。:

#CalcType = 0:Lanczos, 1:TPQCalc, 2:FullDiag, 3:CG
#CalcModel = 0:Hubbard, 1:Spin, 2:Kondo, 3:HubbardGC, ..
#Restart = 0:None, 1:Save, 2:Restart&Save, 3:Restart
#CalcSpec = 0:None, 1:Normal, 2:No H*Phi, 3:Save, ...
CalcType   3
CalcModel   1
ReStart   0
CalcSpec   0
CalcEigenVec   0
InitialVecType   0
InputEigenVec   0

CalcTypeで計算手法の選択、CalcModelで対象モデルの選択を行います。 ここでは、計算手法としてLOBCG法、対象モデルとしてスピン系(カノニカル)を選択しています。 CalcModファイルでは固有ベクトルの入出力機能も指定することができます。 CalcModファイルの詳細は CalcModファイル をご覧ください。

計算用パラメータの指定

ModParaでひも付けられるファイル(ここではmodpara.def)で計算用パラメータを指定します。ファイルの中身は下記の通りです。:

--------------------
Model_Parameters   0
--------------------
HPhi_Cal_Parameters
--------------------
CDataFileHead  zvo
CParaFileHead  zqp
--------------------
Nsite          16
2Sz            0
Lanczos_max    2000
initial_iv     -1
exct           1
LanczosEps     14
LanczosTarget  2
LargeValue     4.500000000000000e+00
NumAve         5
ExpecInterval  20
NOmega         200
OmegaMax       7.200000000000000e+01     4.000000000000000e-02
OmegaMin       -7.200000000000000e+01    4.000000000000000e-02
OmegaOrg       0.0 0.0

このファイルでは、サイト数、伝導電子の数、トータル \(S_z\) やLanczosステップの最大数などを指定します。ModParaファイルの詳細はセクション ModParaファイル をご覧ください。

局在スピンの位置の指定

LocSpinでひも付けられるファイル(ここではlocspn.def)で局在スピンの位置と \(S\) の値を指定します。ファイルの中身は下記の通りです。:

================================
NlocalSpin    16
================================
========i_0LocSpn_1IteElc ======
================================
    0      1
    1      1
    2      1
    3      1
    4      1
    5      1
...

LocSpinファイルの詳細は LocSpin指定ファイル をご覧ください。

3.2.3. Hamiltonianの指定

基本パラメータを設定した後は、Hamiltonianを構築するためのファイルを作成します。
HPhi++ では、電子系の表現で計算を行うため、スピン系では以下の関係式
\[\begin{split}S_z^{(i)}&=(c_{i\uparrow}^{\dagger}c_{i\uparrow}-c_{i\downarrow}^{\dagger}c_{i\downarrow})/2,\\ S_+^{(i)}&=c_{i\uparrow}^{\dagger}c_{i\downarrow},\\ S_-^{(i)}&=c_{i\downarrow}^{\dagger}c_{i\uparrow}.\end{split}\]

を用い、電子系の演算子に変換しHamiltonianの作成をする必要があります。

Transfer部の指定

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

\[\mathcal{H} +=-\sum_{ij\sigma_1\sigma2} t_{ij\sigma_1\sigma2}c_{i\sigma_1}^{\dagger}c_{j\sigma_2}.\]

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

========================
NTransfer       0
========================
========i_j_s_tijs======
========================

スピン系では外場を掛ける場合などに使用することができます。 例えば、サイト1に \(-0.5 S_z^{(1)}\) ( \(S=1/2\) )の外場を掛けたい場合には、, 電子系の表現 \(-0.5/2(c_{1\uparrow}^{\dagger}c_{1\uparrow}-c_{1\downarrow}^{\dagger}c_{1\downarrow})\) に書き換えた以下のファイルを作成することで計算することが出来ます。

========================
NTransfer      1
========================
========i_j_s_tijs======
========================
1 0 1 0 -0.25 0
1 1 1 1 0.25 0

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

二体相互作用部の指定

InterAllでひも付けられるファイル(ここではzInterAll.def)で電子系の二体相互作用部に相当するHamiltonian

\[\mathcal{H}+=\sum_{i,j,k,l}\sum_{\sigma_1,\sigma_2, \sigma_3, \sigma_4}I_{ijkl\sigma_1\sigma_2\sigma_3\sigma_4}c_{i\sigma_1}^{\dagger}c_{j\sigma_2}c_{k\sigma_3}^{\dagger}c_{l\sigma_4}.\]

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

======================
NInterAll      96
======================
========zInterAll=====
======================
    0     0     0     0     1     0     1     0   0.500000  0.000000
    0     0     0     0     1     1     1     1  -0.500000  0.000000
    0     1     0     1     1     0     1     0  -0.500000  0.000000
    0     1     0     1     1     1     1     1   0.500000  0.000000
    0     0     0     1     1     1     1     0   1.000000  0.000000
    0     1     0     0     1     0     1     1   1.000000  0.000000
...

ここでは、簡単のためサイト \(i\) とサイト \(i+1\) 間の相互作用に着目して説明します。 \(S = 1/2\) の場合、相互作用の項をフェルミオン演算子で書き換えると、

\[\begin{split}\mathcal{H}_{i,i+1}&=J(S_x^{(i)}S_x^{(i+1)}+S_y^{(i)}S_y^{(i+1)}+S_z^{(i)}S_z^{(i+1)}) \nonumber\\ &=J \left( \frac{1}{2}S_+^{(i)}S_-^{(i+1)}+\frac{1}{2}S_-^{(i)}S_+^{(i+1)}+S_z^{(i)}S_z^{(i+1)} \right) \nonumber\\ &=J \left[ \frac{1}{2}c_{i\uparrow}^{\dagger}c_{i\downarrow}c_{i+1\downarrow}^{\dagger}c_{i+1\uparrow}+\frac{1}{2}c_{i\downarrow}^{\dagger}c_{i\uparrow}c_{i+1\uparrow}^{\dagger}c_{i+1\downarrow}+\frac{1}{4}(c_{i\uparrow}^{\dagger}c_{i\uparrow}-c_{i\downarrow}^{\dagger}c_{i\downarrow})(c_{i+1\uparrow}^{\dagger}c_{i+1\uparrow}-c_{i+1\downarrow}^{\dagger}c_{i+1\downarrow}) \right]. \nonumber\end{split}\]
となります。したがって、 \(J=2\) に対してInterAllファイルのフォーマットを参考に相互作用を記載すると、

\(S_z^{(i)}S_z^{(i+1)}\) の相互作用は

i     0     i     0    i+1     0    i+1     0   0.500000  0.000000
i     0     i     0    i+1     1    i+1     1  -0.500000  0.000000
i     1     i     1    i+1     0    i+1     0  -0.500000  0.000000
i     1     i     1    i+1     1    i+1     1   0.500000  0.000000

となり、それ以外の項は

i     0     i     1    i+1     1    i+1     0   1.000000  0.000000
i     1     i     0    i+1     0    i+1     1   1.000000  0.000000

と表せばよいことがわかります。なお、InterAll以外にも、Hamiltonianを簡易的に記載するための下記のファイル形式に対応しています。 詳細はセクション InterAll指定ファイル - PairLift指定ファイル をご覧ください。

3.2.4. 出力ファイルの指定

一体Green関数および二体Green関数の計算する成分を、それぞれOneBodyG, TwoBodyGでひも付けられるファイルで指定します。

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

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

===============================
NCisAjs         32
===============================
======== Green functions ======
===============================
   0     0     0     0
   0     1     0     1
   1     0     1     0
   1     1     1     1
   2     0     2     0
...

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

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

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

=============================================
NCisAjsCktAltDC       1024
=============================================
======== Green functions for Sq AND Nq ======
=============================================
   0     0     0     0     0     0     0     0
   0     0     0     0     0     1     0     1
   0     0     0     0     1     0     1     0
   0     0     0     0     1     1     1     1
   0     0     0     0     2     0     2     0
...

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

3.2.5. 計算の実行

全ての入力ファイルが準備できた後、計算実行します。実行時はエキスパートモードを指定する "-e" をオプションとして指定の上、入力ファイルリストファイル(ここではnamelist.def)を引数とし、ターミナルから HPhi++ を実行します。

$ Path/HPhi++ -e namelist.def

計算開始後のプロセスは、スタンダードモードと同様になります。