834 words
4 minutes
【計算化学】自作pythonモジュールで二次の鞍点構造を求めてみる(ホスフィン1分子)
最終更新:2025-06-01
概要
本記事では、自作モジュール(MultiOptPy)で、ホスフィン分子の二次の鞍点構造を算出してみる。電子状態計算ソフトウェアにPySCFを使用する。
MultiOptPyは電子状態計算ソフトウェアを用いた分子構造最適化手法の勉強を目的として作成したpythonモジュールである。
二次の鞍点とは、2つの基準座標ベクトル方向において負の曲率を示し、ほかの基準座標ベクトル方向では正の曲率を示す停留点のことである。
二次の鞍点は遷移状態とは異なり、特殊な場合を除き化学反応の理論的な議論に使われることはほとんどない。
MultiOptPyのレポジトリ:https://github.com/ss0832/MultiOptPy
使用した自作モジュールMultiOptPyのバージョン
1.9.7c
環境
WSL2 (Ubuntu-22.04)
Source codeのダウンロード
wget https://github.com/ss0832/MultiOptPy/archive/refs/tags/v1.9.7c.zip
unzip v1.9.7c.zip
cd MultiOptPy-1.9.7c
手順
二次の鞍点構造の算出
モデル反応系として、以下の構造を用意した。今回は名前をph3_sosp.xyz
とした。 以下のコマンドを実行して計算レベルHF/3-21G
で二次の鞍点構造を得た。
python optmain.py ph3_sosp.xyz -order 2 -fc 5 -func hf -bs 3-21g -opt rsirfo_bofill -pyscf -spin 0 -freq
-order 2
と指定することで二次の鞍点構造の最適化を行える。-opt rsirfo_bofill
は二次の鞍点構造を求めるために必要な最適化アルゴリズムである。-fc 5
は二次の鞍点構造を正確に求めるために重要である正確なへシアンを5回の反復計算当たりに1回計算することを示す。
初期構造を可視化すると以下のようになる。
4
0 1
P -4.27777757 0.05128205 0.00000000
H -3.82779301 -1.22151562 0.00000000
H -3.82776978 0.68767229 1.10227059
H -3.82776978 0.68767229 -1.10227059
40回程度の反復回数で以下のような二次の鞍点構造が得られた。
4
OptimizedStructure
P -0.104683832916 0.675406545200 -0.031662563394
H 0.136280643866 -0.879315661537 0.122291781715
H -0.008085757840 0.051414657494 1.244986286515
H -0.023511053111 0.152494458843 -1.335615504836
以下に-freq
オプションで生成されたnormal_modes.txt
の一部を示す。
Mode 0 1 2
Freq [cm^-1] -2672.4384 -1431.9730 446.5275
Reduced mass [au] 1.0275 1.0606 1.0258
Force const [Dyne/A] -4.3235 -1.2813 0.1205
Char temp [K] 0.0000 0.0000 642.4535
Normal mode x y z x y z x y z
P 0.02497 0.00387 0.00000 0.00617 -0.03983 0.00593 -0.00295 0.01903 0.01465
H 0.45190 0.07004 0.00004 -0.00992 0.06420 -0.32129 0.01162 -0.07455 -0.70718
H -0.64306 -0.09967 -0.00006 -0.11423 0.73683 0.27556 -0.01845 0.11904 0.04052
H -0.57624 -0.08932 -0.00005 -0.06555 0.42298 -0.13662 0.09751 -0.62922 0.21652
(...snip...)
その結果、虚振動が2つであることが確認できた。つまり、今回求めた構造は二次の鞍点構造であることが確認できた。
終わりに
自作モジュールで、電子状態計算モジュールであるPySCFを用いて、計算レベルHF/3-21G
でホスフィン分子の二次の鞍点構造を算出する手順を説明した。 二次の鞍点構造は特別な理由がない限り求める必要のない構造であるため、今回の記事は特に有益な情報を提供しているわけではない。あくまで自作モジュールでできることの1つとして記事を書いたつもりである。
参考
- https://github.com/pyscf/pyscf (PySCFのgithubのレポジトリ)
- https://github.com/ss0832/MultiOptPy (自作モジュールMultiOptPyのレポジトリ)
- https://avogadro.cc/ (Avogadro、分子構造可視化ツール)
- The Journal of Chemical Physics 2010, 132, 241102.
- The Journal of Chemical Physics 1991, 94, 751–760.
- In Classical and Quantum Dynamics in Condensed Phase Simulations; WORLD SCIENTIFIC: LERICI, Villa Marigola, 1998; pp 385–404.
- The Journal of Chemical Physics, 2020, 153, 024109.
- The Journal of Chemical Physics, 2022, 144, 214108.
【計算化学】自作pythonモジュールで二次の鞍点構造を求めてみる(ホスフィン1分子)
https://ss0832.github.io/posts/20250529_mop_sosp/