前回は、Psi4を使った構造最適化計算について解説しました。今回は、Psi4を使って振動解析計算を実行してみましょう。この連載では、Psi4やPythonの使い方を全く知らない初心者でも、最終的にPsi4の基本をマスターできるようになることを目標にしています。
tut-3ac
学習用にGoogle Colaboratory(以下、Colab)で開くことができる専用のノートブック(拡張子.ipynb)を用意していますので、既に入力してあるコードを実行するだけで、誰でも簡単に学習をはじめられます。

Colabの制限について知っておこう

前回ColabでPsi4をインストールする手順を解説しました。Colabは、何も操作せずに90分経つか、使いはじめて12時間経つと構築した環境が初期化されます。つまり、初期化されてしまうとインストールしたPsi4は使えなくなります。

そこで、前回の学習からColabの環境が初期化されてしまった場合は、再度、Psi4をインストールすることからはじめてください。以下のリンクをクリックし、今回使用するノートブックをColabで開きましょう。

Open in Colab: Psi4_tut_3.ipynb

インストール方法は、前回と同じなので省略します。

このようにColabは、クラウドサーバーから手軽にはじめることができる反面、時間的な制約を受けます。Psi4を本格的に使うのであれば、環境が初期化される度にPsi4を毎回インストールをするのは面倒に感じるかもしれません。

Psi4のインストールは2~3分程度ですが、気になる方や本格的な運用をお考えの場合は、ローカル環境への導入を検討してみましょう。ローカル環境へのインストール方法は、本連載の途中で解説する予定です。

Psi4で振動解析計算を実行するコード

ColabでPsi4を実行する準備が整ったら、振動解析計算を実行してみましょう。ここでは、計算結果を基準振動のアニメーションで確認することを目標にします。

今回用意したノートブックには、Psi4で振動解析を行うための最も基本的なコードが入力されています。
frq001
ここでは、水分子をHF/6-31G(d)で振動解析計算します。「振動解析て何?」という方は、Fireflyを使った以下の記事を参照してみてください。

【関連記事】IRスペクトルを計算しえみよう

まずは、前回行ったHF/6-31G(d)で水分子の構造最適化計算を行います。「3.2 水分子の構造最適化」のコードセルを実行しましょう。
frq002
※22'8/16現在ColabでPsi4の計算を実効すると、「不明な理由により、セッションがクラッシュしました。」と表示され、計算が途中で停止する症状が確認されています。
colab_Crush
症状が改善されない場合は、次の記事(
Psi4ではじめる量子化学計算 ④:インストール編)を参考にローカル環境で試してみてください。

計算が終了し「Optimizer: Optimization complete!と出力されれば構造最適化は完了です。コードの内容は前回と同じなので説明は省略します。

次の「3.3 水分子の振動解析」に入力されているセルが今回新たなコードです。
### 振動解析計算 ###
# 出力ファイルの保存
psi4.core.set_output_file("H2O_frq.out")

# moldenファイルの保存
psi4.set_options({"NORMAL_MODES_WRITE": True})

# 計算方法の指定
scf_e, wfn = psi4.frequency("HF/6-31G(d)", ref_gradient = wfn.gradient(), return_wfn = True)
一行目は、振動解析計算の出力ファイルを保存するためのコードです。ここでは、「H2O_frq.out」と名前を付けて保存するように指定しています。

二行目は、通常の出力ファイルとは別に基準振動(NORMAL MODES)をMoldenファイル形式で保存するためのコードです。このファイルは、Avogadroを使って基準振動のアニメーションを確認するために使用します。

三行目は、計算方法を指定するためのコードです。今回の計算の目的は、振動解析なので「psi4.frequency」と入力します。
続く「("HF/6-31G(d)", ref_gradient = wfn.gradient(), return_wfn = True)」中の「 ref_gradient = wfn.gradient()」は、先程実行した構造最適化計算の結果を利用するためのコードです。その他のコードは、前回と同じなので説明は省略します。

Psi4で振動解析計算を実行してみよう

これで、計算に必要なコードが理解できたました。「3.3 水分子の振動解析」に入力されているコードを実行しましょう。今回のような簡単なモデルであれば数秒で計算が終了します。
frq003
計算が終了したら、ブラウズ画面で出力ファイルを確認しましょう。
出力されたMolden形式のファイル「H2O_frq.default.70.molden_normal_modes」を使用して結果の確認を行います。
frq004
「H2O_frq.default.70.molden_normal_modes」をダウンロードして、ファイル名をわかりやすいように「H2O_frq.molden」に変更します。この後、Avogadroを使って結果を確認しますが、拡張子が「.molden」でないと適切に認識しないので注意してください。

最後のコードセルに入力されている以下のコードは、振動解析計算で得られた各基準振動の波数を出力するためのコードです。

# 振動数の確認
wfn.frequencies().to_array()

変数wfnは、振動解析計算のコードで計算結果を代入した変数です。この計算結果にアクセスして波数を出力します。実際にコードを実行してみましょう。
frq005
水分子は、非直線形の3原子分子なので3つの基準振動を持ちます。出力結果には、「1826.61047412, 4070.6545478 , 4188.94342653」と、それぞれの基準振動に対する波数(cm-1)が表示されたはずです。

なお、これらの値はケールファクターが考慮されていないので、実験値と比較する場合は、スケールファクターを乗じる必要があります。スケールファクターについては、以下の記事を参照してみてください。

【関連記事】IRスペクトルを計算しえみよう

Avogadroで基準振動のアニメーションを表示させよう

「H2O_frq.molden」をAvogadroのView画面()にドラッグ&ドロップしてみましょう。
frq006
基準振動のアニメーションをみるにはVibrations画面()から、目的の波数を選択して[Start Animation]ボタン()をクリックします。

これで無事、Psi4で計算した振動解析の結果を基準振動のアニメーションで確認することができました。

この記事で使用した出力ファイルのリンクを掲載しておきます。

H2O_opt.out - Download
H2O_frq.out - Download
H2O_frq.molden - Download

おわりに

今回は、Psi4を使用して振動解析計算を実行する方法について解説しました。この記事で使用したコードを利用すれば、コードの一部を変更するだけで他の分子についても、簡単に振動解析計算が行なえます。

連載の第一回でも述べましたが、Psi4はプログラミングを必要とせずに計算を実行することも可能です。近年では、プログラミングを必要としない『ノーコード』に対する興味や関心が高まっています。今後は、様々なソフトウェアでプログラミングを行うかどうかをユーザーに任せる流れが主流になってくると思います。

本ブログでは、ノーコードによる機械学習について解説した書籍「ノーコードではじめる機械学習」を出版しております。興味がある方は、お手に取っていただければ幸いです!!


【関連記事】
Psi4run - Batch job processor - | ダウンロード
Psi4ではじめる量子化学計算 ①:導入編
Psi4ではじめる量子化学計算 ②:構造最適化編