チュートリアル: DFT 構造最適化から物性まで#
このチュートリアルは Part I を 1 つの現実的な課題でまとめます:分子の大まかな推定から出発し、DFT に平衡構造を 見つけさせ、その構造を解析します。これは量子化学研究の日常の形です — 最適化してから解釈する。数値を 確かめやすいよう、ここでも水を使います。
最後まで進めば、中核概念 のチェックポイント/ステップ/実行モデルを、複数ステップの計算で使った ことになります。
ステップ 1 — (わざと不完全な)分子を作る#
悪い推定から始めます:明らかにずれた O–H 距離と角度。最適化の目的は、それを直すことです。
import qc
mol = qc.chk.new(
atom="O 0.00 0.00 0.00; H 0.00 0.80 0.55; H 0.00 -0.80 0.55", # 粗い、平衡ではない
ao="def2-svp",
unit="angstrom",
)
ステップ 2 — DFT で構造最適化#
SCF ステップ(B3LYP)を追加し、それに .opt() を付けて実行します。.opt() はエネルギーとその勾配
(各原子にかかる力)を繰り返し計算し、力が消えるまで核を坂下へ動かします — それが平衡構造です。
mol = mol.scf(ref="r", xc="b3lyp").opt().run()
print("converged:", mol.opt.converged) # True
print("energy :", round(mol.opt.energy, 6)) # -76.358316 (hartree)
.run() は既定では沈黙します;run(log="stdout") を加えると最適化の進捗を流します — サイクルごとの
エネルギーとその勾配の表で、数ステップ後に Converged! で終わります。(同じ log= スイッチがあらゆる実行を
制御します;log_style="modern"/"orca" で見た目を変え、plot=True で軌跡をインライン描画 —
クイックスタート の tip と ログと出力 参照。)最適化された水は
O–H 結合長 ≈ 0.967 Å(粗い推定の 0.97 前後から、今度は両側で整合)、
H–O–H 角 ≈ 103.1° — 実験値 104.5° に近く、B3LYP/def2-SVP の典型的な結果。
注釈
ワークフロー的には何が起きたか
.scf(...).opt() は連結した 2 つの pending ステップを追加し、.run() がそれらを解決 — 各最適化サイクルは、
少し動いた構造での SCF です。最後のチェックポイント mol は、最適化された構造とその電子状態を保持し、
解析の準備が整っています。
ステップ 3 — 最適化構造を解析する#
最適化されたチェックポイントに物性を尋ねます。まず Mulliken 原子電荷:
q = qc.prop.chrg.mulliken(mol)
print(q["charges"]) # [-0.2945, 0.1472, 0.1472]
酸素が負、水素が正 — 水のおなじみの極性です。この極性は双極子モーメントで定量化できます:
mp = qc.prop.mpol.molecular(mol)
print(round(mp["dipole_magnitude_debye"], 2)) # 2.00 (debye)
約 2.0 D の双極子は水として妥当です(実験値 ≈ 1.85 D;差は基底関数と手法によるもので、 基礎 のテーマです)。
全体像#
まとめると、この研究は 7 行です:
import qc
mol = qc.chk.new(
atom="O 0.00 0.00 0.00; H 0.00 0.80 0.55; H 0.00 -0.80 0.55",
ao="def2-svp", unit="angstrom",
).scf(ref="r", xc="b3lyp").opt().run()
print("E =", round(mol.opt.energy, 6), "hartree, converged:", mol.opt.converged)
print("charges =", qc.prop.chrg.mulliken(mol)["charges"])
print("dipole =", round(qc.prop.mpol.molecular(mol)["dipole_magnitude_debye"], 2), "D")
これで「最適化してから解析する」ワークフローが完結です:分子を入れると、平衡構造とその物性が出てきます。
学んだこと、そして次へ#
あなたは今:
分子を作り、手法と基底関数を選び;
ステップを連結し(
scf→opt)実行し;結果を読み(
mol.opt.energy)物性を計算しました(mulliken、双極子)。
これが qc-rs の中心的なループです。Hartree–Fock と DFT が実際に何を計算しているのか — そしてなぜ双極子が 少し大きく出たのか — を理解するには、Part II — 基礎 を読んでください。個々の ステップを深掘りするには、ユーザーガイド に各章があり、最後は完全な 分子物性スイート です。