Skip to content

MLO — 最大局在化などに代わる自動モデル化法 ​

ecalj branch mlo3 / 2026-09-16 17:02 JST

MLO (MTO-based Localized Orbitals) は、最大局在化 Wannier 関数 (MLWF) の代わりに使う局在基底である。

ecalj の模型化は 2026-10-02 から MLO だけである。 最大局在化 Wannier 関数の経路(genMLWFx、hmaxloc、wanplot、Wannier のマグノン、 AHC)は外した。模型のハミルトニアン、v・W・cRPA(job_mloW)、広がり(mlo_spread.py)、マグノン(job_mlo_magnon)は、どれも MLO の基底で計算する。 外す前の版は git のタグ last-wannier にある。下の「Wannier」の記述は、比べるための過去の記録である(§6 の表 M7 など)。

MLWF は「広がりを最小にする」という条件でユニタリ変換を非線形最適化して求める。 強力だが、初期推定 (projection) を人が与える必要があり、収束が初期値に依存し、 エンタングルした帯では disentanglement の窓をさらに手で決めることになる。 うまくいくかどうかが人の手加減に掛かっているのが難点である。

MLO は最適化をしない。PMT 基底の恒等分解を出発点に、 どの チャネルで模型を作るか (mlo_lm) を与えれば、重み が 式一本で決まる(§1)。反復も初期推定も無く、結果は一意で、物質ごとの調整 パラメータはゼロである。局在性は最適化の結果ではなく、MTO を種にしている ことから自然に出る。

その mlo_lm も原理的には自動化できる。規則は「目的の窓にバンドを出して いるチャネルだけ取る」の一つで、どの原子のどの が窓に重みを持つかは 計算から出る量だからである(§1)。既定は gwinit が書き(§1、§9 の基準 1・2)、窓の重みで自動に選ぶ所はまだ無いが、 調整ではなく読み取れば決まる類のものである。

使い方は大きく 2 つに分かれ、測り方も違う:

  1. ミニマム模型 — を含む領域の第一原理バンドを全部再現する。 半導体・金属・Al₂O₃:Cr(ギャップ中の Cr d + バンド端)はすべてこれ(§2)。
  2. 部分バンドを取る模型 — d だけ、4f だけを取り出す。MLWF で言えば projection で狙い撃ちしていた使い方に当たる(§3)。

FeMgO は真空層を持つスラブで空格子球が要る。§5 に独立の節を立てた。

§1〜§8 の数値は Samples/MLOsamples/ の 18 サンプルの実測値で(§9 は Samples/MATERIALS の 65 物質)、 全サンプルが mlo_method = 4 の既定値に統一してある(2026-09-16)。§2・§3・§7 の数値と本数はそのときのもので、 2026-10-01 の半内殻の局所軌道の規則(表 M1)より前である(例えば GaAs は 18 本、今は Ga 3d が加わって 23 本。§4 の表 M2 は今の規則)。 図は ecalj/Samples/MLOsamples/plots/ にあり、 SRC/exec/mlo_bandplot.py <サンプルdir> で再生成できる(本頁の図はその写し)。 損失の数値は SRC/exec/mlo_losscheck.py <サンプルdir>。

§1最終形式と既定値。読むならここだけでよい
§2ミニマム模型窓の中のバンドを全部取る。11 系の実測とバンドプロット
§3部分バンドを取る模型d だけ / 4f だけ。窓型の損失は使えない
§4SOCjob_mlo_soc。あとから摂動として載せる
§5FeMgO真空スラブに空格子球を置く
§6有効相互作用 job_mloW。模型の にあたる量
§7誤差の測り方一方向では決まらない
§8残る問題
§9模型の選び方基準 1・2・3 と現在のベストチョイス。Samples/MATERIALS の 65 物質
MD/mlo_backup.md経緯と作業記録(backup)

1. 最終形 ​

MLO は PMT 基底の恒等分解から、選んだ MTO 部分空間の固有状態 を介して作る:

ここで を PMT 固有状態と MTO 固有状態の重なりとする:

とすると式 (1) の和は MTO 部分空間への射影演算子そのものになり、 に戻ってしまう。そこで重み を掛ける:

この をどう決めるかが問題のすべてで、課題 1 の答えは式 (4) である。

は大域の伝導帯下端(金属では )。 パラメータは と の 2 つだけ(単位はすべて eV)で、物質ごとに変える調整は無い。

役割がはっきり違う。 は「どこまで合わせたいか」の宣言であって フィッティングパラメータではない。バンド端から上に だけの範囲を要求する、 という意味なので、評価する窓の上端と同じ値にする(既定はどちらも 2 eV)。 が唯一の調整ノブで、残差が大きいときに動かすのはこちらである(§7)。

mlo_method = 4 として実装済み。 大域の伝導帯端は新しく計算する必要はなく、 lmf が SCF の BZ 積分で既に求めて efermi.lmf に書いている (evtop = VBM、ecbot = CBM。金属では のすぐ上の準位になるので、 一つの量で金属と絶縁体の両方を覆う)。 m_readqplist がこれを読み、原点のずれに強いよう差分 として eferm に足している (qplist.dat は零点に estaticav を使うことがあるため)。 efermi.lmf が無ければ に落ちる。

物質ごとに書く調整パラメータはゼロになった。mlo_emax を 0 / 5 / 7 / auto と 使い分ける必要が消えている。mlo_method = 4 は既定なので、書く必要すらない。

mlo_lm — 原理的には自動化できる ​

mlo_lm([mlo] 内、どの lm チャネルで MTO 部分空間を作るか。2026-09-17 までは [blocks] の mlo_lm という名前で、古い置き場・名前のままでも読める)は物質ごとに 書く。調整ノブではなく模型の定義そのものであり、method に関係なく MLO には 常に必要なものである。

gwinit が書き出す既定(2026-09-25 から。それ以前は全行 ! でコメントアウトされていた。f と mlo_lm2 は 2026-10-01 から):

原子既定の lm
Z ≤ 10 (H..Ne)1 2 3 4 (s, p)
Z ≥ 11 (Na 以降)1 2 3 4 5 6 7 8 9 (s, p, d)
4f が価電子の原子(La〜Lu、Hf 以降で基底の f が 4f のもの)1 2 … 16 (s, p, d, f)

HfO₂ は s,p,d だけだと VBM が 0.057 eV ずれ、f を足すと 0.000 eV になる(2026-10-01)。

mlo_lm2(EH2 のシード、§9 の基準 2)は、陽イオン(N・O・F・P・S・Cl・As・Se・Br・Sb・Te・I 以外)のうち遷移金属 Sc–Cu・Y–Ag・La–Au と Ac 以降を除いた原子に、s,p の行を ! 付きで書く(! 1 Ga 1 2 3 4)。! の行は読まれないので、何もしなければ基準 1、! を外せば基準 2。 Zn・Cd・Hg は行を書く(ZnTe 0.038 → 0.004 eV)。! を外したあとは job_mlo を回し直すだけでよい(EH2 はもともと基底にある)。

酸素の d は分極関数であって価電子軌道ではないので既定から外してある。 そこに MLO を立ててもほぼ零空間の方向が増えるだけである。

この既定は「価電子を全部取る」模型で、MLO-gwsc(自己エネルギーを MLO 表現で 内挿する QSGW) のように部分空間の広さが精度に効く用途に合わせてある。そのまま使える。

最小模型を作りたいとき(MLO 本来の用途、バンドを少数軌道で再現する)は、 これでは広すぎる。目的の窓にバンドを出しているチャネルだけに絞ること。 実際のサンプルはこうなっている:

系mlo_lm
Si, GaAs全原子 1–9(sp³d⁵)
NiONi は 5–9 (d のみ)、O は 2–4 (p のみ)
SrTiO₃Sr は空、Ti は 5–9、O は 2–4
RuO₂Ru は 5–9、O は 2–4
Al₂O₃:CrAl は 1–9、Cr は 5–9、O は 2–4

最小模型の規則は一つで、目的の窓にバンドを出しているチャネルだけ取る。酸化物なら O 2p と遷移金属 3d がそれで、陽イオンの s,p や O の s,d は窓の外にあるから 取らない。SrTiO₃ の Sr が空なのはそのためである。sp 半導体では価電子帯も 伝導帯も sp³d⁵ が担うので全部取る。

番号は job_band が PROCAR に書く実調和関数の順で、殻ごとに連番になっている:

lm内訳
s1s
p2, 3, 4py, pz, px
d5, 6, 7, 8, 9dxy, dyz, dz², dxz, dx²−y²
f10 – 16f−3 … f3

殻の一部だけを取ることもできる。 たとえば Cu の t2g だけなら 5 6 8 (dxy, dyz, dxz) で、実際に 3 軌道の模型になる。

(原子, lm) あたり MLO は原則 1 本まで(例外は §9 の基準 2: 陽イオンの s,p の EH2)

mlo_lm2(第 2 動径関数 EH2) を、mlo_lm に既に書いた lm へ足してはいけない。 MLO は固定した MTO 種をバンド多様体へ射影したものなので、窓の中にその性格の バンドが 1 本しか無ければ、種を 2 本与えても射影で同じ関数に潰れる。 NiO で Ni の d に EH2 を足したところ、MLO の重なり行列 の条件数が に悪化し、伝導帯が 1 eV 動いた (2026-09-24、MD/research_kotani_log.md)。 本当に 2 本要るなら、窓を広げて第 2 のバンドを窓の中に入れるしかない。

例外は、窓の中に同じ性格の第 2 のバンドが実際にあるとき。空隙の大きい構造(閃亜鉛鉱の MgS・MgSe・MgTe・CdTe・ZnTe、 wurtzite の AlN)では、伝導帯の底が隙間に広がった s,p 的な状態で、陽イオンの s,p に EH2 をシードとして足すと(mlo_lm2、§9 の基準 2)合う。 SiO₂ は EH2 では足りず、空格子球が要る(基準 3)。遷移金属・4f の原子に足すと壊れる: Cu・Ni は特定の k で崩れ、EuO は Hreduction: PMT completeness loss too large で止まる(§9)。足した後は必ずバンドを比べる(mlo_bandcheck.py)。

2026-09-17 以前のバイナリでは部分殻が効かない

m_HamPMT.f90 の選別ループに、殻の先頭の lm(1 / 2 / 5 / 10)が書いてあれば 殻全体、無ければ殻全体なしとして、それ以外の番号を無視するバグがあった (lold を更新しておらず、 が常に に張り付いていた)。 完全殻を先頭から並べる普通の書き方では影響しないが、部分殻は選べず、 先頭を欠いた並び(例: 11 12 13 14 15 16)は黙って殻ごと落ちていた。 FeMgO の mlo_lm に長く残っていた Fe/Mg の f の指定がまさにそれで、 f は基底にあったのに模型には一度も入っていなかった。

この判断は原理的には自動化できる。 「窓の中のバンドに、どの原子の どの チャネルが重みを持っているか」は計算から出る量で、lmf --mkprocar が出す射影重み(fat band に使うもの)がまさにそれだからである。閾値を一つ 決めて拾えばよい。ただし現状そこは実装されていない。 既定は gwinit が原子番号から書く(上の表)。

手で書かざるを得ないのは、そこから更に狙って絞るときである:

  • d だけ、4f だけを取り出す(§3)。窓に他のバンドがあっても敢えて捨てる
  • 真空層を持つスラブに空格子球を足す(§5)。原子の無い場所に基底を置くので 構造からは出てこない

入力キー ​

gwinit が生成する ctrlg.<sname>.toml の [mlo] セクションに、既定値が 陽に書き出される(2026-09-17 までは [gw] の中にあった。古い置き場のままでも 読めるが、一行の案内が出る):

toml
[mlo]
mlo_method = 4      # theta = sigma((eps - ecut_j)/mlo_w),
                    #   ecut_j = max(CBM + mlo_delta, eps^MTO_j)
mlo_delta  = 2.0    # (eV) how far above the band edge (EF in metals) the
                    #   model must be accurate. A statement of what you want,
                    #   not a fitting parameter: match it to your target window.
mlo_w      = 2.0    # (eV) width of the fall-off above that floor. THIS is the
                    #   knob to turn if the residual is too large. Measured
                    #   optima: semiconductors ~2, Fe/Cu-like metals ~11.

が mlo_delta、 が mlo_w で、単位はすべて eV (mlo_emax が元から eV なので mlo_* が揃う)。模型のチャネルを決める mlo_lm も 同じ [mlo] にある(2026-10-02 までは Wannier 関数の hmaxloc もこれを読んだ)。

MLO を作る k メッシュは [mlo] mlo_nkabc で必ず書く(2026-09-17、既定なし):

toml
mlo_nkabc = [10, 10, 10]   # k mesh the MLO Hamiltonian is built on; required

lmf --writeham --mlo がこのメッシュの全 BZ 点で PMT ハミルトニアンを書き、mlo が そこから実空間表現を作る。無いと lmf はその場で止まる(SCF の [bz] nkabc を黙って 流用しない — 模型を何の上に作ったかは入力に書いてあるべきなので)。効くのは --writeham --mlo のパスだけで、SCF・バンド図は [bz] nkabc、 は [gw] n1n2n3 のまま。 gwinit は [bz] nkabc と同じ値を書き出すので、通常はそのままでよい。

射影子から外す最下位の PMT 状態(深い半芯 LO(帯の上端が eV より下)、O 2s のような模型に乗らない低い帯)の数 nskip は自動で決まる: 各 k で「模型部分空間への重みが 1/2 未満の最下位状態の数」を 数え、その全 k での最小値を全 k に使う(2026-09-18)。k ごとに決めると、Cu の d 模型の ように s 帯が最下位になる k とならない k で射影子が入れ替わり、バンドに折れが出る。 手動指定 mlo_nskip は廃止した。

mlo_lm で指定した (原子, l) に半芯の局所軌道(pz、例 Ga 3d の pz = 3.9)があるとき、それを模型のシードにするかも自動で決まる (§9 の基準 1)。その LO の帯(同じ種類の原子の LO をまとめた部分空間への射影重みが 1/2 を超える占有状態)の最高エネルギー で決める:

LO の扱い例lmlo の表示
−8 eV より上(窓の中。LO が価電子の殻そのもの)EH 関数と入れ替えるNiO の Ni 3d(+0.7 eV)、ZnO〜ZnTe の Zn 3d(−2.7〜−6.5 eV)IN THE WINDOW: LO replaces the EH function
−17〜−8 eV(窓の下の半内殻)EH 関数に加えるGaN の Ga 3d(−11.8)、GaAs の Ga 3d(−14.8)、EuO の Eu 5p(−13.5)、La₂CuO₄ の La 5p(−13.9)SHALLOW: LO added to the model
−17 eV より下外す(その状態は nskip で射影子から外す)deep: LO skipped

−8 eV は評価の窓(§9 の式 (9))の下端にそろえてある。窓の中の LO の帯に LO と EH の 2 本のシードを付けると、その帯だけを取る模型 (§3 の部分バンドの模型。Samples/MLOsamples/NiO666lda の Ni d + O p)では、nskip の切れ目が O 2s の帯の中を通って壊れる。 窓の下の半内殻に EH だけを残すと(2026-10-01 以前)、O・N の 2p と混ざる半内殻が模型から抜けて 2p の帯が 0.05〜0.6 eV ずれる(§9)。 価電子殻より上の拡張 LO(pz > pnu)は対象外。規則によらずに LO を入れたいときは mlo_lm3 にその lm を書く(1 Ga 5 6 7 8 9 の形。 その原子は書いたとおりで、EH も mlo_lm のとおり残る)。

表 M1. 浅い局所軌道の扱いの変遷

期間閾値浅い LO の扱い帯の見方
2026-09-18 〜 2026-10-01 eVEH と入れ替える1 原子の LO の部分空間
2026-10-01 15:0x 〜 19:2x eVEH に加える同じ種類の原子の LO をまとめた部分空間
2026-10-01 19:2x 〜 eV と eV−8 eV より上は入れ替え、−17〜−8 eV は加える同じ種類の原子の LO をまとめた部分空間

局所軌道は入力に書かない(自動)。入れるかどうかの判定に要るのは SCF で計算したバンドの位置で、gwinit(SCF の前に回る)には 決められないからである。そのかわり、入力を見ても局所軌道が模型に入ったかは分からないので、lmlo の local orbital atom ... の行(上の表の表示)で確かめる。mlo_lm3 に書いた原子は自動の判定をせず、書いたとおりに LO をシードにする。 MLO-QSGW の連鎖(HamRsMLO で模型を凍結する)では、連鎖の最初の判定がそのまま続く。

模型のシードが何で決まるかのまとめ:

  • mlo_lm: EH(第 1 の smooth Hankel 関数)。gwinit が書く(上の表)
  • mlo_lm2: EH2(第 2 の smooth Hankel 関数)。gwinit が陽イオンの s,p の行を ! 付きで書く。何もしなければ基準 1、! を外せば基準 2(§9)
  • 半内殻の局所軌道([[spec]] の pz): 自動(上の規則)。上書きは mlo_lm3
  • 空格子球: [[site]]・[[spec]] に置き、mlo_lm に行を書く(基準 3、§5・§9)。基底が変わるので lmfa から回し直す

Cu の d 模型で 10³ → 16³ にすると d 帯の rms は 98 → 90 meV (MD/mlo_notes/mlo_nskip_cu_problem.md)。

通常はこのまま使える。 Samples/MLOsamples の 18 サンプルは全部この既定値 ( eV)で、物質ごとに変えていない(§2)。3 つとも既定値なので、 そもそも書かなくてよい。

ただし には系による調整の余地がある。 残差が大きいときに動かすのは こちらで、実測した最適値は半導体で eV、Fe・Cu のような単原子遷移金属で eV と 6 倍違う(§7)。Fe では を 11 eV にすると窓内誤差が 19.8 → 9.7 meV と半減する(§2)。 は動かさない — あれは 「バンド端から上にどこまで合わせたいか」の宣言であって、合わせ込む対象ではない。


2. ミニマム模型 — を含む領域を再現する ​

MLO の使い方は大きく 2 つに分かれ、測り方も評価の仕方も違う。

何を取るか例測り方
ミニマム模型(本節)窓の中の第一原理バンドを全部Si, GaAs, Fe, NiO, Al₂O₃:Cr, FeMgO …窓型の損失(§7)
部分バンド模型(§3)特定のチャネルだけCu の d のみ、4f のみ準位の重なり

本節は前者。窓の中に第一原理バンドが 本あれば模型も 本持ち、 両者がどれだけ重なるかを測る。物質ごとの調整は無い — mlo_lm は要るが、 これは調整ではなく模型の定義で、窓に重みを持つチャネルを取るだけである(§1)。

実測 — 既定値のまま ​

mlo_method = 4 の既定値( eV、 eV)での実測。 MLOsamples の 18 サンプル全部がこの設定に統一してある(2026-09-16)。 物質ごとの入力は mlo_lm だけで、mlo_emax はどのサンプルからも消えた。

表の見出しは次の 5 つ(定義は §7):

見出し量単位範囲
窓ΔE rmsmeVVBM−2 〜 CBM+2 eV(金属は E_F±2 eV)
占有ΔE rmsmeVE_F−12 〜 E_F−2 eV
分散経路方向の勾配の相対誤差無次元窓と同じ
ギャップバンドギャップ誤差(符号付き)meV絶縁体のみ
m*比m*(MLO) / m*(DFT)。1.00 が一致(誤差ではなく比)無次元絶縁体のみ

誤差の一覧 ​

系窓 (meV)占有 (meV)分散ギャップ (meV)m*比
FeMgO (76)2.50.50.006——
Al₂O₃:Cr (50)7.22.20.004+11.04
FeCo (18)8.34.70.021——
GaAs (18)8.51.90.008+60.82
SrTiO₃ (14)8.95.50.009+91.03
RuO₂ (22)9.99.40.048——
NiO (16)15.418.50.071+81.10
C (spd, 18)16.64.80.013−11.05
Fe (spd, 9)19.812.90.057——
Si (18)20.09.70.019+381.41
C.sp (sp のみ, 8)26.78.00.021−390.65
中央値9.95.50.019

最良は FeMgO の 2.5 meV で、真空層に空格子球を入れた 76 軌道模型(§5)。 最悪は C.sp の 26.7 meV(sp だけ 8 軌道)と Si の 。 どちらも を動かせば下がる(§7)。

  • Si は と で別物(窓 20.0 → 7.1 meV、ギャップ +38 → +3 meV、 1.41 → 1.03)。 の値は補間の雑音を含む。サンプルは のまま。
  • NiO の占有側 18.5 meV は窓内 15.4 meV より大きい。窓だけ見ていたら 見落とす種類の誤差である。

代表図 — Si と Fe ​

灰線が第一原理 PMT バンド、赤 × が MLO 模型。どちらも 基準。 全 38 枚(18 系 × 窓/全域 + Fe の 比較 2 枚)は ecalj/Samples/MLOsamples/plots/ にあり、SRC/exec/mlo_bandplot.py <サンプルdir> で再生成できる。

Si

Si(QSGW、18 MTO = 2 原子 × sp³d⁵)。価電子帯から伝導帯 +5 eV まで 赤 × が灰線に完全に乗る。


図に「目的窓」の帯は描いていない。 が決めるのは の 上側の床だけで、下限は評価の都合にすぎない。しかも第 2 引数の が軌道ごとに違うので、一本の水平線では描けない。

Fe

Fe(DFT、9 MTO = sp³d⁵)。majority と minority を並べた。両スピンとも同等に乗る。 FeCo も同様、NiO は両スピン同値で、磁性系でスピンによる偏りは出ていない。


は効く — Fe の実例 ​

Fe は既定の eV では合わせきれない。 だけを 11 eV に上げると:

Fe窓 (meV)占有 (meV)分散
(既定)19.8 meV12.9 meV0.057
9.7 meV9.0 meV0.024

窓内の誤差が半分以下になる。ただしバンド図を並べても違いは見えない — 差は meV の桁で、図の縦軸では潰れてしまう。どこで効いているかは 準位ごとの誤差を第一原理側のエネルギーで分けて見る必要がある:

Fe w 依存

効いているのは より上だけである。〜 eV で 2〜3 倍改善する一方、 より下は勝ったり負けたりで、minority の eV や eV では のほうが良い。これは床 が の上にあり、 がその上での落ち方を決めているのだから当然である。 「 を上げれば良くなる」ではなく「 は床より上の当たり方を決める」 と読むべきで、 を別に立てているのもこのためである(§7)。


高エネルギー側 — トランケーションは滑らか ​

MLO 模型は MTO 部分空間の次元しかバンドを持たないので、どこかで第一原理バンドから離れる。 その離れ方がリンギングになっていないかを見るため、MLO が伸びきるところまで描いた (<系>_full.png)。実測した上限:

系 (MTO 数)MLO が伸びる上限 (eV)第一原理の上限 (eV)
NiO (16)1.6 eV141.8 eV
RuO₂ (22)5.5 eV146.9 eV
SrTiO₃ (14)8.4 eV153.6 eV
C.sp (sp のみ, 8)16.8 eV124.5 eV
FeMgO (76)29.7 eV152.0 eV
Si (18)28.8 eV108.3 eV
GaAs (18)31.6 eV116.5 eV
FeCo (18)31.8 eV142.6 eV
Al₂O₃:Cr (50)32.0 eV141.1 eV
Fe (spd, 9)32.8 eV124.6 eV
C (spd, 18)86.1 eV151.4 eV

軌道数と上限は比例しない。 NiO は 16 軌道で 1.6 eV までしか伸びず、 Fe は 9 軌道で 32.8 eV まで伸びる。どのチャネルを取るかで決まる (NiO は Ni d と O p だけ、Fe は分散の大きい sp を含む)。 目的の窓( 近傍)に影響する話ではない。

床の上でも MLO バンドは連続な曲線で、折れや振動は見えない。数値でも確かめた — バンドに沿った の中央値(eV、括弧内は第一原理の同じ量):

系 / の範囲 (eV)−10..00..33..88..1515..2525..40
Si7.9 (8.1)12.5 (9.2)15.9 (14.2)24.2 (21.8)30.3 (45.1)20.4 (45.9)
Fe12.4 (10.2)45.8 (20.4)37.8 (24.5)41.3 (36.3)94.2 (54.8)216.3 (79.4)
GaAs7.6 (6.5)15.7 (11.4)13.8 (13.4)24.4 (20.7)46.2 (37.4)36.4 (59.5)
Al₂O₃:Cr207.6 (138.2)—62.8 (42.1)367.2 (216.7)307.7 (240.6)338.5 (586.1)

Si・GaAs・Al₂O₃:Cr は高エネルギー側で MLO の曲率が第一原理を下回る (Si は 20 対 46)。リンギングどころか元のバンドより滑らかである。 Fe だけが 25 eV 超で 216 対 79 と 2.7 倍になる。spd 9 軌道しかない模型が 33 eV まで引き伸ばされている領域で、模型の容量を超えている。

Si full

Si(QSGW)— 床(+3 eV)まで完全に一致し、その上は離れつつ 29 eV まで滑らかに伸びる。


Fe full

Fe — を横切る sp バンドをゾーン境界の 33 eV まで追えている。


参照バンドについて ​

比較相手はどの系も PMT 基底で解いた第一原理バンドで、実験値ではない。 そのうち Si・Al₂O₃:Cr・RuO₂・GdION は QSGW(sigm.<sname> を持つ)、 残りは DFT である。本書で「」と書いているのは MLO 模型と この第一原理バンドの差で、比 の分母も同じ。

全サンプルのバンドプロット(灰線: 第一原理 PMT、赤 ×: MLO) ​

課題 (1) — 近傍の模型

Al2O3_Cr

Al₂O₃:Cr(50 軌道)— この系が最終形の要点。O 2p 価電子帯(−2〜−4 eV)、 ギャップ中の Cr d 準位( 近傍)、CBM(+6.5 eV)、さらに上の帯まですべて乗る。 床を に置くと CBM が拘束されずギャップが 128 meV 縮む。 手調整 mlo_emax = 7 eV を置いていたのはこの CBM を掴むためで、 method 4 の はそれを自動で当てる。窓 7.2 meV。


FeMgO

FeMgO(76 軌道)— 本表の最良、窓 2.5 meV。真空層 30.5 a.u. に空格子球 7 個を 入れた Fe/MgO スラブ。空格子球なしの 78 軌道模型は 126.9 meV だったので、 ほぼ同じ大きさで 51 分の 1 になる。詳細は §5。


GaAs

GaAs(18 軌道)— Γ 点の分散の大きい伝導帯を含めて一致。窓 8.5 meV、ギャップ +6 meV。


SrTiO3RuO2

SrTiO₃(14 軌道、窓 8.9 meV)と RuO₂(22 軌道、窓 9.9 meV)。


NiO

NiO(LDA、16 軌道)— sp と局在 d が共存する系。窓 15.4 meV に対し占有側 18.5 meV と 逆転しており、窓だけ見ていたら見落とす。


CC.sp

ダイヤモンド C — spd 18 軌道(窓 16.6 meV)と sp のみ 8 軌道(窓 26.7 meV)。 後者は伝導帯の一部が MTO 部分空間の外にあり、比 0.65、ギャップ −39 meV。


FeCo

FeCo(18 軌道、窓 8.3 meV)— 磁性金属で両スピンとも良く乗る。



MLO フィッティング一覧 — 全サンプル ​

Samples/MLOsamples の 25 系すべて(灰: 第一原理 PMT バンド、赤 ×: MLO)。testecalj が 回すものと同じ入力・同じ参照。図は SRC/exec/mlo_bandplot.py <sampledir>_work で再生成。 表の後半 7 系は Materials Project の構造をそのまま ctrlgenToml.py に通し、 mlo_lm に全原子の s,p,d を入れて既定( eV)で回したもの (2026-09-18、開発の記録 MD/mlo_notes/mp_20260918/)。

半導体・絶縁体
Si (QSGW)GaAs (QSGW)GaAs+SOCC (diamond)
C.spSrTiO3Al2O3:Cr (QSGW80)NiO (LDA, AFM)
金属・磁性
Cu (d だけ)FeFe+SOCFeCo
RuO2 (QSGW)GdCo5 (4f)GdION (4f, QSGW)SmP (4f, so=2)
スラブ
FeMgO + 空格子球 (76 MLO)FeMgO+SOC
Materials Project、既定のまま (DFT)
AgAlNaClSiC (3C)
CdTeZnO (Zn 3d は LO を模型に)TiO2 (rutile)

MP 7 系の窓内 rms(2026-09-18 の評価。金属 [E_F−8, +2]、絶縁体 [E_F−8, CBM+3] eV で、今の mlo_bandcheck.py の窓(§9 の式 (9))とは違う): Ag 15, Al 74(自由電子帯は 窓外), NaCl 2.9, SiC 3.3, CdTe 28, ZnO 0.8, TiO2 0.8 meV。

3. 部分バンドを取る模型 — d だけ / 4f だけ ​

こちらははじめから一部のバンドしか取らない模型である。Cu の d 5 本、 4f 7 本といった具合で、窓の中の第一原理バンドの大半は模型に無い。 §7 の窓型の損失はここには使えない — 無いものを「再現できていない」と 数えてしまうからである。

系mlo_lm窓型損失 (meV)これは失敗か
CuCu の lm 5–9(d のみ)147.8 meV否。sp バンドを模型が持たないだけ
SmPSm の 10–16(4f のみ)、P は空121.3 meV否。価電子帯を持たない
GdIONGd の 10–16(4f のみ)0.2 meV窓に 4f しか無く、逆に測れてしまう
GdCo5Gd の 10–16 のみ、Co 5 サイトは空(データ不足)同上

(2026-10-01 まで、ここには「GaAsSoc の窓 105.9 meV も同種の産物 — 比較対象が 2N スピノルで本数が合わない」と書いていた。 実際は SOC なしの DFT と比べていたため。§4 の warning と表 M2)

4f 模型 — 準位の重なりで測る ​

4f だけを取り出す模型は「模型の 7 本が第一原理の 4f 準位に乗っているか」で 測る。各 k 点で MLO の各準位から最も近い第一原理準位までの距離(meV):

系spinmethod 0, 旧 (meV)method 4 (meV)
GdION1rms 0.19 / max 0.49rms 0.19 / max 0.49
2rms 1.76 / max 8.62rms 1.85 / max 9.30
GdCo51rms 10.99 / max 44.79rms 12.46 / max 52.67
2rms 13.78 / max 106.25rms 14.43 / max 104.21
SmP1rms 71.57 / max 265rms 76.30 / max 278
2rms 76.29 / max 273rms 75.04 / max 275

3 系とも method 4 は method 0 と同等で、4f バンドは乗っている。

ただし はここでは効いていない。 4f 準位 は 床 より遥かに下なので は常に床側が選ばれ、 しかも GdION では床が eV(Gd イオンの巨大ギャップ)と全部より上に来るため 、すなわち (素の射影)に戻る。 4f 模型にはバンド端の要求自体が無いので、 の「どこまで合わせたいか」 という意味が消える — method 4 でも壊れないが、効いてもいない。

SmP の rms 70–76 meV は元から。 中央値は 6–13 meV なので大半の準位は合っており、 一部(max 275 meV)が外れる。Sm 4f は P 3p と混成するのに mlo_lm で P のチャネルを 一つも取っていないためと思われる。method の問題ではない。

部分バンドだけを取る模型(§3)

Cu

Cu — d 5 軌道だけの模型。 を貫く sp バンドを模型が持たないので、 窓型の損失は 147.8 meV になるが、d バンド自身は乗っている(図を見よ)。

PMT バンドに対して有効なエネルギー下限を切っていないのもあって、いくらか 滑らかでない。 式 (4) の は上側の床 しか持たず、 下限が無いので、d の帯域より遥かに下の PMT 状態まで重み 1 で入ってくる。 と を両方向に振っても散らばりは既定値より良くならず、最大誤差は どの設定でも 1.0〜1.2 eV 残る。sp が d の帯域に入る で第一原理側が 6 本あるのに模型は 5 本しか持てない、という模型空間の側の限界でもある。


GdION

GdION(Gd 単イオン、QSGW)— 占有と非占有の 4f を別々の窓で描いた。 majority の 7 本は 直下( eV)、minority の 7 本は eV と eV 近く離れており、同じ縦軸には収まらない。 どちらも赤 × が灰線にそのまま乗る(rms 0.19 / 1.85 meV、上の表)。 minority の下に見える 〜 eV の灰線は 4f ではない帯で、 模型が取っていないので赤 × が無い。

この巨大なギャップが、4f 模型で が効かない理由でもある。 床 は eV に置かれ、4f 準位の ほとんど全部より上に来るので 、素の射影に戻る。


GdCo5SmP

GdCo5 は Co 5 サイトを空にして Gd 4f だけ、SmP は P を空にして Sm 4f だけ。 準位の重なりで測った結果は上の表。




4. スピン軌道相互作用 — job_mlo_soc ​

SOC は MLO を作り直さずに、あとから摂動として載せる。スカラー相対論で 作った MLO 模型に を射影して足し、 のスピノルとして 解き直す形である。SOC 入りで自己無撞着を取り直す必要はない。

bash
job_mlo_soc <sname> -np <N>

模型の作り方 — MLO は up と down で同一 ​

SOC を入れる物質の MLO は、次の順に作る(job_mlo_soc、2026-10-01 にコードで確かめた):

  1. up と down を、同じ PMT の基底で計算する(全段で nspin = 2、phispinsym = true: 動径関数を up と down で平均して共通にする)。 解くのはスカラー相対論の (下の段 2、so = 0)
  2. MLO は up と down で同じシード・同じ本数で作る(m_HamPMT の Hreduction をスピンごとに呼ぶ)。本数は §9 の式 (8) の をそのまま数える(GaAs は 23、Bi₂Te₃ は 45。lmlo の ndimMTO もこの数)。非磁性の物質(GaAs・Bi₂Te₃)では up と down の が同じなので、MLO そのものも同一
  3. その MLO の に を足して、up と down を合わせた 次元で対角化する(段 3、m_mlo_ham の calc_ham_eigen): 対角ブロック ↑↑・↓↓ はそれぞれのスピンの MLO の に の ↑↑・↓↓ 成分を足したもの、非対角ブロックは ↑↓ 成分。 重なり行列は up と down のブロック対角で、一般化固有値問題として解く。出るバンドは 本で、band_MLO_spin1.dat に全部入る

つまり模型の本数は非 SOC と同じ数え方で、2 倍になるのはスピノルとして対角化する行列の次元だけである。

注意: を MLO に射影するときは、一つのスピン(down、最後のスピン)の MLO の係数(zMLO)を使う(m_HamPMT)。 up と down の MLO が同一であることを前提にした作りで、非磁性の物質では厳密、磁性体(FeSoc)では up のブロックについて近似になる。

3 段の手順 ​

段コマンド何をするか
1lmf --quit=band --ctrlg:ham.so=1 --efermi=efermi_socフル LS のスピノルを全 BZ メッシュで解き SOC の を決め、efermi_soc に直接書く(efermi.lmf には触れない)
1blmf --band --ctrlg:ham.so=1 --efermi=efermi_soc同じ条件で対称線の上の DFT のバンド(スピン軌道あり) を bnd*.spin1 に書く。MLO と比べる相手(2026-10-01 から)。前の run の bnd*・band_MLO_spin2.dat は始めに消す(mlo は段 3 で空の spin2 をまた書く。描画と評価は飛ばす)
2lmf --writeham --socmatrix --ctrlg:ham.so=0スカラー相対論の を __HamiltonianPMT に、SOC 行列を __HamiltonianPMTsoc に別ファイルで書く
3mlo --socmatrix --efermi=efermi_socPMT→MLO 縮約のあと SOC 行列を MLO に射影し、対称線上で を対角化。窓の基準は efermi_soc(SOC の値)

共通で --ctrlg:ham.nspin=2 --ctrlg:ham.phispinsym=true が付く。 phispinsym(スピン平均した動径関数)が要るのは、 の代わりに を使うためである。

1 段目が efermi.lmf を SOC の値で上書きする点に注意。非 SOC の計算を 同じディレクトリで続けるなら、efermi.lmf を退避しておくこと (サンプルは非 SOC 版を同梱してある)。 → 2026-09-26 以降は efermi.lmf を書き換えない(1 段目が efermi_soc に直接書き、3 段目もそれを読む)。

SOC の MLO は、スピン軌道ありの DFT と比べる

job_mlo_soc の MLO バンドはスピン軌道入りなので、比べる DFT のバンドもスピン軌道入りでなければならない。スピン軌道なしの job_band(ctrlg の so = 0)と比べると、価電子帯の頂上が 上がるぶん食い違って見える(GaAs では CBM が 0.10 eV 低く見え、rms 0.12 eV)。このため 2026-10-01 から job_mlo_soc が段 1b で比べる相手を自分で描く。mlo_bandcheck.py は、スピン軌道ありの MLO とスピン軌道なしの DFT(llmf_band の HAM_SO、無ければ ctrlg の so)を比べようとすると WARNING を出す。 MLO の窓の基準( と CBM)は --efermi= のファイル(SOC では efermi_soc、それ以外は efermi.lmf)から取る。2026-10-01 の夜までは だけ qplist.dat(最後に回したバンドの計算が書く)の 1 行目から取っていて、SOC の MLO は前に回した非 SOC の job_band の (GaAsSoc では SOC の より 0.0082 Ry 低い)を使っていた。qplist.dat の値は今は図の 0 点(DFT の bnd* と同じ基準)にだけ使う。

実装上の要点 ​

  • 対称化はスピノルとして行う。 SOC は なので、 little group の回転や の回転では 軌道部分 とスピン部分 (SU(2))のテンソル積として と作用させる (so3_to_su2, spinor_rotate in m_HamPMT.f90)
  • 射影の基底を合わせる。 cmlo は PMT 固有状態 基底、hammhsop は PMT 基底関数 基底なので、 で後者に 揃えてから
  • --skiphammsoc は lso=1 でも に SOC を足さないためのフラグ(摂動を 後段で当てるため)

結果 — 非 SOC と同程度 ​

表 M2. SOC の模型の誤差(eV)。mlo_bandcheck.py(§9 の式 (9)〜(11)、窓 [VBM − 8, CBM + 2])で、DFT もスピン軌道あり(段 1b)

系(MLO の本数)ギャップの誤差rms MLO → DFT / DFT → MLO同じ系の非 SOC(job_mlo)
GaAsSoc(23)+0.0100.010 / 0.010GaAs: +0.007、0.007 / 0.007
FeSoc(9)金属0.017 / 0.017Fe: 0.016 / 0.016
FeMgOSoc(76)金属0.003 / 0.003FeMgO: 0.001 / 0.001

非 SOC と同じ程度で、SOC を入れても劣化しない。空格子球を入れた模型(§5)でも 3 段は問題なく通る。 (2026-10-01 まで、ここには窓型の損失(mlo_losscheck.py)で FeMgOSoc 3.9、FeSoc 21.9 meV と書いていた。比べる相手の DFT が スピン軌道なしだったので取り下げた。)

FeMgOSocFeSocGaAsSoc

上から FeMgOSoc、FeSoc、GaAsSoc。灰の線がスピン軌道ありの DFT(段 1b)、赤の × が MLO。 GaAs の価電子帯の頂上の分裂 は DFT 0.337 eV、MLO 0.335 eV。


注意: SOC の MLO( 本)は、スピン軌道ありの DFT と比べる(上の warning)。試料の bnd* に残っている 非 SOC の DFT(GaAsSoc の Test 1 の比べ相手)と比べてはいけない。試験の参照は band_MLO_spin1.soc.dat の側。 (2026-10-01 まで、ここには「GaAsSoc の窓型損失が 105.9 meV と出るのは本数が合っていないだけ」と書いていた。実際は非 SOC の DFT と比べていたため)


5. FeMgO — 真空スラブに空格子球を置く ​

長らく「 をどう変えても合わない外れ値」だった系である。原因は でも method でもなく、模型が置かれていない領域があったことだった。 同じ落とし穴は真空層を持つスラブなら何にでもあるので、独立の節にする。

何が起きていたか ​

まず構造の理解が誤っていた。Fe/MgO の界面ではなく、真空層 30.5 a.u. を持つ スラブ(Fe 3 層 + MgO 3 層、 a.u.)である。〜 eV に集中して いた残差は界面状態ではなく表面/真空状態で、真空領域に基底関数が一つも無いので サイト中心の MTO では原理的に表現できなかった。 をどう作っても 無いものは作れない。

空格子球の置き方 ​

真空に空格子球()を 7 層置いた。半径は自分で決める:

  • a.u. なら表面の O () と Fe () のどちらにも当たらず、 lmchk の報告する重なりは 0%
  • 層は表面からの逃げを確保して等間隔に並べる
  • 面内は と を交互(スラブの積層を継続)
toml
[[site]]
atom = "E"          # 空格子球
xpos = [0.0, 0.0, 0.3]
[[spec]]
atom = "E"
z    = 0
r    = 1.9          # 自分で決める。lmchk で重なりを確認すること
lmx  = 2            # DFT 側は s,p,d を持たせる (下記)
lmxa = 2

r = 0.0 は MT 球なしの浮遊軌道を意味するので、球を置きたいなら明示すること。

効果 — 空格子球を足すと 1 桁 ​

majority / minority の窓内誤差(meV):

模型MLO 本数窓 (meV)
空格子球なし78126.9 / 73.5
ES に s のみ852.2 / 1.1
ES に s,p + Mg,O の d 削除(採用)762.5 / 1.3
ES に s,p1061.8 / 1.1
ES に s,p,d1411.6 / 0.9

空格子球 1 個あたり s を 1 本、合計 7 本足すだけで 126.9 → 2.2 meV(58 分の 1)。 MLO は 78 → 85 本で 9% しか増えない。ここが一番大きい効き目である。

FeMgO 空格子球の比較

4 列が模型、上段が 近傍、下段が広域。左上(空格子球なし)を見よ — の上 〜 eV に赤 × の乗っていない灰線が残っている。これが 真空側にしみ出す表面状態である。価電子帯(〜 eV、Fe 3d と O 2p)は 空格子球が無くても合っており、欠けていたのは真空側の状態だけだった。

右の 3 枚( / / 本)は上段ではほとんど区別がつかない。 下段の広域では、一番小さい模型だけ eV 以上が空く — 削った Mg,O の d と 空格子球の p,d がそこを担っていた。


空格子球には p まで入れる ​

上の表では s だけでほぼ足りているように見えるが、 の上を細かく見ると p が要る。窓型の損失(窓は eV)がそこを測っていないだけである。

ES s のみ と s,p の比較

左が ES に s のみ(55 本)、右が s,p(76 本)。 〜 eV で描くと、 左は 〜 eV に赤 × の乗っていない灰線が残るのに対し、右は埋まっている。

ES s のみ と s,p の誤差

準位ごとの誤差を第一原理側のエネルギーで分けると、どこで効いているかが分かる:

領域ES s のみ (55)ES s,p (76)
〜 eV(価電子帯)0.3〜0.7 meV同じ
〜 eVやや悪い少し良い
〜 eV20〜170 meV3〜5 倍良い

全体の数字でも:

軌道数窓 (meV)占有 (meV)分散準位ごと平均 (meV)最大 (meV)
ES s のみ553.10.60.00815.9 / 11.4860
ES s,p(採用)762.50.50.0068.3 / 6.0294

窓型の損失では 3.1 → 2.5 meV と控えめだが、準位ごとに見ると平均が半分、 最大が 860 → 294 meV と 3 分の 1 になる。窓の外での改善なので、窓型の指標には ほとんど出てこない。§7 で「一方向では決まらない」と書いているのはこういう事情である。

採用した模型 — 76 本 ​

Samples/MLOsamples/FeMgO と FeMgOSoc はこの 76 軌道の模型で、入力一式を 共有する(mlo_lm は Fe が s,p,d の 9 本、Mg が s,p の 4 本、O が p の 3 本、 空格子球が s,p の 4 本: 3×9 + 3×4 + 3×3 + 7×4 = 76)。Fe と Mg の基底には f の MTO もあるが模型には入れていない。

元の空格子球なしの模型は 78 本だったので、**ほぼ同じ大きさで窓内誤差が 126.9 → 2.5 meV(51 分の 1)**になる。

FeMgO

用途は磁気ゆらぎの計算で、必要なのは 近傍である。そこだけなら 55 本でも 足りるが(上の表)、+10 eV まで使うなら p を入れておくほうがよい。 7 サイト × 3 = 21 本の増加で済む。

落とし穴 2 つ ​

(a) mlo_lm だけを絞る。[[spec]] の lmx は 2 のままにする。 DFT 計算側で の球から チャネルを削ると動径方程式が発散し lmf が落ちる:

[[spec]] の E結果
lmx=2, lmxa=2収束
lmx=1, lmxa=1lmf rc=11。動径解が Ry へ発散
lmx=1, lmxa=2同上
lmx=1, lmxa=2 + p 明示同上。 Ry で q が桁あふれ

動作する場合の空格子球の pnu は 1.509 / 2.256 / 3.150 (s/p/d) で、これを p として 与えても直らない。既知の yh3fcc_gwsc666 の暴走と同じ症状である。 DFT には s,p,d を持たせ、MLO の選択は mlo_lm で行うのが筋の通ったやり方。

(b) 真空スラブには ESM が要る。[esm] を書き忘れないこと。 真空層があると Coulomb の 成分の扱いでエネルギーのゼロ点が決まる。 [esm] が無いと lmf は通常の周期境界で解き、警告一行を出すだけで止まらない。 FeMgO では が 4.4155 eV ずれた。全エネルギー・Vesav・磁気モーメントは 8〜13 桁一致するので、Fermi エネルギーを比べるまで何も異常に見えない。

toml
[esm]
boundary  = "vac/slab/vac"   # 真空(-z)/スラブ/真空(+z)
origin    = -8.63717         # (a.u.)
shiftmode = 0
zb        = [23.907104, -23.907104]   # (a.u.)
potential = [0.0, 0.0]       # (Ry)
field     = [0.0, 0.0]       # (Ry/a.u.)

esm_input.dat は廃止した(2026-09-16)。 設定は ctrlg.<sname>.toml の [esm] セクションに書く。Fortran は ctrlg 以外を読まないので(2026-09-17)、 esm_input.dat が残っていると lmf は止まって ctrlg_absorb.py <sname> を 案内する(黙って ESM 無しで走らないように、無視ではなく abort):

状況ctrlg_absorb.py がすること
ctrlg に [esm] があるそちらが使われる。esm_input.dat は esm_input.dat.bk へ退避され、.bk の冒頭に「この設定は使われなかった」と記録される
ctrlg に [esm] がないesm_input.dat を変換して ctrlg に [esm] を書き込み(GW セクションの前)、原本を esm_input.dat.bk へ退避(移送先を .bk 冒頭に明記)

Legacy2toml.py も同じ規則で変換する。詳細は ESM。

この件で長く回り道をした。同じ rst から別の機械で別の が出るのを見て コンパイラや MPI を疑い、rst のバイナリ互換性・atmpnu・負の電荷密度・非決定性を 順に潰したが、真相は新サンプルを組み立てたときに esm_input.dat を コピーし忘れていただけだった。Vesav が 13 桁一致していた時点で密度側は無実と 分かるので、SCF のログを先に diff すべきだった。



6. 有効相互作用 — job_mloW ​

MLO 模型でバンドが再現できたら、次に要るのはその模型の中での電子間相互作用 である。模型ハミルトニアンに載せる Hubbard 、磁気ゆらぎの計算で使う 相互作用がこれにあたる。cRPA で言う「模型空間に射影した遮蔽相互作用」で、 MLO 基底で評価するのが job_mloW である。

何を計算するか ​

MLO 軌道 と格子ベクトル 、振動数 について

を計算し、 と を別々のファイルに書く。オンサイト対角成分 、、 が、模型の に相当する量である。

bash
job_mloW <sname> -np <N>

lmfa → lmf → --jobgw=0/1 → qg4gw → heftet → hbasfp0 → mlo → hvccfp0 → hwmatK_MPI → hx0fp0 → hwmatK_MPI の順に回る。 MLO のバンド計算 (job_mlo) より重い — GW の部品を一通り通るためである。

MLO の規格化 — 実空間で 2 乗積分が 1 ​

MLO は各 で PMT の固有状態の重み付きの和として作るので、そのままでは長さが 1 でない。 や を「長さ 1 の軌道の値」として読むには、実空間の MLO を規格化する。 メッシュ( 点)の上の MLO の Bloch 関数 から作る実空間の MLO の 2 乗積分は

で、生の MLO の模型の重なり行列の の対角成分である。模型を定義する mlo(job_mlo、lmf --mlo)は、まず とし( によらない定数)、続けて次の小節の式 (7f) で各 で直交化する。Löwdin の直交化は入力の軌道の尺度で 結果が変わる(入力に最も近い正規直交系を選ぶので、先に各軌道の長さをそろえておく)。 は HamRsMLO の末尾に書き、以後 MLO を作る所 (job_mloW の __cmlo、MLO-QSGW の sugw・m_sigmlo)はすべて同じ定数で割ってから同じ直交化をする(2026-10-02)。

  • 生の MLO の は 1 よりずっと小さい: Ni の d で 0.38、SrVO₃ の t₂g で 0.18、bcc Fe の d で 0.21〜0.33、s・p で 0.01〜0.02 (窓の上で重みが落ちるため)。規格化しないと の が Ni で 3.4 eV(規格化して 24 eV)のような値になる
  • ごとに で割ってはいけない(旧 --mlo_diagnorm、廃止)。因子が によるので実空間の軌道の形が変わり、 メッシュから外れた の MLO バンドが動く(C で 0.74 eV、Al で 0.10 eV)
  • hwmatK_MPI は GW のメッシュで測った を確かめとして表示する(lwmatK1 の square integral of the real-space MLOs on the GW mesh)。 模型のメッシュ(mlo_nkabc)と GW のメッシュが違うので 1 から少しずれる。GW のメッシュが粗いと、その周期の箱の中で軌道が自分の像と重なってずれが大きい (SrVO₃、2³ で 1.06。Ni、4³ で 0.999)。そのずれは に 2 乗で効く

MLO の標準: Löwdin で直交化した関数(射影 Wannier) ​

MLO は各 で直交していない。各 で

とした関数は、MLO と同じ部分空間を張る正規直交な局在関数で、MLO の部分空間の射影 Wannier 関数である。実空間では、MLO から重なっている 隣の軌道を重なりの半分ずつ引いた形 ( は実空間の重なりの非対角)。 なので、もとの MLO と同じ表現で回り、軌道の名前(t₂g、e_g など)と対称性を保つ。

2026-10-02 から、ecalj の MLO はこの関数である。 模型は だけで持ち()、 メッシュの外のバンドは のフーリエ和の対角化で得る。スピン軌道の行列、__cmlo(、、cRPA、マグノン)、 MLO-QSGW の もすべてこの基底である。メッシュ上のバンドは直交化の前と同じ。job_mlo <sname> --mlo_raw(lmf に渡る)で直交化しない以前の 模型( と の二本立て)を作れる。比較のためだけの選択で、以後のプログラムは HamRsMLO に書いた印で同じ基底を選ぶ。

直交化した関数は、直交のために隣の原子の上で振動するが、中心に寄る(広がり : bcc Fe の t₂g で 1.72 → 1.46 bohr²、Ni の d で 9.88 → 9.42)。 模型の行列要素も遠方で小さい(bcc Fe、 で 2.9×10⁻³ Ry、 2.8×10⁻³ に対し 4.3×10⁻⁴ Ry)。 メッシュの外の内挿は表 M8 のとおりで、 近くでは直交化した方がよい。

表 M8. 生の MLO の模型 と直交化した模型 のメッシュの外のバンドの誤差(63 物質、§9 の検査と同じ DFT・同じ道筋、eV)。 近くは (金属は )

生 直交化
§9 の検査を通る物質5355
窓全体: rms の中央値 / 最大の中央値0.0050 / 0.0350.0040 / 0.030
近く: rms の中央値 / 最大の中央値0.0048 / 0.0190.0032 / 0.011
  • 近くで大きく良くなるもの: Cu 0.107 → 0.008、Ni 0.054 → 0.010、C 0.078 → 0.031(ギャップの誤差 −0.038 → −0.013)。悪くなるもの: 2H-SiC 0.035 → 0.051、 MnO 0.007 → 0.030。窓全体では bcc Fe の 4s 帯の底(〜 eV)だけが 0.03 → 0.10

  • 模型の重なりが 1 になるので、§9 の検査の重なりの最小固有値(2026-10-02 までの判定 3)は意味を失い、帯のとげ(式 (12))に替えた。mlo の出力(lwriteham)の Smallest eigenvalue of the normalized raw overlap がメッシュ上の直交化の前の値(63 物質で 0.22〜0.31)

  • 直交化で裾どうしの重なりの寄与が中心に集まり、オンサイトの が増える(bcc Fe の d、既定の窓、: 1.564 → 1.704 eV)。 最近接のサイト間の密度どうしの は の 2 % で、基底によらない

  • マグノン(遮蔽をすべて含んだ を使う)は、窓(mlo_delta、mlo_w)にほとんどよらなくなる。生の MLO では窓で大きく動き、Goldstone の条件のための 倍率 も窓で 0.78〜1.18 と動いた。Löwdin では Fe 1.23〜1.24、FeCo 1.26〜1.28、Ni 1.75〜1.77。Wannier 関数を使った以前の計算のマグノンと、 FeCo・Ni で 0.01 eV 以内、Fe で q ≥ 0.5 がほぼ重なる(Samples/Magnon/Fe_mlo_magnon の README)

  • 最大局在化(Marzari–Vanderbilt)をさらに重ねることもできるが、拘束をつけないと s・p・e_g が結合の方向にずれた混成軌道になり、軌道の名前を失う。 点群の拘束(Sakuma, PRB 87, 235109)をつけると、Fe の t₂g の広がりは Löwdin からさらに 7 % 縮むだけ。既定にはしない(試作 ecalj の TOOLS/gadget/mlo_maxloc.py --sym)

出力の読み方 ​

スピンごとに 2 ファイル。単位は eV。

ファイル中身
Coulomb_v.UP / .DN
Screening_W-v.UP / .DN

列は main_wannier_hwmatK.f90 の書式そのままで:

 Wannier  ir1 irws1  Rx Ry Rz  is i j k l  [omega omega2]  Re  Im

Coulomb_v には の 2 列が無く、Screening_W-v には有る。 欲しいのは 、、 の実部で、 Samples/MLOsamples/Fe/test.py の _parse_diag() がその抜き出しの実例である。

として足し合わせる。

と は巨大に打ち消す ​

Fe(bcc、sp³d⁵ 9 軌道)の d 軌道、majority スピン:

d 軌道 (lm) (eV) (eV) (eV)
5, 6, 8 (, , )22.91−21.401.510
7, 9 (, )22.90−21.241.661

(2026-10-02、式 (7a) の規格化。Samples/MLOsamples/Fe/test.py の期待値)

eV と eV が打ち消して eV になる。 は の 7% しかない。したがって:

  • や を単独で見て議論してはいけない。 模型の作り方を少し変えると どちらも 1〜2 eV 動くが、その 90% は相殺する
  • の相対誤差は の相対誤差の 14 倍に増幅される。 が 1% ずれれば は 14% ずれる勘定になる

模型の作り方に はどれだけ依存するか ​

Fe の d 軌道、 の平均(eV)。この表は 2026-09-16 の測定で、MLO を ごとに規格化していた(旧 --mlo_diagnorm)。 式 (7a) の規格化では値が 1〜6 % 動く(上の表)が、模型の作り方による違いの大きさの議論はそのまま成り立つ:

模型 (eV) (eV)
method 0(旧サンプル)1.66841.5972
method 4、(既定)1.58151.4248
method 4、1.63081.5546

の d 成分は method 0 → 4 で UP eV、DN 〜 eV 動くが、 上記の打ち消しで残る の変化は UP %、DN % である。 minority の d は の上にあって床 に近いので、 majority の倍ほど動く。

を上げると は戻る( で UP %、DN %)。 バンドの当たりも のほうが良い(§2)。

どの が正しいかは、ここでは決まっていない。 確かめたのは「 は模型の作り方に 10% の桁で依存する」ことだけである。 のほうがバンドの当たりは良いが、それは床より上の領域での話で、 を直接検証したわけではない。method 0 の値が に近いことも、 method 0 を基準と見なす理由にはならない。

したがって実用上は、 を使うなら 依存を自分の系で確かめること。 既定値をそのまま使って 10% を気にしないで済むかどうかは用途次第である。 サンプルは 18 系すべて既定値で統一してある。

cRPA — job_mloW --crpa ​

模型の中の遮蔽を除いた (constrained RPA)。各 のバンド が MLO の部分空間にどれだけ入っているかを

で測り(MLO の部分空間への射影の対角成分。、 = MLO の本数)、 の遷移 に

を掛ける(重みの方式、Şaşıoğlu–Friedrich–Blügel, PRB 83, 121101)。 は射影なので MLO の規格化 (7a) によらない。 job_mloW <sname> --crpa が、v と の後に hwmatK_MPI --mlo(10011: pkm4crpa に式 (7b))→ hx0fp0(10011)→ hwmatK_MPI --mlo(100)を回し、Screening_W-v_crpa.UP/DN を書く(形式は Screening_W-v と同じ)。模型の部分空間は mlo_lm そのもので、 d だけ(Ni)や t₂g だけ(SrVO₃、mlo_lm の lm = 5 6 8)の模型を作って使う。試験は TestInstall/ni_crpa・srvo3_crpa。

表 M7. MLO と Wannier 関数(2026-10-02 まで ecalj にあった最大局在化、genMLWFx)の比較。 のオンサイトの平均(eV)、 、。 は式 (7e) の広がり(bohr²、括弧は Marzari–Vanderbilt の形)

系(GW の k メッシュ)方法 の RPA の cRPA の cRPA の
SrVO₃ t₂g(4³)MLO7.5115.770.7153.1250.437
SrVO₃ t₂g(4³)Wannier6.37(6.13)15.990.7303.1490.444
Ni d(4³)MLOt₂g 2.02、e_g 1.9023.801.4052.8380.645
Ni d(4³)Wanniert₂g 1.47、e_g 1.58(1.44、1.54)26.001.5753.7790.768
  • t₂g が孤立した SrVO₃ では、cRPA の が 1 % 以内で一致する
  • d が s と絡む Ni では、MLO の d のほうが広く( で 2〜4 割)、cRPA で除く遮蔽が少ない( が 0.060 対 0.085)。 Wannier 関数の d の部分空間は広い窓( eV)から作られて s・p 的なバンドにも乗り、式 (7c) で d ↔ s,p の遷移も一部除かれる。 どちらが正しいということではなく、部分空間の取り方の違いである
  • GW の k メッシュが粗いと、式 (7a) の規格化が GW のメッシュの上で 1 からずれ(SrVO₃、2³ で 1.06)、 が 1 割ずれる。 を使うなら 4³ 以上で
  • 比較の数値と作業場所は研究ログ 2026-10-02 00:32。Wannier の経路は git のタグ last-wannier のコミットにある
  • 表 M7 の MLO は生の MLO の値。Löwdin の基底(標準、2026-10-02 から)では、Ni の d(4³)の cRPA の は 2.90 eV(生 2.84、Wannier 3.78)で、 RPA の は 1.434 eV。窓を広げると cRPA の は (4, 2) で 3.13、(6, 2) で 3.30 eV と動くが、RPA の は 1.43〜1.52 eV とあまり動かない。 cRPA は「模型の部分空間の中の遮蔽」を除く量なので部分空間の取り方にそのまま依る(帯がもつれた系では、重みの方式か射影の方式か、Wannier の disentanglement の窓などの選び方にも依る)。遮蔽をすべて含んだ RPA の は軌道の形を通してしか依らない

MLO の広がり — mlo_spread.py ​

bash
mlo_spread.py <sname> -np <N>        # job_mloW の後(__cmlo、GW の固有関数、HamRsMLO、QBZ.chk を使う)

GW の k メッシュの隣り合う点を結ぶ (近い殻から足して )について を huumat --dwnb=mlo --job=2 で作り、MLO ごとに

を bohr で出す。式 (7e) は の和で、各 で長さ 1 を仮定しない(式 (7a) の MLO は各 では 1 でない)。 Marzari–Vanderbilt の の形との差は が小さいほど小さく、粗いメッシュ(2³〜4³)では 4〜10 % 大きく出る(表 M7 の括弧)。どちらもメッシュを細かくするほど実空間の 2 次のモーメントに近づく。

回帰試験 ​

Samples/MLOsamples/Fe はこの 、 のオンサイト対角 9 成分 × 2 スピンを 参照ファイルではなく test.py に直書きして照合する(許容 0.05 eV)。 模型の作り方を変えると値が動くので、変えたら期待値も更新すること。


7. 誤差の測り方 — 一方向では決まらない ​

定義 — 生の量をベクトルで持つ ​

用途によって重んじる方向が変わるので、スカラーに潰さずベクトルで持つ。 規格化も 2 乗もしない。どれくらいずれているかが直接読めるほうがよい。 実装は SRC/exec/mlo_losscheck.py。

量意味単位
窓 〜 eV(金属 eV)の rmsmeV
占有側 〜 eV の rmsmeV
分散(経路方向の勾配)の相対誤差無次元
バンドギャップ誤差(符号付き、絶縁体のみ)meV
比(絶縁体のみ)無次元

比 は比であって誤差ではない。1.00 が一致、1.18 なら MLO の質量が 18% 重い。 は対称線経路座標 についての勾配で、 の分母は窓内の第一原理側の勾配の rms。 準位の対応づけは順序を保つ最適割当(動的計画法)で、縮退・交差・バンド数の差に耐える。

を別に立てるのは、窓だけ見ていると深い価電子帯の劣化を 見落とすためである(Si は を上げると窓内はほぼ不変なのに eV が 2.5 → 10.7 meV と悪化する)。

既定値での各量 ​

既定 eV での実測は §2 の表のとおり。特徴的なのは Si の と の差( 20.0 → 7.1 meV、 +38 → +3 meV、比 1.41 → 1.03)で、 の値は補間の雑音を含む。Si は を基準に取ること。

方向ごとの最適 ​

固定で を振り、各量を最小にする (eV)。括弧内はそこでの値 (ΔE は meV、 と 比 は無次元):

系窓占有分散ギャップm*比
Fe (9) 金属10.9 (5.2)10.9 (4.5)10.9 (0.012)——
Cu (9) 金属10.9 (8.5)10.9 (2.7)10.9 (0.027)——
RuO₂ (22) 金属1.8 (8.1)2.7 (9.5)1.8 (0.030)——
Si (18) 絶縁1.8 (5.7)2.7 (2.8)2.0 (0.005)2.0 (+2)2.7 (1.00)
GaAs (18) 絶縁1.8 (7.4)2.0 (1.5)2.0 (0.008)1.4 (+1)2.0 (1.02)
Al₂O₃:Cr (50) 絶縁2.0 (6.7)2.0 (2.2)2.0 (0.003)1.8 (+1)1.8 (1.03)
C.sp (8) 絶縁2.7 (14.9)3.4 (2.7)3.4 (0.005)3.4 (−4)4.1 (0.83)

系の中では各量がよく揃う( eV 以内)。割れるのは系をまたいだときで、 Fe・Cu の 10.9 eV と半導体の 1.8–2.7 eV は 6 倍違う。したがって系ごとの 最適化は well-posed であり、固定値一つで全系を満たすことはできない。

を大きくする極限は誤差自身が罰する ​

は で 、 すなわち となり 、つまり MTO 部分空間だけで対角化した限界に達する。その極限は実際に悪い:

(eV)10.92768272
Fe7.839.8151309
Cu7.844.7148367
Si 546123027042854

(広窓 〜 eV の rms、meV)

MTO だけの限界は Fe でも 309 meV ずれる。 よって「MTO に戻ってはいけない」という 制約を外から課す必要はなく、誤差が自分で上限を与える。Fe・Cu の最適 eV は 自明極限に近いからではなく、そこが有限の最適点だからである。

以下の振る舞いは系で逆を向く ​

第一原理バンドのエネルギーでビン分けした rms (meV):

Fe / (eV)
eV37.220.214.621.253.2
eV6.64.54.13.29.9
Si / (eV)
eV2.53.64.45.24.2
eV10.77.26.83.357.8

Fe は を上げると全ビンが改善するが、Si は逆で、 直下だけが少し良くなり 深い価電子帯と伝導帯が悪化する。 近傍だけを見ていると を上げたくなるが、 広く見ると損をする — を別に立てているのはこのためである。

メッシュ — 比 とギャップは粗いメッシュで決めてはいけない ​

eV 固定、Si。各セルは (meV) / (meV) / 比:

(eV)
1.820.7 / +50 / 1.645.6 / +3 / 1.053.7 / −5 / 0.93
2.018.3 / +39 / 1.426.8 / +2 / 1.025.8 / −3 / 0.95
2.719.4 / +25 / 1.1814.8 / +5 / 1.0014.3 / +3 / 0.96
4.145.3 / +50 / 1.0244.6 / +40 / 0.9644.4 / +38 / 0.93

は eV を最良と言うが / は eV と言う。 は系統的に大きい を良く見せる。 と でギャップ誤差の符号が逆( eV で / meV)なのは 打ち切りの超格子依存性なので、2 つのメッシュで一致する範囲を採る。

使い方 — 単純規則 ​

  1. は宣言であって調整ノブではない。 「バンド端から上に何 eV まで 合わせたいか」を書く。評価する窓の上端と同じ値にする。既定 2.0 eV。
  2. 既定 eV でまず計算する。
  3. 残差が大きければ だけを動かす。 1 次元で足りる。実測の最適値は 半導体 2.0 eV 前後、Fe・Cu のような単原子遷移金属 11 eV、RuO₂ 1.8 eV。
  4. 半導体は 以上のメッシュで判断する。 は 比 とギャップに 補間の雑音が乗り、系統的に大きい を良く見せる。Si の が基準になる。

mlo_w の既定は method 依存にしてある。mlo_method = 4 では 2.0 eV、 旧 method 0/1/2/3 では 2.72 eV(= 0.2 Ry の従来値)。旧 method を使う 既存サンプルの結果とその参照ファイルを変えないためで、mlo_w を明示すれば どの method でもその値が使われる。

の効きは よりはるかに弱い。 を 1→4 eV と振っても誤差の変化は 数割だが、 は Si で 1.8 eV → 4.1 eV とするだけで窓の誤差が 5.6 → 44.6 meV と 8 倍になる。動かすのは でよい。

既定を / eV から / eV に変えた根拠 (全 12 系の平均、生の誤差):

既定||
旧 , eV16.9 meV11.6 meV16 meV
新 eV15.0 meV7.4 meV13 meV

効いたのは SrTiO₃ の占有側 52.9 → 5.5 meV と Al₂O₃:Cr の窓 17.5 → 7.2 meV。 悪化したのは C.sp(14.9 → 26.7 meV)で、これは を上げたい側の系である(§4)。


8. 残る問題 ​

以下はすべて mlo_method = 4(§1 の最終形)で測り直したもの。

解決済み ​

  • Al₂O₃:Cr のギャップ — 付録 D (c) の実装で −128 → +7 meV( 比 0.58 → 1.08)。- FeMgO をサンプルに入れるのは保留 — 機械依存が残っているため。解決した(2026-09-15)。機械依存ではなく、私が esm_input.dat を 新サンプル FeMgO_ES にコピーし忘れていただけだった。

    FeMgO は真空層 30.5 a.u. を持つスラブなので、既存の Samples/MLOsamples/FeMgO/ には 2 月から esm_input.dat(ESM = Effective Screening Medium)が入っている。 そこから FeMgO_ES を組み立てたときにこれを落とした。 ファイルが無いと lmf は静電ポテンシャルを通常の周期境界で解き、 ログに一行出すだけで停止しない:

    ローカル: esmsmves: ESM is not turned on, you need esm_input.dat for ESM mode
    kt1     : effective screening medium method jesm=  1
              system : vaccum(-z)/slab/vaccum(+z)

    真空を含むスラブでは Coulomb の 成分の扱いがエネルギーのゼロ点を決めるので、 ESM の有無で固有値が丸ごとずれる。実測:

    量ローカル(ESM なし)ローカル(ESM あり)kt1
    (Ry)
    mmom8.4190838.41308037414938.4130803741352
    sev (eV)
    val*vef (Ry)

    esm_input.dat を置くだけで は 12 桁一致する。 バンドそのものも kt1 と一致する(bnd001、4563 点):

    最大差rms
    spin1 eV eV
    spin2 eV eV

    testecalj の許容値 0.001 eV に対して 5 桁の余裕がある。機械依存は無い。 失敗の仕方が悪い: ecalj の SRC/subroutines/esmsmves.f90(GitHub)の open(...,status='old',err=201) はファイルが無いと jesm=0 のまま一行書いて return し、 異常終了しない。真空スラブの計算が黙って別物になる。

    ずれ幅は Ry eV で、これは以前 「 が に比例して Ry ずれる」と測っていた量そのものである。

    その後の措置(2026-09-16)

    1. esm_input.dat を廃止し、ctrlg.<sname>.toml の [esm] セクションへ移した。 当初は Fortran がその場で移行していたが、翌 09-17 に「Fortran は ctrlg 以外を 読まない」に統一: ファイルが残っていれば abort して ctrlg_absorb.py を案内する。 変換は ctrlg_absorb.py / Legacy2toml.py が行い、[esm] が既に有ればそちらを 残し、無ければ変換して ctrlg に説明付きで書く。原本はどちらの場合も esm_input.dat.bk へ移し、冒頭に移送先(または「TOML 側が使われた」)を書く。 なのに [esm] が無ければ警告も出す。

    2. FeMgOSoc も同じ病気だった。 FeMgO と ctrlg も rst.femgo も バイト一致の同じスラブなのに esm_input.dat が置かれておらず、 が Ry(ESM 無し)対 Ry(ESM 有り)、 差 eV。ESM で収束させた rst を ESM 無しで展開した参照になっていた。

    3. サンプルを空格子球ありの 55 軌道模型に一本化した。 空格子球なしの旧 78 軌道模型(mlo_method=0, mlo_emax=5)は削除し、 FeMgO も FeMgOSoc も入力一式を共有する形にした。ローカルで実測:

      軌道数dE_windE_occdv/v
      旧(空格子球なし)78113.3 meV7.7 meV0.270
      新(空格子球あり)553.1 meV0.6 meV0.008

      旧模型は全サンプル中で最悪だった。テストが通っていたのは自分の参照を 再現していただけで、模型の精度とは別である。 空格子球ありでも job_mlo_soc の 3 段は問題なく通り、 SOC の は Ry(非 SOC から 3.1 meV シフト)。

    4. その過程で readbandedge の黙ったフォールバックが見つかった。 efermi.lmf が無いと ecbot が に落ちるので、method 4 の床が ではなく になる。 FeMgO では eV の差が θ を通って MLO バンドを meV 動かし、許容値 Ry を超えた。 警告を出すようにし、サンプルに efermi.lmf を同梱した。 絶縁体ならギャップ幅ぶん丸ごと外すので、これは実害のある穴だった。

    切り分けに時間をかけすぎた。 rst のバイナリ互換性、atmpnu/__atm、 負の密度の警告、非決定性 — どれも潰したが、どれも無実だった。 Vesav が 13 桁一致していた時点で密度側は無実と分かるので、 llmf_ef(SCF/band 1 段目の出力)を先に diff すべきだった。 一行で ESM is not turned on と書いてある。 「空格子球が引き金」という見立ても誤りで、引き金は esm_input.dat の有無だけ。

  • Cu (spd) の残差 — 実体は無く、評価側の産物が 2 つ重なっていた。

    1. eV の窓に入るのは 92 k 点中 21 点だけ。Cu の d バンドは全て eV より下にあり、窓に居るのは急峻な sp バンドだけである。 誤差は局所傾き 10–14 eV/x の点に集中し、傾き eV/x に限ると rms は 0.051 → 0.017 eV と他系並みになる。傾き 13 eV/x のバンドでの 0.05 eV は経路座標で 0.004 のずれにすぎない。
    2. 「ギャップ誤差 meV」は、第一原理側の最大占有 eV と最小非占有 eV の 差 0.1995 eV が判定閾値 0.15 eV を超え、Cu を絶縁体と誤判定したもの。Cu は金属。 判定を「占有本数が によらず一定か」に変えて修正済み (Cu 5/6、Fe 5–9、RuO₂ 18–21 に対し Si/GaAs/Al₂O₃/NiO は一定)。

生きている ​

  • 固定 では半導体と金属を同時に満たせない。 §3 のとおり最適 は 半導体 0.13–0.20、Fe・Cu 0.80 と 6 倍違い、どちらも有限の最適点である。 系ごとの最適化は well-posed だが、固定値一つで全系は満たせない。 既定を から半導体寄りの に下げる余地はある(未変更。 変更すると testecalj の MLO 参照ファイルの再生成が要る)。

  • Si の の は信用できない。 でギャップ +25 meV・ 1.18、 で +5 meV・1.00(§2)。振れは補間の雑音であり模型の欠陥ではない。 パラメータ調整を の で行ってはいけない(§3 のメッシュの項)。

使ってはいけない指標(記録) ​

検討の途中で eV の rms を使っていたが、ワイドギャップ系では無効だった。 バンドファイルの零点が VBM に取られるため が価電子帯上端付近に来て、 価電子側しか見ない。C.sp で を 0.20 → 0.80 と広げると は 0.0064 → 0.0170 と鈍い一方、ギャップ誤差は → meV と暴走する。 現在の測り方(§3)はこの指標を使っていない。



9. 模型の選び方 — 基準 1・2・3 ​

ecalj の Samples/MATERIALS は LDA の計算と MLO の計算のサンプルで、62 物質(構造のデータベースを展開したもの)と La₂CuO₄・InAs/GaSb 超格子(16 原子)・BaTiO₃ の入力がある。その 65 物質で、LDA(Eu の化合物は LDA+U)の自己無撞着計算のあと MLO の模型を作り、対称線の上で DFT のバンドと比べた(2026-10-01)。スピン軌道を入れる GaAs_so・Bi₂Te₃ は job_mlo_soc(§4)。

3 つの基準 ​

表 M3. MLO の模型の 3 つの基準

基準MLO のシード書く所
基準 1mlo_lm の EH(H〜Ne は s,p、Na 以降は s,p,d、4f が価電子の原子は f も)と、局所軌道(帯の上端が eV より上なら EH と入れ替え、〜 eV なら EH に加える)局所軌道は自動(m_HamPMT、§1。lmlo に判定が出る)
基準 2基準 1 + 陽イオンの s,p に EH2(第 2 の smooth Hankel 関数)のシード。陽イオンから遷移金属と 4f・5f の原子を除くmlo_lm2
基準 3基準 1 + 空隙に置いた空格子球()の s,p のシード[[site]]・[[spec]]・mlo_lm。基底が変わるので lmfa から回し直す(置き方は §5)

基準 1 の半内殻の帯は、同じ種類の原子の局所軌道をまとめた部分空間への重みが 1/2 を超える占有状態で見る (La₂CuO₄ の La 5p は 2 つの La に半分ずつ広がり、1 原子ずつ見ると見つからない)。Ga 3d・In 4d・Eu 5p・La 5p・Sr 4p のように O・N の 2p と混ざる半内殻が模型に入り、その 2p の帯が合う。

基準 2 の EH2 は、空隙の大きい構造(閃亜鉛鉱の MgX・CdTe・ZnTe、wurtzite の AlN)で、隙間に広がった伝導帯の底を表す。 §1 の「(原子, lm) あたり MLO は 1 本まで」の例外にあたる(窓の中に同じ性格の第 2 のバンドがある)。

MLO の本数はシードの本数で、原子 (空格子球も 1 つの原子と数える)ごとの和になる:

は mlo_lm の原子 の行にある (s,p で 4、s,p,d で 9、s,p,d,f で 16。部分殻なら書いた lm の数)、 は mlo_lm2 の行の lm の数 (s,p で 4、! の行は 0)、 は EH に加えた局所軌道の (lmlo の SHALLOW: LO added の行。mlo_lm3 に書いた原子はその lm の数)。 局所軌道が EH と入れ替わる (IN THE WINDOW)は の側で数える(本数は変わらない)。 スピン分極した系は各スピンに 本。スピン軌道を入れる物質も数え方は同じ(MLO は up と down で同一。そこに を足して 次元で対角化する手順は §4)。lmlo の Dim of |MLO1>based Hamiltonian HamRsMTO= が式 (8) の 。例:

  • GaAs: 基準 1 は Ga 9 + As 9 + Ga 3d の LO 5 = 23、基準 2 は Ga の EH2 4 を足して 27
  • MgTe: 基準 1 は Mg 9 + Te 9 = 18(半内殻の LO は深い)、基準 2 は 22
  • ZnTe: 基準 1 は Zn 9 + Te 9 = 18(Zn 3d の LO は −6.5 eV で EH と入れ替え)、基準 2 は 22
  • NiO(反強磁性、Ni 2・O 2): 9×2 + 4×2 = 26(各スピン)
  • La₂CuO₄(La 2・Cu 1・O 4): 16×2 + 9 + 4×4 + La 5p の LO 3×2 = 63
  • SiO₂(β クリストバライト、Si 2・O 4): 9×2 + 4×4 = 34、基準 3 は空格子球 2 つの s,p を足して 42
  • Bi₂Te₃(Bi 2・Te 3、SOC): 9×5 = 45(up と down で同一の MLO。§4)

現在のベストチョイス ​

  • まず基準 1 で作る。基準 1 で不満足なら基準 2 を試す。基準 2 で EH2 を入れる陽イオンからは、遷移金属と 4f・5f の原子を除く (入れると壊れる: 表 M5 の Cu・Ni・EuO)。
  • 基準 1 で不満足で、幾何学的に空隙がある場合(層状物質、SiO₂ など)は、空格子球を入れる(基準 3)のを試す。 基準 2 と基準 3 を一緒に使うこともありうる。空隙があるかは構造からおおよそ予測がつくので、自動判定ができるはず(まだ無い)。
  • あえて言えば mlo_delta と mlo_w(§1)を動かすこともありうる。ただし細かく調整しても仕方がない。

誤差の測り方 — 窓の中での固有値のずれ ​

道具は SRC/exec/mlo_bandcheck.py <dir> ...。job_band の DFT のバンド(bnd*。SOC の物質は job_mlo_soc の段 1b が描くスピン軌道ありのもの、§4)と MLO のバンド(band_MLO_spin*.dat)を、 対称線の上の同じ で比べる(BZ 全体ではない)。窓は

で、 は mlo_delta(既定 2 eV)。 は模型を合わせる範囲の上端なので、評価も同じ範囲でする。金属は 。窓の中の固有値のずれを 2 つの向きで測る:

は窓の中の MLO の点の数。 は式 (10) の M と D を入れ替えたもの。 は DFT に無い帯(余計な帯)を、 は模型から抜けた帯を拾う。物質ごとの誤差(誤差の最大値)は

で、 を good、 を fair、 を marginal、それより上を poor と呼ぶ(eV)。 は対称線の上のギャップ。 絶縁体として扱うのは、SCF の k メッシュ(efermi.lmf)で が価電子帯の頂上にありギャップが 0.05 eV より大きく、 対称線の上でもギャップが 0.05 eV より大きいときだけ。

注意: 帯の対応は「同じ で最も近い帯」なので、帯の密な所では別の帯と組になって誤差を小さく見積もりうる。 1 点ごとの最大のずれは に入れていない(rms の 10 倍ほどになる。下の検査で見る)。§7 の量(mlo_losscheck.py、Samples/MLOsamples)とは別の道具である。

模型が壊れていないかの検査 ​

rms は、模型が数点の だけで壊れる場合(基準 2 の Cu・Ni、表 M5)を薄めてしまう。そこで mlo_bandcheck.py は次のどれかで FAIL を出す(job_mlo・job_mlo_soc は最後にこれを自動で回し、CHECK PASS / FAIL を表示する。DFT のバンドが無ければ飛ばす):

  1. 最大のずれ: 窓 (9) の中の 1 点ごとのずれ(式 (10) の 2 つの向き)の最大が 0.1 eV を超える(--fail-max)
  2. 線に沿った跳び: DFT の帯(bnd* の帯の番号)ごとのずれが、対称線の隣り合う の間で 0.1 eV を超えて変わる(--fail-jump)
  3. 帯のとげ(線形独立性の崩れ): 模型のバンドの各帯 の、対称線の上で隣り合う 3 点 での 2 階差分

が、窓 eV の中で 2 eV を超える(--fail-spike。帯は各 で並べ替える)。MLO が一次従属に近づくと、帯がその だけで跳ぶ(2026-10-02 から)。DFT のバンドが無くても模型だけで判定できる

式 (12) の値の目安(2026-10-02): 健全な模型は基準 1 の 63 物質で最大 0.56 eV(2H-SiC)、中央値 0.1 eV 程度(帯の交差の角)。 壊れた模型(生の MLO の模型に基準 2 の EH2 を Cu・Ni に足したもの)は 24 eV と 926 eV。

2026-10-02 までの判定 3は、MLO の重なり行列の最小固有値 が対称線の上で 0 以下、または中央値の 1/100 未満、だった (mlo が書く MLO_ovlpmin.dat)。模型が直交化した MLO(§6 の式 (7f))になって なので使わない。そのときの値: 基準 1 の 63 物質で 最小 0.20〜0.42(実空間で規格化した後)、基準 2 は EH と EH2 の重なりで下がり(Cu で中央値 )、壊れた Cu・Ni で負(実空間で打ち切った重なりの フーリエ和が正定値でなくなる)。いまは直交化の前のメッシュ上の値を mlo の出力(Smallest eigenvalue of the normalized raw overlap)で見られる(基準 1 の 63 物質で 0.22〜0.31)。

検査の結果(直交化した MLO の模型、2026-10-02。§6 の表 M8 と同じ DFT): 基準 1 の 63 物質で PASS 55。FAIL の 8 物質(AlN・AlSb・InSb・MgS・MgSe・MgTe・Sn・SiO₂)は 生の模型でも同じ値で FAIL で、基準 2(陽イオンに EH2)にすると AlN・AlSb・InSb・MgS・MgSe・MgTe・Sn は PASS(最大のずれ 0.007〜0.049 eV)、SiO₂ は基準 3(空格子球)で 0.005 eV。 生の模型で壊れた Cu・Ni の基準 2 は、直交化した模型では PASS(0.045、0.055 eV)。重なりを内挿しないので、上の崩れ方が起きない。EuO の基準 2 は模型を作る所で止まる (Hreduction の規格化の確かめ、前と同じ)。2026-10-01 の生の模型での集計(65 物質: 基準 1 は 55 PASS、基準 2 は 59 PASS)は研究ログ 2026-10-01。

結果 ​

表 M4. 式 (11) の判定の数(65 物質)

模型物質goodfairmarginalpoor
旧既定(2026-10-01 まで。浅い局所軌道は eV より上だけ、EH と入れ替え)6544759
基準 16553714
基準 2(このときは遷移金属・4f の原子にも入れた)6459203
基準 31(SiO₂)1000
物質ごとに一番良いもの6563200

表 M5. 基準 1 が good でない物質と、基準を変えると問題が出た物質(eV)。ギャップは DFT の(k メッシュと対称線の上の小さい方)、 、 は式 (11)

物質ギャップ基準 1: 基準 1: 基準 2: 基準 2: 基準 3: (基準 1 / 2 / 3)
MgS3.327+0.1150.115−0.0000.00318 / 22
MgSe2.498+0.1520.152+0.0000.00518 / 22
MgTe2.304+0.2870.287+0.0020.00618 / 22
ZnTe1.033+0.0380.038+0.0010.00418 / 22
CdTe0.516+0.0370.037+0.0000.00318 / 22
AlN(wz)4.335+0.0110.052+0.0000.00826 / 34
2H-SiC2.154+0.0210.021+0.0000.01026 / 42
AlSb1.148+0.0090.020+0.0020.00818 / 22
Sn(LDA で金属)金属0.0240.00618 / 26
C4.156−0.0380.038−0.0080.0248 / 16
Bi₂Te₃(SOC)金属0.0260.02145 / 53
SiO₂(β クリストバライト)5.437+4.0554.055+0.7290.7290.00134 / 42 / 42
Cu金属0.0100.7949 / 13
Ni金属0.0080.3159 / 13
EuO1.232−0.0000.002止まった23 / —
  • 基準 2 で良くなるのは空隙の大きい s,p の化合物(MgX・ZnTe・CdTe・AlN・2H-SiC・AlSb・Sn)。C は 0.038 → 0.024 で good に届かない。 Bi₂Te₃ は基準 1 も 2 も fair だが、抜けた帯・余計な帯は無く、ずれが帯全体に小さく広がるだけで問題ではない。
  • SiO₂ は基準 3 が要る(図 M1)。β クリストバライトの Si は隙間の多いダイヤモンド網で、伝導帯の底は網の空隙に広がった状態にある。 原子の上の関数(基準 1 の EH、基準 2 の EH2)では表しきれず、伝導帯の底が模型から抜ける(基準 2 では MLO の伝導帯が約 0.7 eV 上に浮く)。 空隙 2 か所(立方体の単位で ½(111) と ¾(111)、空隙の半径 4.3 a.u.)に a.u. の空格子球を置き、その s,p をシードに加えると 0.001 eV になる。
  • 基準を変えると問題が出たケース(Cu・Ni・EuO)。基準 2 で遷移金属・4f の原子にも EH2 を入れたもの: Cu・Ni は Γ–X の 2〜3 点の だけで MLO の帯が eV に集まり、その の DFT の帯が模型から抜ける(図 M3)。 EuO は job_mlo の Hreduction が PMT completeness loss too large で止まる。同じ原子の EH と EH2 をどちらもシードにすると、 PMT の固有ベクトルが一次従属に近い向きを落とす(zhev_tk4 の oveps)ので、シードのノルムが減る。減りが 1 % を超えると止める (m_hreduction の NormalizationCheck、1 % 未満なら規格化し直して進む)。どれも、基底の MLO シードから作られるバンドの 線形独立性が壊れることが原因だと思われる(EuO は止まった判定がそれを示す。Cu・Ni は未確認)。基準 2 で遷移金属・4f・5f の原子を除くのはこのため。

SiO2

図 M1. SiO₂(β クリストバライト)。左から基準 1・基準 2・基準 3。灰の線が DFT、赤の × が MLO、斜線が式 (9) の窓。 橙の点は 0.1 eV 以内に MLO の帯が無い DFT の点(模型から抜けた帯)、黒丸は 0.1 eV 以内に DFT の帯が無い MLO の点(余計な帯)。図 M1〜M3 に描いた数値は同じ名前の .npz(mlo/MATERIALS_*.npz、ecalj の Samples/MATERIALS/mlocheck/gallery.py が書いたもの)。

MgTe

図 M2. MgTe(閃亜鉛鉱)。左が基準 1、右が基準 2。基準 1 では伝導帯の底が浮き(黒丸)、DFT の帯が抜ける(橙)。記号は図 M1 と同じ。

Cu

図 M3. Cu。左が基準 1、右が基準 2(Cu に EH2 を入れたもの)。Γ–X の途中の 2〜3 点の だけが崩れる。記号は図 M1 と同じ。

記録 — 旧既定と手で足した模型 ​

表 M6(記録). 旧既定(表 M1 の 2026-10-01 までの扱い)の模型と、手で動径関数を足した模型(2026-10-01、LDA、Samples/MATERIALS)。mlo_lm3 の行は今の基準 1 で自動になった。ギャップの差は MLO − DFT(eV)、 rms は MLO → DFT / DFT → MLO(eV)。窓は MLO → DFT が [VBM − 8, CBM + 3]、DFT → MLO が [VBM − 8, CBM + 1] eV(2026-10-01 17:54 までの評価。今の mlo_bandcheck.py は両方とも [VBM − 8, CBM + mlo_delta])。全物質の表は ecalj の Samples/MATERIALS/MLOcheck_20261001*.tsv

物質既定: ギャップの差既定: rms足したもの足した後: ギャップの差足した後: rms
GaN(wz)+0.3340.164 / 0.175mlo_lm3 Ga 3d+0.0000.008 / 0.002
InN(wz、LDA で金属)—0.234 / 0.255mlo_lm3 In 4d—0.003 / 0.002
EuO+0.0200.049 / 0.055mlo_lm3 Eu 5p−0.0000.004 / 0.001
LaGaO₃+0.0790.073 / 0.101mlo_lm3 Ga 3d、La 5p−0.0050.003 / 0.003
SrVO₃(金属)—0.060 / 0.074mlo_lm3 Sr 4s・4p、V 3p—0.003 / 0.001
MgTe+0.2870.091 / 0.069mlo_lm2 全原子の s,p+0.0000.004 / 0.001
AlN(wz)+0.0110.061 / 0.038mlo_lm2 全原子の s,p−0.0000.011 / 0.008
SiO₂(β クリストバライト)+4.0550.028 / 0.695mlo_lm2 全原子の s,p+0.0450.047 / 0.015

再現のしかた ​

  • 入力: ecalj の Samples/MATERIALS/<物質>/ctrlg.<sname>.toml(README の表 1)
  • 回し方: Samples/MATERIALS/mlocheck/。prep.py が [mlo] を書き、run_one.sh が lmfa → lmf → job_band → job_mlo(SOC は run_soc.sh)を回す
  • 評価: mlo_bandcheck.py <dir> ... --json out.json(式 (9)〜(11))
  • 一覧のページ(表 M4・M5 と全物質のバンドの図): Samples/MATERIALS/mlocheck/gallery.py <出力先>。図に描いた数値は page_data/*.npz に書く

GW1500 の標準処方 — QSGW80 の模型 ​

GW1500 のデータベース(QSGW80 のバンド)の全物質に、同じ処方で MLO の模型を作る。物質ごとに手で調整はせず、次の規則だけで決める。

表 M7. 標準処方の規則

何を決めるか規則理由
1空格子球(ES)すき間の半径(最も近い MT 球の表面までの距離)の極大が 3.0 a.u. 以上、分子性の結晶では 2.0 a.u. 以上なら、計算の前に ES を置く。ワイコフの軌道ごとに丸ごと置き(対称性を下げない)、半径はすき間の 0.9 倍(上限 3.5 a.u.、軌道の中の距離と格子の最短ベクトルの半分まで)、重ならないものだけ。基底は半径 3.0 a.u. 以上で s,p、未満で s だけ。板(真空の層のある構造、2026-10-08 から、規則 es-d): 両方の表面の外に積層を 1 層延ばした ES に加えて、真空を ES の層で埋める(層と層の空きは 2 a.u. 程度以下)。板の ES は全部 s,p真空準位につながる、すき間に広がる状態は原子の上の関数では表せない。3.9 a.u. 以上の ES では LDA が壊れた例がある。ES 同士が重なると積基底の重なりの行列が正定値でなくなり、GW が止まる。対称性を壊すと GW が重くなり、バンドの図もおかしくなる。軌道の数が計算時間を決めるので d は付けない。基底が変わるので LDA から回し直す
2基準 1gwinit の [mlo](Ne まで s,p、Na から s,p,d、4f の原子は f、ES は s,p)
3半内殻の局所軌道帯の上端が eV より上、またはその下に模型の帯があるなら模型に加える。窓の中( eV より上)の d は EH の関数と入れ替えるnskip で落とせるのは模型のどの帯よりも下の帯だけ。窓の中の s,p の半内殻(Cs 5p)は EH(Cs 6p)が伝導帯を作るので残す
4基底を足す基準 1 が PASS でなければ、EH2 の s,p を陽イオンに足した版と、遷移金属・4f・5f 以外の全原子に足した版も作る。それでも PASS でなく、K・Ca・Rb・Sr・Cs・Ba・Cu・Ag・Au を含むなら、3 つ目の版として、全原子の EH2 の s,p に加えて K〜Ba に EH2 の d、Cu・Ag・Au に EH2 の s,p を足す。判定の良い版を採る(同じなら単純な方。FAIL どうしならずれの小さい方)イオン性の強い物質の伝導帯は陽イオン(と陰イオン)の外に広がった状態で、MTO 1 組では足りない。K〜Ba は空の d が伝導帯に広く出る(Cs₂S₂ 0.44 → 0.05 eV)。貴金属は d が沈み、伝導帯が s,p(CsCu₃O₂ 0.30 → 0.01 eV)。良い方を採るので、壊れる物質(Cu の金属など)でも悪くならない
5判定PASS: 窓 eV で最大のずれ ≤ 0.1 eV(跳び・壊れた帯なし)。OK: CBM + 1.5 eV までは PASS で、窓全体で ≤ 0.2 eV。FAIL: それ以外窓の上端は分散の大きい帯が入ってきてずれやすい

GW1500 のデータベースの値は、その時の MT 半径の上限で計算した(H は上限なし、Rb・Cs は 2.8 a.u.)。2026-10-07 から ctrlgenToml.py は H を 1.4、Rb・Cs を 2.4 a.u. に抑えるので、 今の ecalj で回し直すと H・Rb・Cs を含む物質(135)は少しずれる(LDA の試験でギャップの差 0.014 eV 以下。Rb₂Sc₂O₄ のような偽の準位は消える)。偽の準位(縮退の相手のいないバンド)の例と上限の決め方は mtradius.md。

GW の k 点は、間隔の規則で 3 段(low・middle・high が Si の 4×4×4・6×6×6・8×8×8、ctrlgenToml.py --gwk)にする予定(2026-10-05 の GW1500 の回し直しは一律 4×4×4)。

分子性の結晶は、共有結合半径の和の 1.2 倍で結合をたどったとき、無限につながる塊が無く、孤立した原子も無い構造(ecalj_auto/gw1500_molecular.py)。

回し方:

  1. QSGW80: ecalj_auto/gw1500_rerun.sh (POSCAR → ctrlgenToml.py --ssig=0.8 → ES_RMIN=auto なら gw1500_addes.py で ES → gwscconv → job_band)。 規則で置けない ES は手で置く: ES_CUSTOM_DIR の ctrlg.<mpid>.toml に E* の [[site]]・[[spec]] を書けば gw1500_addes.py がそれを使う。 空隙を探すのは ctrlg_addes.py <sname> --rmin <a.u.> [--rfloor <a.u.>] [--rsp <a.u.>] --dry-run(--rfloor: 軌道ごとに置く ES の半径の下限、既定 1.5 a.u.。 空隙はあっても ES がこれより小さくなる軌道は置かない。そのときは空隙の数と大きさを表示する)。板(規則 es-d)は、表面の外の ES "E" と真空の中央の ES "E2" を 手で置いた入力から ecalj_auto/gw1500_es_slab_layers.py <in> <out> [--r 2.6] [--nlayer 1] で層 "E3" を足し、全部の ES を s,p にする(重なりを確かめる)
  2. MLO: ecalj_auto/gw1500_mlo_std.sh <src> <out> [np]。 <src> は 1 の PlotBand/ に QSGW の最後の efermi.lmf を足したもの。版ごとに gw1500_mlo.sh([mlo] を今の gwinit で書き直し、 job_mlo、mlo_bandcheck.py、gw1500_mlo_grade.py)を回し、採った版と判定を best.txt に書く。ctrlg の [ham] scaledsigma = 0.8 により QSGW80 の模型になる
  3. 模型の行列(HamRsMLO、__HamiltonianPMT)は 1 物質で数百 MB なのでデータベースには入れない。2 を回し直せば同じものができる

GW1500 の結果と評価(2026-10-07) ​

QSGW80: 1546 物質のうち 1545 に値がある(N 1297、E 240、R 7、M 1。記号はデータベースの表紙の「Conditions」)。値の無い 1 つは Rb₈(mp-1179832。原子を大きな胞に間隔を置いて並べたもので、大きすぎる)。条件が整えば QSGW80 そのものが失敗した物質は無い。 前の回の失敗は、5 月の TF32 の精度、k 点、重なった・大きすぎる ES から来ていた。

ES: 240 物質に表 M7 の規則 1 で置いた。規則は途中で 2 度変わったので、値ごとにその時の規則を書いてある(表 M9)。 入力の全件で、ES と他の球の重なりは無い(2026-10-07 に確かめた)。規則でうまくいかなかった 7 物質は手で置いた(表 M10)。 板と真空の構造(表面のすぐ外に積層を延ばして置き、真空の中央にも置く)と分子性の結晶(2.2〜2.5 a.u. の小さい ES)の規則化はこれから。

表 M9. ES の規則の版(データベースの gw1500db.tsv の version の列)

版いつから中身物質
es-a2026-10-05 00:00ワイコフの軌道ごと、すき間の 0.9 倍(上限 4.0 a.u.)。距離は分数座標ごとに折り返して測った(斜めの胞で重なりうる)63
es-b2026-10-06 12:12距離を最も近い像で測り、格子の最短ベクトルでも抑える4
es-c2026-10-06 13:09es-b で半径の上限を 3.5 a.u. に171
es-d2026-10-07 23:50板: 表面の外の ES と、真空を埋める ES の層(空き 2 a.u. 程度以下)、全部 s,p。いまは手で置く(es_custom、層は ecalj_auto/gw1500_es_slab_layers.py)。ctrlg_addes.py に入れるのはこれから2

表 M10. 手で ES を置いた物質(es_custom/ctrlg.<mpid>.toml を gw1500_addes.py が取り込む)

物質置き方なぜ
C₃N₄ mp-570572ctrlg_addes.py --rmin 1.8、層の間に 3 つ(2.96、2.54、2.30 a.u.)規則では置かれず、窓の上端の Γ の状態を模型が取れなかった
N₈ mp-1542.5 a.u.、s だけ規則の 3.45 a.u. では 10 反復でギャップが出なかった
C₄O₄ mp-118752.5 a.u.、s だけ規則の 3.5 a.u. ではギャップが 7.7〜9.6 eV で振れた
K₄BeP₂ mp-98722.2 a.u. を 1 つ規則の 2.9 a.u. では大きい K の球の間で LDA が壊れた
PbS mp-726184(板)両方の表面のすぐ外(2.6 a.u.)と真空の中央(2.9 a.u.)真空の中央だけでは伝導帯の下端の状態(表面のすぐ外にしみ出す)を取れなかった
SnS mp-554134(板、規則 es-d)両方の表面の外(1.9 a.u.)、両側にもう 2 層(1.9 a.u.、表面の ES の組が近いので小さく)、真空の中央に 2 つ(2.65 a.u.)の 14 個、全部 s,p表面の外と中央だけ(s)では FAIR 0.24 eV、es-d で PASS 0.007 eV
PbS mp-561320(板、規則 es-d)両方の表面の外(2.35 a.u.)、両側にもう 1 層(2.6 a.u.)、真空の中央(3.0 a.u.)の 9 個、全部 s,p表面の外と中央だけ(s)では、真空の空いた層(約 4 Å)に広がった一本を模型が取れなかった(0.38 eV)。表 M11

MLO: 1546 物質で PASS 1539、FAIR 3、OK 2、SKIPPED 2(2026-10-09)。採った版は b1 989、b2 420、b2all 107、b2d 28、手作り 1(固体 H₂ の x_s_only: H の s、EH2 の s、ES の s だけ。処方の EH2 の p で MLO の重なりの行列が特異になった)。FAIR(最大のずれ 0.3 eV 以下、 データベースの表示だけの区分。提示してよい)は H₂ 0.11、H₈ 0.15、BN mp-685145 0.24 eV(シートの間の 2.56 a.u. の空隙に小さな ES 1.25 a.u. を置くと、かえって価電子帯で 0.55 eV 外れた。2026-10-09)。FAIL は無い。 SKIPPED は Rb₈ と Sr(mp-1056418、1 原子で 462 ų の胞)。

表 M11. 板の ES の入れ方と MLO(PbS mp-561320、真空 19.4 Å。QSGW80、MLO の標準の処方の b1。外れは CBM + 1.8 eV の真空の一本、2026-10-08)

ESQSGW80 のギャップ (eV)MLO の最大のずれ (eV)
表面の外 4 個(2.35 a.u.)と中央 1 個(3.0 a.u.)、s だけ4.1520.377 FAIL
同じ位置、全部 s,p4.1510.330 FAIL
真空を埋める層を両側に足して 9 個、s だけ4.1500.033 PASS
同じ 9 個、全部 s,p(採った版)4.1490.006 PASS

効くのは真空を ES の層で埋めることで、p だけでは直らない。層で埋めたうえで p を足すと、さらに一桁良くなる(表面の外の状態は面の法線の方向の形、p_z を持つ)。 ギャップは ES の入れ方によらない。同じ型の SnS mp-554134(真空 19.5 Å)も、この規則で FAIR 0.24 → PASS 0.007 eV(2026-10-09)。

模型がうまくいかなかったものの多くは、比べる相手の QSGW80 のバンドの側の問題だった。ES の無い真空・すき間に広がる状態と、 大きな MT 球の偽の準位(Rb₂Sc₂O₄、mtradius.md)である。基底が足りなかったのではない。

読むときの注意: 菱面体の黒鉛型の炭素などは、8×8×8 のメッシュではギャップがあるが、バンドの道筋の上では交差する半金属(path-metal、5 物質)。 バンドの端がメッシュに無い物質(53)は、本当のギャップが道筋のギャップに近い(path<mesh(mesh))。条件の違う値の差が 0.2 eV を超えるもの(CHECK、100)は 参考に残した。多くは 5 月の値 M との差。図の DOS の欄は 2026-10-07 まで だけずれていた(10-03 に公開した版の図。ギャップとバンドは正しい)。


経緯(記録) ​

この方法に至るまでの経緯 — 5 つの mlo_method が実は同じ一本の式だったこと、 原本サンプルが何をしていたか、床を に置いた中間段階、 最終形に至る 3 つの設計判断の実測根拠、および途中で見つかった評価器と m_hreduction.f90 のバグ — は別頁にまとめてある:

MD/mlo_backup.md

本文の結論を読むだけなら不要だが、なぜこの式なのかを疑うときはそちらを見よ。