引き続きPsi4の計算実施用アプリについて紹介したいと思います。
今回は紫外可視吸収スペクトルの表示の部分になります。スペクトル表示に関しては以前の記事でも紹介したHill Research group が公開している'PlotBand'のコードを参考にしました。
計算で算出された吸収波長を中心にガウス分布に従った吸収をするという設定で吸収スペクトルを作成しています(def gaussBand)。
それ以降のコードはこれまで同様に、Tkinterアプリからの入力値(method, function, baseset)を受けて、計算の実行を行っています。methodの違い(HF, DFT, MP2)はif文で分岐させています。今回は紫外可視吸収スペクトルの表示ということでTD計算(tdscf_excitatations)を行っています。計算させるstate数(励起状態に相当)はここでは「10」を設定しています。
続いて以前の記事(紫外可視吸収データ-その2)と同様で、計算結果が代入された「res」から励起エネルギーと振動子強度の値を取り出し、nm単位でプロットできるようデータの加工をおこなっています。
上記からはスペクトルの表示画面の設定です。これまでと同様にTkinterのtoplevelのsub_windowを活用して表示させています。Sub_window1はデータフレームにまとめた波長、振動子強度の結果の表示です。
スペクトル表示は別の画面(sub_window2)で行っています。計算データから得られた結果をmatplotlibでグラフ作成していますが、Tkinter上で表示させるためにFigurecanvasTkAggを活用しています。またグラフ表示調整を画面上で行えるようにするためNavigationToolbar2Tkも活用しています。
以上、今回は紫外可視吸収スペクトルの表示のコードについて紹介させていただきました。
次回はマリケンの電荷計算の関数について紹介したいとい思います。