Source code for pysisyphus.franckcondon.lq2

# [1] https://pubs.acs.org/doi/pdf/10.1021/acs.jctc.7b00325
#     Franck−Condon Models for Simulating the Band Shape of
#     Electronic Absorption Spectra
#     Li, Truhlar, 2017


import numpy as np


[docs] def lq2_abs_cross_sec( E: np.ndarray, f_osc: float, dE_vert: float, angfreqs: np.ndarray, displacements: np.ndarray, ): """LQ2 absorption cross section. Eq. (11) in [1]. Parameters ---------- E Array containing the energies of the incident photon in atomic units. f_osc Oscillator strength. dE_vert Vertic excitation energy of the excited state in atomic units. angfreqs Array of normal mode angular frequncies in atomic units. displacements Array of unitless displacements in along the normal modes. Returns ------- sigma Array containing absorption cross sections. Its maximum will be centered at the excitation energy. In [1] the peak is shifted by its HWHM. See just below eq. (11) in [1] for the formula. While the sigmas are calculated for the values in the array 'E', they should be plotted at 'E' + 'hwhm'. """ assert len(angfreqs) == len(displacements) denom = (displacements**2 * angfreqs**2).sum() num = (E - dE_vert) ** 2 sigma = f_osc * np.exp(-num / denom) return sigma