- Python 3.10.12
- ORCA 6.0
- SINDO 4.0
以下のモジュールを使用します。(標準ライブラリは省略)
import numpy as np
import itertools
from concurrent.futures import ThreadPoolExecutor, as_completed- ORCA で分子の構造最適化を行う。
orca_minfo/main.pyを実行する。- ORCA のアウトプットファイルのディレクトリと、ファイル名(拡張子なし)を入力する。
output/ディレクトリに.minfoファイルが生成される。
minfo_QFF/main.pyを実行する。- 振動モードの次数 (
MR) を入力する。 output/ディレクトリにmakePESを実行するためのファイルrun_qff.shが生成される。- これを実行する。
- 振動モードの次数 (
QFF_xyz/main.pyを実行する。output/ディレクトリにmakeGRIDを実行するためのファイルrun_grid.shが生成される。- これを実行する。
grid/main.pyを実行する。- 初期設定では、Free の CPU コアを全て使用して並列処理するので注意。
- 以上の手順で、
output/ディレクトリ内に SINDO に必要なファイル が出力される。.minfo/pot/ディレクトリに.potと.dipole
.minfo ファイルには以下の情報が記述される。
以下のような形式で記述される:
4
N, 7, 14.00700, -0.00000979766170, 0.00000001023639, 0.15618266605276
H, 1, 1.00800, 0.93780599077684, -0.00000002171415, -0.25206416695381
...
- 最初の数値: 原子の数
- 各行のデータ:
- 元素記号
- 原子番号
- 原子量
- 座標 (X, Y, Z)
- Energy(エネルギー)
- Charge(電荷)
- Multiplicity (多重度)
- Gradient(勾配)
- Hessian(ヘシアン行列)
- Dipole Moment(双極子モーメント)
- Polarizability(分極率)
- Dipole Derivative(双極子微分係数)
Normal modes (ORCAで最適化する際に必ず、PROJECTTR false のオプションをつける)
- Translational Frequency(並進モード)
- Rotational Frequency(回転モード)
- Vibrational Frequency(振動モード)
振動モードは次の手順で分類される:
-
全振動モード数
- 直線分子:
3N - 5 - 非直線分子:
3N - 6
(ただし、直線分子かどうかの判定は外積を用いて自動的に判別するので、意図しない判定になっていないか要確認)
- 直線分子:
-
基準振動数の選択
- 計算された振動モードの中から、最も基準振動数の高いものから
3N - 5(または3N - 6) 個を選択。
- 計算された振動モードの中から、最も基準振動数の高いものから
-
Rotational および Translational の分類
- 残った正の振動モードのうち、大きいものから順に Rotational Frequency に分類。
- さらに残ったものを Translational Frequency に分類。
この方法により、正しいモードの割り当てが行われる(例外もあるため、実行前に要確認)
B3LYP/cc-pVDZ (11)
# Number of grids and data
11 1
# q1 Energy
-27.68533983 1.4771550955e-01
-21.00502784 7.7402241929e-02
-15.28949299 3.8599008997e-02
- 基底関数: 計算に用いた基底関数。
- グリッド数: 解析対象の振動座標の点数。
- 座標部分: 振動座標と平衡座標の変位ベクトルに原子の重み付けをし、それに対応する基準振動ベクトルの内積を 50 倍したもの。
- エネルギー: ORCA でエネルギー計算を行い、平衡座標でのエネルギーとの差分を記録。
B3LYP/cc-pVDZ (11)
# Number of grids and data
11 11 11 1
# q1 q2 q3 Energy
-42.18928897 -28.05499848 -27.68533983 4.4534309389e-02
-32.00925814 -28.05499848 -27.68533983 2.3767882545e-02
- 座標部分:
makeGrid.xyzで生成されたカップリング振動状態の座標を、単体の振動モード座標を用いて重み付けの内積の50倍を計算。 - エネルギー: カップリング状態の座標でエネルギーを求め、各振動モード単体のエネルギーの合計を引いたもの。
.dipole も双極子モーメントに対して同様の処理が適用される。