幾何解析#

すべての分子物性が電子密度から来るわけではありません。この最後の物性章は qc.prop の純粋に幾何学的な記述子 — 核位置(一部は van der Waals 半径も)だけから計算でき、波動関数にまったく触れない量 — を扱います。これらは qc-rs を回転分光学、充填/溶媒接触可能表面の推論、動径構造解析に結びつけます。

理論:慣性モーメントから回転定数へ#

剛体分子の回転エネルギー準位 — マイクロ波/回転スペクトルが測るもの — は、質量中心に対する核の質量と位置だけ から作られる慣性モーメントテンソルで決まります:

\[ I_{\alpha\beta} = \sum_A m_A\big(|\mathbf r_A|^2\delta_{\alpha\beta} - r_{A,\alpha}r_{A,\beta}\big). \]

\(\mathbf I\) を対角化すると 3 つの主慣性モーメント \(I_a\le I_b\le I_c\)\(\text{amu}\cdot\text{Å}^2\))が 得られ、各々が回転定数に変換されます:

\[ X = \frac{h}{8\pi^2 c\,I_X}, \qquad X \in \{A,B,C\}, \]

慣習的に GHz か cm⁻¹ で報告します。線形分子は自身の軸周りの慣性モーメントが \(I_a=0\) で、独立な回転定数は 2 つだけ;非対称コマ(一般の場合、例えば水)は 3 つとも異なり;対称コマは 2 つが等しい。これらの定数は まさに回転/マイクロ波スペクトルが直接測るもので、qc-rs の構造から計算することは「計算した構造」から「予測 される回転スペクトル」への橋であり、(Hessian と熱化学 と類似の質量重み 付き機構を使って)熱化学に入る回転分配関数でもあります。

使い方#

import qc
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="sto-3g", unit="angstrom").scf(ref="r").run()

rc = qc.prop.geom.rotational_constants(m)
rc["constants_ghz"]           # [822.15, 437.53, 285.56]  A, B, C(GHz)
rc["moments_amu_angstrom2"]   # [0.615, 1.155, 1.770]      I_a, I_b, I_c

水の 3 つの異なる回転定数は、それを非対称コマとして確認します — 屈曲した低対称の形と整合します。これは 収束した構造だけを必要とし波動関数は不要なので、最適化した構造でも打ち込んだままの構造でも同じように動きます (もっとも前者だけが本物の平衡スペクトルに対応します)。

その他の幾何記述子#

さらに 3 つの leaf が qc.prop.geom を締めくくり、いずれも波動関数ではなく核位置と van der Waals 半径から 作られます:

  • surface_area(mychk) — スケールした van der Waals 球の和集合から求めた分子(溶媒接触可能面様)表面積、 原子ごとの内訳つき。埋もれた面と露出した面が重要な 分散/溶媒和の推論に有用です。

  • free_volume(mychk) — バウンディングボックスを(いずれかの原子の vdW 球の内側の)占有体積と自由 体積に分割し、自由分率を報告します — 結晶や空洞に関連する充填密度記述子です。

  • rdf(mychk) — 選んだ中心の周りの原子の動径分布を、距離でビン分けします:クラスタや乱れた/拡張系で 「各種類の最近接原子までの距離」が自然な最初の問いになる場合に有用な構造フィンガープリントです。

sa = qc.prop.geom.surface_area(m)
sa["area_angstrom2"], sa["per_atom_angstrom2"]     # 全体 + 原子ごとの表面積

fv = qc.prop.geom.free_volume(m)
fv["free_fraction"]                                 # バウンディングボックスのうち空の割合

総合例#

import qc
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="sto-3g", unit="angstrom").scf(ref="r").run()

rc = qc.prop.geom.rotational_constants(m)
print("A, B, C (GHz):", [round(x, 2) for x in rc["constants_ghz"]])
print("I_a, I_b, I_c (amu·Å²):", [round(x, 4) for x in rc["moments_amu_angstrom2"]])
# A, B, C (GHz): [822.15, 437.53, 285.56]
# I_a, I_b, I_c (amu·Å²): [0.6147, 1.1551, 1.7698]

練習 19

  1. 線形の CO₂ と屈曲した SO₂ はどちらも三原子分子です。何も計算せずに、それぞれいくつの異なる回転定数を 持つか予想し、理由を述べなさい。

  2. rotational_constants は幾何だけを必要とします — SCF も、構造最適化に既に使った以上の基底選択も不要です。 なぜ波動関数をまったく必要としないのですか。

  3. 分子結晶の単位格子の内部がどれだけ「混み合っている」か知りたいです。それを表す単一の記述数値を与える qc.prop.geom の leaf はどれですか。

これで分子物性スイートの巡回は完結です — 電荷と結合から、トポロジーと弱い相互作用、反応性、軌道局在化、 静電気、そして今や幾何まで。Part III のこれまでの SCF・相関・勾配・環境の章と合わせて、日常の qc-rs ツールキット全体が揃いました。