あるケミストの独り言(winchemwinの日記)

ケミスト(化学者)の視点で、面白そうな情報(シミュレーション関係など)を発信

Psi4による量子化学計算-Tkinterアプリ5

 引き続きPsi4の計算実施用アプリについて紹介したいと思います。

今回は紫外可視吸収スペクトルの表示の部分になります。スペクトル表示に関しては以前の記事でも紹介したHill Research group  が公開している'PlotBand'のコードを参考にしました。

 

紫外可視吸収スペクトル表示関数のコード1

 計算で算出された吸収波長を中心にガウス分布に従った吸収をするという設定で吸収スペクトルを作成しています(def gaussBand)。

 それ以降のコードはこれまで同様に、Tkinterアプリからの入力値(method, function, baseset)を受けて、計算の実行を行っています。methodの違い(HF, DFT, MP2)はif文で分岐させています。今回は紫外可視吸収スペクトルの表示ということでTD計算(tdscf_excitatations)を行っています。計算させるstate数(励起状態に相当)はここでは「10」を設定しています。

 

紫外可視吸収スペクトル表示関数のコード2

 続いて以前の記事(紫外可視吸収データ-その2)と同様で、計算結果が代入された「res」から励起エネルギーと振動子強度の値を取り出し、nm単位でプロットできるようデータの加工をおこなっています。

 

紫外可視吸収スペクトル表示関数のコード3

 上記からはスペクトルの表示画面の設定です。これまでと同様にTkinterのtoplevelのsub_windowを活用して表示させています。Sub_window1はデータフレームにまとめた波長、振動子強度の結果の表示です。

 

紫外可視吸収スペクトル表示のコード4

  スペクトル表示は別の画面(sub_window2)で行っています。計算データから得られた結果をmatplotlibでグラフ作成していますが、Tkinter上で表示させるためにFigurecanvasTkAggを活用しています。またグラフ表示調整を画面上で行えるようにするためNavigationToolbar2Tkも活用しています。

 以上、今回は紫外可視吸収スペクトルの表示のコードについて紹介させていただきました。

 次回はマリケンの電荷計算の関数について紹介したいとい思います。