kBT — 有限温度の自己エネルギー計算 (tetrakbt / t_sigmakbt)
ecalj main / 2026-06 実装、2026-09 検証
金属の QSGW が反復ごとに振動して収束しないことがある。原因は Fermi 面の 鋭い応答で、電子温度を入れて Fermi 面を物理的に広げるのがここで述べる方法である。
側()と 側()にそれぞれ別のキーがあり、 両方を同じ温度にして使うのが本来の形である。
| キー | どこに効くか | 実装 |
|---|---|---|
tetrakbt + t_tetrakbt | の占有数(→ ) | main |
t_sigmakbt | 、 の占有数 | main |
1. なぜ要るか
金属の QSGW は、k メッシュが Fermi 面の鋭い応答(ネスティング)を解像すると 反復ごとに振動しうる。テトラヘドロン法は Fermi 面を「厳密に」標本化するので に鋭い小 構造が立ち、 が毎反復の Fermi 面のずれに強く反応する。
電子温度で Fermi 面を広げるのが根本的な正則化である。 を 方向に平滑化する SmearX0 は症状だけを扱う 対症療法で、こちらとは別物である。
実測では LiTi₂O₄(金属スピネル)で、 と のメッシュ依存が小さくなり、 QSGW が安定した(1000 K で の eV 以内 rms 13.8 meV。消えたと 言い切るには不満が残る点は §5.3 の末尾に挙げた。 §5.3 に図と数値、 §5.2 に反復ごとの PDF)。
2. 側 — tetrakbt
ctrlg.<sname>.toml の [gw]:
[gw]
tetrakbt = true # chi0 を有限温度テトラヘドロンで (method B')
t_tetrakbt = 2000.0 # 電子温度 (K)。kBT[eV] ~ T/11604何が起きるか:
- の占有因子が温度 の Fermi 分布になる (
tetwt5/lindtet6_kbt、エネルギー畳み込みの method B'。 で厳密に元へ戻る) heftet(GW フローのimode=1)が有限温度の Fermi 準位を二分法で解きEFERMI_kbtに書く。 のテトラヘドロンがそれを読むので、 占有数と が同じ温度を指す
出力での確認:
tetrakbt_init: T[K], kbt[Ry], kbt[eV] 2000 0.12667E-01 0.17234E+003. 側 — t_sigmakbt
tetrakbt だけでは は のままである( の極は Gaussian の esmr で平滑化され、Fermi 準位も のもの)。t_sigmakbt はそこを揃える。
[gw]
tetrakbt = true
t_tetrakbt = 2000.0
t_sigmakbt = 2000.0 # Sigma 側の電子温度 (K)。0 (既定) で従来どおりt_sigmakbt == t_tetrakbt にすること。 そうして初めて ()と ()が一つの物理的な温度を共有する。
何が変わるか
t_sigmakbt > 0 のとき、sigmakbt_setup が 2 つのことをする:
- 自己エネルギーの Fermi 準位を
EFERMI_kbtに切り替える ( のEFERMIではなく、tetrakbtと同じ ) - 占有数の核を Gaussian から Fermi–Dirac に替える — と の両方
Gaussian 平滑化(幅 esmr)
が、Fermi–Dirac の累積分布
に置き換わる。 で鋭い階段関数に戻り、既定(t_sigmakbt = 0)では 式 (1) の従来の挙動をそのまま再現する。
出力での確認
sigmakbt_setup: t_sigmakbt[K]= 2000.0 kbt[Ry]= 0.12667E-01 ef<-EFERMI_kbt= 0.123456EFERMI_kbt が無いとき
t_sigmakbt > 0 でも EFERMI_kbt が無ければ、警告を一行出して 側の有限温度は適用されない(従来どおり動く):
sigmakbt_setup: WARNING t_sigmakbt>0 but EFERMI_kbt missing (need tetrakbt/heftet).
Sigma-side finite-T NOT applied.EFERMI_kbt を書くのは tetrakbt を有効にした heftet なので、 t_sigmakbt は単独では使えない。 必ず tetrakbt = true と併せて設定すること。
esmr は既定のままにすること
t_sigmakbt > 0 にしても、 側の状態範囲は依然 esmr で決まっている。 esmr を既定(0.01 Ry)より下げたり を 3000 K より上げたりすると、 警告なしに占有数が切り捨てられる。§7.3 を見よ。
4. 温度の選び方
を、k メッシュが Fermi 面領域で持つエネルギー間隔と同程度以上に取る:
LiTi₂O₄ の / では – K(– eV)が 使える範囲だった。求めたい量が について収束していること、できれば 同じ で 2 つの k メッシュが一致することを確認すること。
温度を上げると何が直るか
LiTi₂O₄ の QSGW 第 1 反復を だけ変えて重ねたもの (いずれも 、deltaq_scale = 0.3。共通の静電ゼロで揃え、 の を原点に取った)。

図をクリックすると拡大する。
( テトラヘドロン lindtet6、黒)では Ti-3d 帯が Γ–L 上で −3.9 eV まで落ち込む。これは分散ではなく head の破綻で、 温度を上げると単調に消える:
| Γ–L 上 () の 帯の底 | |
|---|---|
0 (lindtet6) | −3.91 eV |
| 1000 K | −1.31 eV |
| 2000 K | −0.66 eV |
| 3000 K | −0.50 eV |
これが有限温度を入れる理由である。 ただし で method B′ が lindtet6 に厳密に戻ること自体は変わらない( が壊れているのは テトラヘドロン法ではなく、その上での金属の の扱いのほうである)。
高温では deltaq_scale を小さく取ること
上の図の 3000 K(赤)は Γ–L では収まっているのに、K–Γ の中央に 別のスパイクが残る。これは deltaq_scale(offset-Gamma の head の シフト量)が大きすぎるためで、温度の問題ではない。同じ 3000 K で deltaq_scale を 0.3 から 0.1 に下げると消える:

赤 = deltaq_scale = 0.3(K–Γ 中央に −1.24 eV のスパイク)、 青 = deltaq_scale = 0.1(消える)。、 = 3000 K、QSGW 第 1 反復。
つまり tetrakbt / method B′ 本体の問題ではなく、offset-Gamma の head が高温 × 大きい deltaq で破綻する。 高い を使うときは deltaq_scale も併せて小さくすること。
5. サンプル — Samples/kBT/
ecalj/Samples/kBT/ に収束した計算一式(入力と結果)がある。物質ごとに LiTi2O4/(66 MB)と Fe/(0.8 MB)に分かれている。GW を何十回も反復するので 計算が重く、testecalj のターゲットにはしていない。 手法が何を変えるかを、収束した結果そのもので見るためのもの。
LiTi2O4/ の 3 つの run:
| ディレクトリ | k メッシュ | 反復 | t_sigmakbt | 何のため | |
|---|---|---|---|---|---|
n666_T2000/ | 2000 K | 11 | 2000 K | 標準。反復が収束していく様子 | |
n666_T1000/ | 1000 K | 30 | 1000 K | ↓ とペアでメッシュ依存を見る | |
n999_T1000/ | 1000 K | 45 | 1000 K | ↑ とペア。これが重い計算 | |
n666_T3000/ | 3000 K | 29 | 3000 K | ↓ とペアで 側の有無を見る | |
n666_T3000_chi0only/ | 3000 K | 60 | 0 | ↑ とペア。収束しない |
いずれも deltaq_scale = 0.1。最後の 1 つだけ 側を に置き去りにしてある。
5.1 反復の収束 (, 2000 K)

QSGW 反復 1(紫)から 11(黄)まで。反復 3–4 以降は 近傍でも線が重なり、 金属にもかかわらず振動せずに収束している。
5.2 パラパラマンガ — と が反復で近づいていく
bands_iterations_T1000.pdf(45 ページ、4 MB)
1 ページ = 1 反復。青が 、赤破線が 。ページを送ると
- 反復 1 では と が大きく食い違っている(メッシュ依存が出ている)
- 反復が進むにつれて両者が近づき、最後には重なる
- は反復 30 で止めたので、それ以降は収束値を薄い青で参照として残してある
PDF ビューアでページを送れば動画として見える。
5.3 メッシュ依存が消えていること (1000 K)

収束した (反復 30)と (反復 45)の重ね描き。差は
| 範囲 | rms | 最大 |
|---|---|---|
| eV | 13.8 meV | 54 meV |
| eV | 23.3 meV | 265 meV |
| eV | 75.4 meV | 940 meV |
静電ゼロから測った Fermi 準位 は が 6.76420 eV、 が 6.76424 eV で、0.05 meV しか違わない。
反復ごとの残差( の 29→30 で 近傍 rms 1.4 meV、 の 44→45 で 0.70 meV)より上の差のほうが大きいので、13.8 meV は反復ノイズではなく本当の メッシュ差である。それでも d バンドの議論には十分小さい。
ただし「消えた」と言い切るには不満が残る
この対で言えているのは「1000 K で と が 近傍 10 meV 台まで 近づいた」であって、それ以上ではない。
- 0 ではない。 eV で 23 meV、 eV では rms 75 meV・最大 940 meV。 深い O-2p 帯は数百 meV 違う。しかも上に書いたとおり反復残差の 10–20 倍あるので、 分解できてしまっている差である。
- メッシュが 2 つしかない。 自身が収束しているのか、残り 13.8 meV が どちらの誤差なのかは分からない。 が無いので外挿もできない。
- 反復数が 30 と 45 で違い、収束判定ではなく手で止めている。 のほうが 残差が大きい(1.4 対 0.70 meV)ので、13.8 meV のいくらかはそれ由来かもしれない。
- の 0.05 meV 一致は見かけほど強くない。 両 run とも lmf は
nkabc= で、band ステップの も で決めている (efermi.lmfのUsed k point to determine Ef: 16 16 16)。GW メッシュが入るのはsigm経由だけなので、これは BZ サンプリングの独立な検証にはなっていない。 - 温度は 1000 K の 1 点だけ。 「 を上げるほどメッシュ依存が減る」という 主張そのものは、この対では確かめていない( の 3000 K が無い。 §5.6)。
deltaq_scaleは両方 0.1 固定。 offset-Gamma head は別系統の 依存で、 そこは振っていない。
単独の反復の重ね描きは以下。45 反復かかっているが、 近傍は 10 反復あたりでほぼ決まっている。

置いてあるもの:
LiTi2O4/input/ | 3 run 共通の PB / syml と LDA 収束済みの rst |
LiTi2O4/<run>/ctrlg.liti2o4.toml | run ごとの入力 |
LiTi2O4/<run>/results/EFERMI, EFERMI_kbt | と有限温度の Fermi 準位 |
LiTi2O4/<run>/results/finiteT_evidence.txt | 実行ログからの抜粋(下記) |
LiTi2O4/<run>/results/QPU.<N>run | QP エネルギー |
LiTi2O4/n666_T2000/results/sigm.liti2o4 | 収束した自己エネルギー(13 MB)。GW をやり直さずバンドが描ける |
LiTi2O4/n999_T1000/results/sigm.liti2o4 | 同 (30 MB)。45 反復かかっていて一番作り直しにくい |
LiTi2O4/n666_T2000/results/bnd_iterations.tar.gz | 全反復のバンド生データ |
LiTi2O4/plots/ | 上の PDF・メッシュ比較図・ 依存図・deltaq 比較図 |
Fe/ | §5.5 の対照実験(入力 2 つと QPU/QPD だけ) |
1000 K の 2 run は全反復の生データを置いていない( で 17 MB、 で 26 MB になるため)。反復ごとの中身は 5.2 の PDF で見られる。
両側が実際に有効になっていることは、このログで確認できる:
tetrakbt_init: T[K], kbt[Ry], kbt[eV] 2000 0.12667E-01 0.17234E+00
sigmakbt_setup: t_sigmakbt[K]= 2000.0 kbt[Ry]= 0.12667E-01 ef<-EFERMI_kbt= 0.267452
0.277063046836211D+00 ... ! efermi (T=0)
0.267452126929387D+00 ... ! efermi_kbt (有限温度)2 行目の ef<-EFERMI_kbt が、 側が の EFERMI(0.2771 Ry)ではなく 有限温度の EFERMI_kbt(0.2675 Ry)を使っていることを示す。 ここが食い違ったままだと と が別の Fermi 準位を見ることになる。
5.4 側を切ると収束しない (3000 K)
n666_T3000/ と n666_T3000_chi0only/ は、入力上は t_sigmakbt の行が あるかないかだけが違う。 はどちらも 3000 K なので、差は 側 だけから来る。

縦軸は 1 反復あたりのバンドの変化( の eV 以内の rms)。
- 両側 3000 K(青): 反復 15 あたりから 3–5 meV の帯に落ち着き、そのまま動かない
- だけ 3000 K(赤): 反復 20 で 6 meV まで下がったあとまた上がり、 残り 40 反復を 10–50 meV でさまよい続ける(最後の 10 反復で平均 22.8 meV)
さまよっているだけでなく、行き着く先も違う。両側(反復 29)と のみ (反復 60)の差は の eV 以内で rms 198 meV、 eV 以内で rms 552 meV(最大 1.73 eV)。
理由ははっきりしている。 だけ温めると が と違う Fermi 準位を見る。
| が使う | が使う | |
|---|---|---|
n666_T3000_chi0only/ | EFERMI = 0.29428 Ry | EFERMI_kbt = 0.25672 Ry |
n666_T3000/ | EFERMI_kbt = 0.25315 Ry | 同じ |
3000 K では両者が 0.51 eV 離れる。それで自己無撞着ループが閉じない。 これが「 側 — t_sigmakbt」で t_sigmakbt == t_tetrakbt にせよと書いている理由である。
パラパラマンガ: bands_iterations_T3000.pdf(60 ページ、5 MB)。 青が両側、赤破線が のみ。青は途中で止まり、赤は最後まで動き続ける。
この 2 つの run について
実行日が 2 日離れている(2026-06-13 22:46 開始と 06-15 23:48 開始)。どちらも 06-13 09:09 の 2 件の修正(§5.6)より後だが、当時 ~/bin にあったバイナリを今から特定はできない。入力側の差は t_sigmakbt の 行だけで、mixing(--ctrlg:iter.b=0.1)と PB は同一である。
5.5 Fe — 側が効くことの対照実験
Samples/kBT/Fe/ は t_sigmakbt の値以外まったく同じ入力の 2 つの run である。
t_sigmakbt0/ | t_sigmakbt3000/ | |
|---|---|---|
tetrakbt / t_tetrakbt | true / 3000 K | true / 3000 K |
t_sigmakbt | 0.0 | 3000.0 |
(したがって )は両方とも 3000 K で同一なので、差は 側 だけから来る。bcc Fe、nspin=2、GW メッシュ 、QSGW 1 反復。 (実用の設定ではない。実用では t_sigmakbt == t_tetrakbt にすること。)
まず、変わってはいけないものは変わっていない — vxc・SExcore・・LDA 固有値はビット単位で同一である。対照実験として成立している。

QSGW が使う の変化:
| rms | rms | rms | |
|---|---|---|---|
| 0–1 eV | 0.788 eV | 0.680 eV | 1.180 eV |
| 1–3 eV | 0.648 eV | 0.199 eV | 0.784 eV |
| 3–10 eV | 0.428 eV | 0.123 eV | 0.442 eV |
| 10 eV 以上 | 0.094 eV | 0.025 eV | 0.093 eV |
側の有限温度は小さな補正ではない。 近傍で rms 0.7 eV、 最大 1.93 eV 動く。 だけ温めて を に置き去りにするのは、 つじつまが合わないだけでなく数値的にも大きい。これが t_sigmakbt を 作った理由である。
と は個別にはもっと大きく動く(最大 2.40 eV と 3.66 eV)が、 符号が逆で和は 1.93 eV に収まる。交換分裂はほぼ不変(−0.213 → −0.212 eV)で、 効果はほぼスピン共通のシフトである。Fermi 準位自体は EFERMI 0.01496 Ry → EFERMI_kbt 0.03373 Ry と 0.26 eV 動く。
5.6 結果を読むときの注意
ここの結果はすべて 2026-06-15〜06-20 の実行である。
有限温度に固有の注意 — tetrakbt のペア選別
6b83b86e7(2026-06-09、method B′ の導入)から 37e6fbc23(2026-06-13) までのコミットで tetrakbt = true を使った run は、高温で を なめらかに過小評価している。
tetwt5 の上流のペア選別が sharp のままだったためで、落ちる殻の重みの 1000 K で ~1%、3000 K で ~18% にあたる。現在は wocc = 12*kbt で窓を広げ、 fbound/tolpair の厳密上界で刈っている(§7.1)。 これは usetetrakbt の分岐の中の話で、 の経路では sharp が正しいので 影響しない。
有限温度とは関係ない注意 — 実軸極項の OOB ガード
m_sxcf_sc.f90 の実軸極項のビン詰めには、2026-06-13 の 2298e75e9 まで 範囲外ガードが無かった。findloc が 0 を返す(we が freq_r(nw) を超える)と nttp(-1) / wgtiw(:,-1) へ書き込む。温度によらず全ての gwsc が通る経路である。
この修正を作る途中で ixs < 2 というきつすぎる版が一時的に存在し、 それは正当な の実軸極項(静的 のビン)を全部捨てて si_gwsc の QPU を 3.54 eV ずらした。ただしこの版はコミットされていない — リポジトリの歴史は「ガード無し → 正しいガード」であって、ixs < 2 は kt1 の 作業ツリーにだけ 2026-06-11〜06-13 の間存在した。したがってこれは kt1 の runs/ にある当時の run についての注意であって、ecalj の利用者には 関係しない。ここに置いた run はどちらの窓にも入っていない。
依存図(§4)と deltaq 比較図(§4)は QSGW 第 1 反復の別 run 群からのもので、 deltaq_scale が 0.3 である。§5 の 3 つの run(deltaq_scale = 0.1)とは 直接比較できない。
6. 実装の場所
| ファイル | 役割 |
|---|---|
SRC/subroutines/wfacx.f90 | m_wfac の Fermi–Dirac 核(fd_cdf / fd_iav)と sig_fd ゲート |
SRC/subroutines/genallcf_mod.f90 | sigmakbt_setup(EFERMI_kbt の読み込みと FD の有効化) |
SRC/subroutines/m_GWinput.f90 | t_sigmakbt の読み取り |
SRC/subroutines/main_hsfp0.sc.f90 | hs_ef の一点で有効化(両バイナリ) |
set_sigma_fd(.true., kbt) は sxcf のループに入る前に一度だけ呼ばれ、 以後 wfacx / wfacx2 / weavx2 が FD 核を使う。
7. 実装の検証と既知の限界
2026-09-16 にコードを読み直して確認した結果。骨格は正しいが、精度の限界が 1 つ、 整合性の穴が 1 つ、理論の範囲についての注意が 1 つある。
7.1 恒等式は厳密 (確認済み)
lindtet6_kbt (tetwt5.f90:629-673) の method B′ は
を k 積分の内側で使っている。 積分と 積分が交換するので厳密である。 得られる分子は Adler–Wiser の であって ではない — 応答関数として正しいのはこちら。
個別に確認したもの:
- ゲート(tetwt5.f90:651) — a/b が窓の外で平坦になる場合分けを全部たどったが、 どれも の値と一致する
- node zero-skip(tetwt5.f90:667) —
lindtet6が恒等的に 0 になる条件そのもの。knormは全節点で正規化されるので、飛ばしても整合する efermia≠efermibでも (4) は成立する(それぞれの Fermi 準位での になる)EFERMI_kbt(main_heftet.f90:368) — NOS を熱核で畳み込んで二分法。 でテトラヘドロンの に厳密に戻る。 χ0 側もこれを読んでいる(m_tetwt.f90:147)
7.2 限界 — 積分の Gauss-Legendre が 近傍を刻んでいない
gausq(NE=20, -6, 6) の最内節点は 、すなわち 。 の の内側は一切標本化されない。
テトラヘドロン内のバンド幅を として、占有因子の最悪誤差を測ったもの:
| 求積 | 節点 | |||||
|---|---|---|---|---|---|---|
| 現状 GL20 on | 20 | 1.7e-1 | 9.7e-2 | 2.3e-2 | 1.3e-2 | 6.8e-3 |
| 4 区間 × GL5 | 20 | 2.9e-2 | 1.6e-2 | 4.8e-3 | 2.6e-3 | 1.3e-3 |
| 6 区間 × GL4 | 24 | 2.9e-2 | 1.1e-2 | 2.8e-3 | 1.7e-3 | 9.6e-4 |
| 2 区間 × GL10 | 20 | 5.5e-2 | 1.9e-2 | 1.1e-2 | 3.8e-3 | 1.9e-3 |
分散の大きいバンドでは無害だが、平坦バンド・バンド端・van Hove 領域が に あると占有因子が 0.1 以上ずれる。LiTi₂O₄ の Ti-3d は で テトラヘドロン内の幅が 0.2–0.5 eV ≈ 1–3 なので、1e-2 程度は乗っている見込み。
節点を増やしても でしか落ちない(NE=40 → 9e-3、NE=80 → 3e-3)。 同じ 20 点のまま 4 区間に切るだけで最悪誤差が 6 倍良くなり、 近傍の 分解能も と一桁上がる。節点数より区間の切り方が効く。 本筋は被積分関数の折れ点(= 8 個の角エネルギー)で区間を切ること。未修正。
7.3 不整合 — 側の状態窓が esmr のまま
sig_fd を on にすると重みの核は幅 sig_kbt の Fermi–Dirac になるが、 状態範囲を決める窓は ddw*esmr(ddw=10)のままである (m_sxcf_sc.f90:457-458、m_sxcf_sc_count.f90:158, 262-263)。 しかも sxcf_scz_count は sigmakbt_setup より前に呼ばれるので (main_hsfp0.sc.f90:143 vs :164)、窓の中心は の EFERMI、 重みの中心は EFERMI_kbt になる(本サンプルで 0.0096 Ry ずれる)。
切り捨てられる占有は :
| 窓の幅 | 切り捨て | |
|---|---|---|
本サンプル (2000 K, esmr=0.01) | 3.7e-4 ✓ | |
5000 K, esmr=0.01 | 4% | |
2000 K, esmr=0.002 | 17% |
いまの既定値では無害だが、警告なしに静かに悪化する。 本頁が「有限温度は t_sigmakbt が担う」と書いている以上 esmr を下げる人は出るので、 当面 esmr は既定(0.01 Ry)のままにし、t_sigmakbt を 3000 K より大きく 取らないこと。 直すなら sig_fd のとき窓を max(ddw*esmr, 12*sig_kbt) にし、 sigmakbt_setup を count の前に移す(または count に ef_kbt を渡す)。未修正。
7.4 範囲 — が要るのは「差」ではなく「和」
を有限温度化しただけでは は揃わない。理由は一行で書ける。
中間状態の粒子‑正孔対を 、 として、
| 重み | |
|---|---|
| 対を作る | |
| すでにある対を壊す |
が持っているのはこの差 だが、 の中間状態の重みは和である(どちらも同じ分母を持つ)。 いまの実装は から差を取ってきて外側の を掛けるので、 の分が落ちる。 詳細釣り合い から
なので、これは普通 Bose 因子と呼ばれるものである。ただし出どころは Fermi の 占有数であって、ボソンの熱浴を外から入れたわけではない。導出は §8 を見よ。物理は単純で、 では 粒子‑正孔対がすでに熱励起されていて電子はそれを吸収できる、というだけのこと。
大きさ。 は で指数的に小さいので、効くのは の粒子‑正孔連続体だけである。金属で とすると
2000 K で eV²、 eV なら数 meV–数十 meV。
これは欠陥ではなく定義である。 ecalj のスキームは「温度 の占有数で作る 有効一体ハミルトニアン」であって、Mermin の有限温度 DFT が Fermi 占有数だけで 閉じているのと同じ立場である。QSGW は動的な ではなく静的エルミートな 一体ハミルトニアンを作るものなので、落ちているのが主に詳細釣り合い(= 寿命)側で あることもあって、影響は一発 GW のスペクトル関数を出す場合よりずっと軽い。 平衡の多体摂動論の が欲しいなら (5) が要る、というだけのことである。
7.5 いまは踏まないが直すべき箇所
- m_sxcf_sc.f90:237 の
sxs_ekc(is1+nctot)はsxs_ekc(is1)のはず。 2024-07-25 の245ef9f3f(nvfortran 24.1 回避の書き換え)でコメントアウトされた 元コードはekc(it)だった。現状 mode 1/2 はnctot=0(hgw のログで確認)、 mode 3 はns2 ≤ nt0p = nctotで else 分岐に入らないため実害なし。nctot>0で価電子交換を回すと壊れる。 - main_hsfp0.sc.f90:166 の
if(sig_fd) ef = ef_kbtがixc==3(CoreEx)にも効き、 直前にLOWESTEVAL-1d-3に設定したefを上書きする。 core ループがwtff=1固定なのでいまは影響しない。
8. 付録 — 虚時間を使わない定式化
がどこから来るのかは、松原形式を経由しなくてもはっきりする。むしろ そちらのほうがすべてが Fermi の占有数から出ることが見えてよい。 教科書では閉時間径路と平衡の話が分かれて書かれていることが多いので、 ここで通して書いておく。
以下 、エネルギーは から測る。 、。
8.1 の議論がなぜそのまま使えないか
の実時間摂動論は Gell-Mann–Low に依っている。断熱的に相互作用を入れると 、つまり 基底状態は位相を除いて自分自身に戻るので、 側を 側と 取り替えられて
と片道の時間順序積で書ける。
ではこれが使えない。 は固有状態ではなく、 断熱的に発展させても重みが非相互作用系のまま( であって ではない)なので、 側を 側と同一視できない。 (7) の分母に相当するものが書けない、というのが問題の本質である。
8.2 閉時間径路 — 行って戻る
そこで の状態を一切使わない。 と 往復する径路 を取れば、演算子を挟まない限り
が恒等的に成り立つ。分母が要らない。これが閉時間径路(Keldysh)の全部である。
径路順序積 (往路の後に復路が来る順序)を使って
場は の相互作用表示。 ではなく実時間で、 積が 積になっただけ である。 をどちらの枝に置くかで 4 つの成分が出るが、独立なのは 2 つで、 以下では
を使う。
8.3 Wick の定理 — 入力は だけ
は について Gauss 的なので Wick の定理がそのまま成立し、 縮約は自由な径路伝播関数になる。エネルギー の準位について
温度が入るのはここだけで、入るのは Fermi 分布だけである。 Bose 分布はこの段階でどこにも無い。
8.4 GW を径路上で書く
径路引数のまま、形は と同じ:
実時間成分に落とすには Langreth 則を使う。同じ引数の積 に対して
がひっくり返るのが要点である。
8.5 の 成分 — ここで が出る
(12)(13) と (11) から、時間並進対称性を使って
が対を作る過程、 がすでにある対を壊す過程である。 では 。
スペクトル関数は差のほうで、
これが のコードが計算している量である。一方 (14) の比は を代入するだけで
となり、 を使えば
はここで初めて現れる。仮定ではなく (11) の Fermi 分布からの帰結である。 ボソンの熱浴を外から入れた覚えはないのに Bose 分布が出るのは、 がボソン的な相関関数だから((16) がボソンの KMS 条件そのもの)。
RPA の衣を着せても比は変わらない。 で だから、 (16) はそのまま に受け継がれる。
8.6 の 成分
(12)(13) より 、 振動数では
(11) を入れ、、 、 とすると、 から
の符号で分けて を使えば、 見慣れた放出因子 と吸収因子 になる。実部は Kramers–Kronig で決まる。
の確認: 、、。 の準粒子について、 が占有だと (Pauli 阻止)、 が空だと で寄与する。従来の GW に戻る。
8.7 いまの実装が保っているもの・落としているもの
ecalj が計算しているのは 、すなわち (15) の差である。 を組むときに外側の だけを有限温度にし、(19) の は入れていない。 つまり
これは の詳細釣り合い
を破る((18) と (16) から (20) は両方を残したときにのみ成り立つ)。 したがって得られる は、厳密にはどんな温度 の平衡状態のものでもない。
一方でこれは QSGW では軽い。QSGW が作るのは静的エルミートな一体 ハミルトニアンで、 は最初から捨てているからである。 (20) が壊れているというのは主に寿命側の話で、QSGW が使う への影響は (6) の にとどまる。
8.8 初期相関についての注意
8.2 では (非相互作用の熱平衡)から断熱的に相互作用を入れると書いたが、 これは初期相関を落としている。厳密には径路に虚時間の縦枝 を足した Kadanoff–Baym 径路を使い、そこに初期相関を 持たせる(Danielewicz)。平衡かつ断熱的な場合には縦枝が実時間部分から 分離し、結果は松原形式と一致する。
ここで が顔を出すのは初期条件を指定するためであって、 摂動展開そのものは実時間のままである。 が出るかどうかとは関係がない — それは 8.5 で見たとおり (11) の Fermi 分布だけから出る。
9. これから詰めるべき課題 (2026-09-17)
アップロード直前テストで出てきたことも含め、未解決のものを並べる。 §7 の 7.2–7.5 は個別の修正点、ここは「何を確かめないと使い物にならないか」。
- 側の温度は 300 K でも金属で 0.1 eV 動く。 Fe (TestInstall/fe_gwsc, GW メッシュ ) を T=0 と 300 K で 1 反復比べると、
tetrakbt(χ₀) だけなら の変化は ≤1 meV だが、t_sigmakbt = 300も入れると max 0.12 eV、平均 0.04 eV (up)。 から 以内の少数の状態が分数占有に なり、その状態自身の SEx / SEc が eV 級で動いて打ち消した残り。粗いメッシュで 「どの状態が を跨ぐか」に敏感なので、メッシュ収束 () とesmrの Gauss 拡がりとの関係を数値で押さえないと、300 K の既定として勧められない。 (だから gwinit のテンプレは 2026-09-17 に見え消しに戻した。) - 側の状態窓
ddw*esmr(§7.3) — 上の 1 と同根。esmrを既定のままt_sigmakbtを上げたときに何が窓を決めているかを整理し、sxcf_scz_countがsigmakbt_setupより先に走る順序も直す。 - 積分の GL20 が 近傍を刻まない (§7.2) — 4 パネル × GL5 で誤差 1.7e-1 → 2.9e-2 になることは確認済み。実装して の反復収束に効くかを見る。
- 絶縁体の
EFERMI_kbt。 heftet は絶縁体でEFERMI_kbtを書いていなかった (2026-09-17 修正、57edde869)。いまはギャップ内で解が区間になれば区間の中央を返すが、 物理的には DOS の非対称で決まる真性 を返すべきで、fermi_kbt_tetraの窓 () と GL カーネルの届く幅 () の 関係で結果が変わる。GaAs 300 K で 0.15345 Ry (T=0 中央 0.15221) — 妥当だが根拠は薄い。 EFERMIとEFERMI_kbtの使い分け。 側はt_sigmakbt>0のときだけEFERMI_kbtを読む。3000 K の LiTi2O4 で両者は 0.51 eV 離れており (§5.4)、 χ₀ と が別の を見る組合せ (tetrakbtのみ) は「何を計算しているか」が 曖昧。片方だけの指定は警告でなく abort にするか、設計として決める。- の Bose 項 (§7.4, §8.7)。 の落とし。 3000 K で効くかを LiTi2O4 で見積もる。
- 回帰テストが無い。
testecaljに有限温度のターゲットが一つも無く、上の 1 の 数字も手作業。Fe の 1 反復 (T=0 / 300 K χ₀のみ / 300 K χ₀+Σ) をSamples/TestInstallの軽いターゲットにして、少なくとも落ちないこと・数字が 変わらないことを固定する。 - 3000 K の LiTi2O4 (kt1) は 2 反復で止めてある (
~/LiTi2O4/kbt/runs/n999_dq0.1_T3000K_sigmakbt3000,ITER0=3 NITER=30 ./run999.shで再開)。走らせる前にctrlg_absorb.py liti2o4で 旧PB.liti2o4.tomlを取り込むこと。§5.3 の「メッシュ依存が消えている」は 1000 K の話で、3000 K では未確認。 - 潜在バグ (§7.5) —
sxs_ekc(is1+nctot)、ixc==3でのef上書き。
10. gwkbt-dev について
tetrakbt も t_sigmakbt も、本頁の内容はすべて main に入っている。 ブランチを使い分ける必要はない。
別系統として gwkbt-dev がある。有限温度 を別の設計 (gwkbt Stage A/B)で作りかけたもので、production 非対応。 Stage B の entry2 静的ビン登録が死んでいた件はブランチ上で修正済みだが、 設計レビューと gwkbt_test_plasmonpole.py での再検証が要る。 本頁の t_sigmakbt とは別物なので混同しないこと。
関連
- QSGW の計算 (gwsc)
- サンプル
ecalj/Samples/kBT/(上記 §5) ctrlg.<sname>.tomlの[gw]セクション- 一発 GW の QP エネルギー、任意 k 線上の評価、 と実軸積分の診断は
ecalj/FiniteT_and_QPE_HOWTO.mdを見よ(本頁はその §1 を発展させたもの)