HΦ による光学伝導度計算
Last Update:2021/12/09
はじめに
HΦ (HPhi) はいわゆる厳密対角化法に基いた量子格子模型ソルバーであり、基底状態波動関数や励起スペクトルなどを計算できる。
さらに、いくつかの模型や励起演算子については、簡単なテキストファイルを用意するだけで計算できるように整備されている(スタンダードモード)。
たとえばスタンダードモードによる量子スピン系の動的構造因子の計算例としては、別レビューを参照してほしい。
ここでは、もう少しアドバンスドな例として、1次元フェルミオンハバード系 \( \mathcal{H} = -t \sum_{i=1}^L \left[ c^\dagger_{i+1}c_i + \text{h.c.} \right] + U\sum_i n_i \) の光学伝導度(のレギュラーパート) \(\sigma_\text{reg}(\omega)\)を電流・電流相関から計算する。
1次元鎖およびフェルミオンハバード模型はスタンダードモードで準備されているが、電流を表す励起演算子はスタンダードモードで準備されていないため、行列要素を手で与える必要がある(エキスパートモード)。
光学伝導度のレギュラーパート \(\sigma\)は \(\sigma_\text{reg}(\omega) = \left( L\omega\right)^{-1}\left\langle \psi_0 | j^\dagger \left( \mathcal{H} – (\omega – E_0 – i\eta) \right)^{-1} j | \psi_0 \right\rangle \) として計算できる。
ここで \(j\) は電流演算子 \( j = -i \sum_{r, s=\pm} \left( c^\dagger_{r+1, s}c_{r, s} – c^\dagger_{r, s}c_{r+1, s} \right) \) 。
基底状態計算
method = "CG" lattice = "chain lattice" model = "Fermion Hubbard" L = 8 t = 1.0 U = 4.0 nelec = 8 outputmode = "none" eigenvecio = "out"
というファイル gs.in
を用意して、HPhi のスタンダードモードで基底状態計算を行う。
$ HPhi -s gs.in
eigenvecio = "out"
を設定しておくことで基底状態波動関数がoutput
ディレクトリ以下に書き出される。
光学伝導度計算
励起スペクトル計算のためのスタンダード入力ファイルとして次に示すようなopt.in
を用意する。
method = "CG" lattice = "chain lattice" model = "Fermion Hubbard" L = 8 t = 1.0 U = 4.0 nelec = 8 outputmode = "none" Lanczos_Max = 1000 LanczosEps = 10 calcspec = "normal" OmegaOrg = -4.6035262999891735 Omegamin = 0.0 Omegamax = 5.0 Omegaim = 0.1
Omegaorg
には基底状態エネルギー (output/zvo_energy.dat
に保存されている) を記入する。
Lanczos_Max
とLanczosEps
をいじることで収束判定を緩めて計算を早めている。
このファイルをエキスパートモード入力ファイルに変換する。
$ HPhi -sdry opt.in
出来上がったファイル群のうち、pair.def
が励起演算子を定義するファイルである。これを書き換えて電流演算子\(j\) を定義する。
励起演算子
励起演算子定義ファイルの中では、励起演算子を生成消滅演算子の積からなる項の和に分割し、1行につき1つの項を定義する。
例えば \(-i c^\dagger_{2,\uparrow} c_{1,\uparrow}\) という項は
2 0 1 0 1 0.0 -1.0
と表される。
長さ L を変えたい場合には、好きな言語で適当なスクリプトを組んで自動生成するのが良い。
L = 8 N = 4*L print("===") print("NPair {}".format(N)) print("===") print("===") print("===") for i in range(L): j = (i+1)%L for s in (0,1): print("{} {} {} {} 1 0.0 -1.0".format(j, s, i, s)) print("{} {} {} {} 1 0.0 1.0".format(i, s, j, s))
光学伝導度計算
励起演算子ファイルを書き換えた後に、HPhi のエキスパートモードを用いて動的グリーン関数を計算する。
$ HPhi -e namelist.def
計算が終了後、動的グリーン関数がoutput/zvo_DynamicalGreen.dat
に保存される。
例えばGnuplot などを用いて
gnuplot> pl 'output/zvo_DynamicalGreen.dat' u 1:(-$4/$1/8)
とすることで光学伝導度のレギュラーパートを可視化できる。