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

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

Psi4による量子化学計算-紫外可視光吸収データ-その2

 

 前回の記事でアセトニトリルの光の吸収波長と吸収強度(振動子強度)の計算事例について紹介させていただきました。今回は得られたデータからのスペクトル表示について紹介したいと思います。スペクトル表示については、Hill Research group  が公開している'PlotBand'のコードを参考にしました。

 まずはライブラリーのインポートと座標データの設定です。

コード1 ライブラリーのインポート、座標データの設定

続いてTD計算の設定を行い、得られた結果を読み込み、numpyのアレイ型のデータとしています。この辺は前回と同様にになります。

 

コード2 TD計算の実施

コード3 計算結果の処理 

 ここからが前回とは異なり、スペクトル表示に関する部分になってきます。

表示用ライブラリーとして、matplotlib を読み込み、スペクトル表示のパラメター値(表示開始:start/nm、終了波長:finish/nm、ポイント数:points)を設定しています。

 また、stdev, constant以降はスペクトルデータ処理のための設定(値)になります。

 

コード4 表示条件等の設定

 続いて、表示のためのデータ処理ですが、この部分は冒頭にも記載しましたが、Hill Research group  が公開している'PlotBand'を参考利用させて頂いています。

コード5 スペクトル表示用でーた処理

 計算で算出された吸収波長を中心にガウス分布に従った吸収をするという設定で吸収スペクトルを作成しています(def gaussBand)。続いて設定したstart, finsh, pointに従い、計算する波長のポイントの配列(np.linespace:x)を作成しています。

 最後に計算で算出された吸収波長(bands)に関するガウス分布データをfor 文内で計算し、計算されたデータ(thispeak)を集約しています(composite)。

 

コード6 スペクトル表示

 スペクトル表示はmatplotlib で横軸をx、縦軸をcompositeとして表示させています。

計算結果1

計算結果2

計算結果3

吸収スペクトルの表示

  上記は得られた計算結果になります。数値データとして得られた吸収波長と振動子強度から、波長とintensityの関係を表す吸収スペクトルが表示されています。スペクトル表示用にデータ処理されていますので、あくまで目安ですが化合物の光の吸収をイメージするには有用な情報になるかと思います。皆さんの参考になれば幸いです。

 次回は分極率の計算例について紹介したいと思います。