ポスト SCF 法:RI-MP2#

Hartree–Fock は平均場法です:各電子は他電子の平均場しか感じないので、 電子が瞬間的に互いを避けるさまを外します。その欠けた効果のエネルギーが相関エネルギーで、それを回収するのが ポスト SCF(ポスト Hartree–Fock)法の仕事です。本章は qc-rs が現在実装する系列 — RI-MP2 とそのスピン スケール変種 — を扱います。

理論:相関と 2 次摂動論#

Part II の定義を思い出しましょう:

\[ E_{\text{corr}} = E_{\text{exact}} - E_{\text{HF}} \;<\; 0 . \]

全エネルギーに対しては小さな割合ですが、化学的には決定的 — 結合エネルギー・反応障壁・分散はすべてそこにあります。 それを見積もる最も安価で系統的な方法が **2 次 Møller–Plesset 摂動論(MP2)**です:真の電子間反発と HF 平均場の 差を摂動として扱い、2 次のエネルギー補正を取ります。閉殻では

\[ E^{(2)} = \sum_{ij}^{\text{occ}} \sum_{ab}^{\text{virt}} \frac{ (ia\,|\,jb)\,\big[\,2(ia\,|\,jb) - (ib\,|\,ja)\,\big] } { \varepsilon_i + \varepsilon_j - \varepsilon_a - \varepsilon_b } , \]

占有(\(i,j\))と仮想(\(a,b\))軌道にわたる二電子積分 \((ia|jb)\) を軌道エネルギー分母で割った和です。括弧内の 2 項が 異スピン同スピンの寄与で、qc-rs はこれらを別々に報告します(e_os, e_ss)。これが下のスピンスケール 変種を可能にします。

RI(「密度フィッティング」)近似#

ボトルネックは 4 指標積分 \((ia|jb)\) です。恒等分解(RI)、すなわち密度フィッティング近似は、これを補助基底 (より小さな専用フィッティング集合)を介して分解し、4 指標を 3 指標の積に変えます。これが qc-rs の 唯一の MP2 経路です(速く正確で、フィッティング誤差は化学的精度をはるかに下回ります)。だから qc.chk.new(...)ric=相関フィッティング補助基底を渡します。

使い方#

MP2 は LCT 法です(SCF 参照の上に載る相関法群を lct が扱います)。先に SCF を走らせ、lct ステップを足します:

import qc
water = "O 0 0 0.117; H 0 0.757 -0.469; H 0 -0.757 -0.469"

hf = qc.chk.new(atom=water, ao="cc-pvdz", unit="angstrom",
                ric="cc-pvdz-ri/mp2fit").scf(ref="r").run()   # ric= 補助基底に注意
m  = hf.lct(method="mp2").run()

m.lct.energy    # -76.230747   全 MP2 エネルギー(E_HF + E_corr)
m.lct.e_corr    # -0.203953    相関エネルギー
m.lct.e_os      # 異スピン部分
m.lct.e_ss      # 同スピン部分

ric= 補助基底(ここでは cc-pvdz に合わせた相関フィッティング集合 cc-pvdz-ri/mp2fit)は必須です — RI-MP2 に 非 RI のフォールバックはありません。補助は軌道基底に合わせて選びます(cc-pvtzcc-pvtz-ri/mp2fit、def2 系 → その def2-*/mp2fit)。

Tip

RI-MP2 の精度は? RI フィッティング誤差はごくわずかです。この 水/cc-pVDZ では、qc の RI-MP2 相関エネルギー(−0.203953)は従来型 (非 RI)MP2 と 1.5 × 10⁻⁵ Ha で一致 — 化学的精度(〜1.6 mHa)をはるかに下回ります。

スピン成分スケール変種#

MP2 は相関をわずかに過大評価するため、異/同スピン部分の 2 つの経験的な再スケーリングが、追加コストなしで精度を 改善することがよくあります — method を変えるだけです:

scs = hf.lct(method="scs-mp2").run().lct.energy    # -76.226839   SCS-MP2 (Grimme)
sos = hf.lct(method="sos-mp2").run().lct.energy    # -76.224885   SOS-MP2 (同スピンを落とす、O(N⁴))
  • scs-mp2 は異・同スピンを異なる係数(⅚ と ⅓)でスケールします。

  • sos-mp2 は異スピン項だけを残し(1.3 倍)、O(N⁴) の Laplace アルゴリズムを可能にします。

開殻と frozen core#

RI-MP2 は RHF・UHF・ROHF 参照で動きます(開殻ラジカルはその UHF/ROHF 軌道を使います)。frozen-core 近似(化学的に不活性な内殻軌道を相関和から除く、この分野の通常の既定)やその他の調整は lct.* 下の iop キー です — 例 iop={"lct.frozen_core": True}IOP リファレンス に記載。

注釈

現在実装されているもの RI-MP2 系列mp2 / scs-mp2 / sos-mp2)は実際のエネルギーを計算します。他の lct 法(cc2)、 多参照法(casscf, caspt2, nevpt2, fci, dmrg)、励起状態 td は認識されますがモックです(実相関 エネルギーなしにワークフローだけ組みます)。本章は実数値を出す手法を扱います。

総合例:相関エネルギー#

import qc
water = "O 0 0 0.117; H 0 0.757 -0.469; H 0 -0.757 -0.469"

hf = qc.chk.new(atom=water, ao="cc-pvdz", unit="angstrom",
                ric="cc-pvdz-ri/mp2fit").scf(ref="r").run()
print(f"E(RHF)     = {hf.scf.energy:.6f}")            # -76.026794

for method in ("mp2", "scs-mp2", "sos-mp2"):
    e = hf.lct(method=method).run().lct.energy
    print(f"E({method:8}) = {e:.6f}")
# E(mp2     ) = -76.230747   (E_corr = -0.203953)
# E(scs-mp2 ) = -76.226839
# E(sos-mp2 ) = -76.224885

相関を加えると RHF エネルギーは約 0.20 Ha 下がります — 全体に対しては小さいですが、これが結合エネルギーや反応 熱化学を正しくする部分です。

練習 5

  1. hfric= なしで作って hf.lct(method="mp2").run() を呼びました。何が問題で、SCF が要らなかったのに MP2 がそれを必要とするのはなぜですか。

  2. m.lct.e_osm.lct.e_ss から、素の MP2 相関エネルギーをどう再構成しますか。そして SOS-MP2 は e_ss に 何をしますか。

RI-MP2 は 1 つの構造での相関エネルギーを与えました。平衡構造と力を求めるため、次章 は 解析的勾配と構造最適化に進みます。