原子電荷と結合次数#

「酸素にどれだけ負電荷があるか」「これは単結合か二重結合か」は化学で最もよくある問いの 2 つ — そして最も 微妙な2 つでもあります。なぜなら原子電荷も結合次数も量子力学的な観測量ではないからです。これらは分割の スキーム:分子の密度を原子と原子対に分ける処方箋です。qc-rs は多数を実装しており、本章はそれらの計算方法と、 違いの読み方を示します。

理論:なぜ電荷スキームがこんなに多いのか#

電子密度 \(\rho(\mathbf r)\) は実在で一義的ですが、「原子 A の電荷」を言うには、原子 A がどこで終わり原子 B が どこで始まるかを決めねばならず — 一意な答えはありません。スキームごとに選択が違います:

  • 軌道ベース(Mulliken, Löwdin):密度をどの原子の基底関数が担うかで分ける。単純で速いが、基底依存 (特に Mulliken)。

  • 密度ベース(Hirshfeld, MBIS, VDD):原子参照密度を使って実空間を分割する。より頑健で基底安定。

  • 静電ポテンシャルフィット(MK/ChelpG/RESP):分子の ESP を最もよく再現する電荷を選ぶ — 力場パラメータ化に 最適。

  • 自然母集団(NPA):自然原子軌道から;基底安定で広く使われる。

「正しい」スキームはなく、各々わずかに異なる問いに答えます。教訓は目的に合ったものを 1 つ選び、一貫させる こと、そして最後の桁を過剰解釈しないことです。

原子電荷#

各スキームは qc.prop.chrg の leaf です。素の原子ごと配列を返すものと、"charges" フィールドを持つより豊かな レコードを返すものがあります:

import qc, numpy as np
water = "O 0 0 0.117; H 0 0.757 -0.469; H 0 -0.757 -0.469"
m = qc.chk.new(atom=water, ao="cc-pvdz", unit="angstrom").scf(ref="r").run()

np.asarray(qc.prop.chrg.hirshfeld(m))          # 配列: [-0.3219, 0.161, 0.161]
qc.prop.chrg.mulliken(m)["charges"]            # レコード: [-0.3056, 0.1528, 0.1528]
qc.prop.chrg.npa(m)["charges"]                 # [-0.9136, 0.4568, 0.4568]

水の酸素はどのスキームでも負、水素は正 — 定性的な描像は頑健です — が、大きさは処方箋で大きく変わります:

スキーム

qc.prop.chrg.

O 電荷

H 電荷

特徴

Löwdin

lowdin

−0.094

+0.047

軌道、対称化

Mulliken

mulliken

−0.306

+0.153

軌道、基底に敏感

Hirshfeld

hirshfeld

−0.322

+0.161

密度、「ストックホルダー」

CM5

cm5

−0.658

+0.329

Hirshfeld + 経験的補正

ADCH

adch

−0.731

+0.365

原子双極子補正 Hirshfeld

MBIS

mbis

−0.862

+0.431

最小基底反復ストックホルダー

NPA

npa

−0.914

+0.457

自然母集団

同じ酸素で −0.09 から −0.91 という広がり — これこそ、どのスキームを使ったかを明記すべき理由です。一連の分子で 比較するなら、密度ベース(Hirshfeld/MBIS)または NPA が Mulliken より安全な選択です。

結合次数#

結合次数は 2 原子間で共有される電子対の数を定量します。2 つの主力が qc.prop.bond にあり、各々、原子–原子の "matrix" 全体と原子ごとの "valence" を返します:

mayer = qc.prop.bond.mayer(m)
mayer["matrix"][0, 1]     # 1.0207   O–H の Mayer 結合次数
mayer["valence"][0]       # 2.041    酸素の総原子価(≈ 2 結合)

qc.prop.bond.wiberg(m)["matrix"][0, 1]   # 1.1886   O–H の Wiberg 結合次数

O–H の Mayer 結合次数は ~1.02 — 化学が期待するとおりの単結合で、酸素の原子価 ~2.04 は 2 本の O–H 結合を正しく 反映します。Wiberg(直交化/NAO 基底で計算)はわずかに異なる 1.19 を与えます。qc.prop.bond には fuzzy 原子・ multicenter(非局在/芳香族結合用)・IBSI・非局在化指数の結合尺度もあります。

総合例:電荷と結合を一緒に#

import qc, numpy as np
water = "O 0 0 0.117; H 0 0.757 -0.469; H 0 -0.757 -0.469"
m = qc.chk.new(atom=water, ao="cc-pvdz", unit="angstrom").scf(ref="r").run()

print("Hirshfeld charges:", np.round(np.asarray(m.prop.chrg.hirshfeld()), 3))   # [-0.322 0.161 0.161]
print("NPA charges      :", np.round(np.asarray(m.prop.chrg.npa()["charges"]), 3))
print("O–H Mayer BO     :", round(m.prop.bond.mayer()["matrix"][0, 1], 3))       # 1.021

練習 10

  1. 2 本の論文が水の酸素電荷を −0.31 と −0.91 と報告しています。両方正しくありえますか。それらを整合させる 1 つの 情報は何ですか。

  2. 古典力場をフィットしていて点電荷が必要です。どのファミリの電荷スキームを使うべきで、なぜ Mulliken では ないのですか。

  3. 水の酸素の Mayer 原子価は ≈ 2.04 になります。この数は何を教え、なぜちょうど 2 でないのですか。

電荷と結合次数は密度を数値的に分割します。次章 は密度をトポロジー的に分割します — QTAIM と ELF が、密度そのものの形から原子・結合・孤立電子対を見つけます。