(np.sum(c_alphas * c_betas ** 3) - np.sum(c_alphas ** 3 * c_betas)) * g_site_dot[k]
                    + 2.0j * np.sum(c_betas ** 3 * c_alphas) * site_reorg_energy
                )
                ** 2
            )
            for k, t in enumerate(time)
        ]
    )


mixing_integral1 = []
mixing_integral2 = []
for i, delta_E in enumerate(delta_E_values):
    evals, evecs = utils.sorted_eig(hamiltonian(delta_E, 20.0))
    rates, abs_lineshapes, fl_lineshapes, mixing_function, time2 = os.modified_redfield_relaxation_rates(
        hamiltonian(delta_E, 20.0), np.array([reorg_energy, reorg_energy]), cutoff_freq, None, temperature, 0, 0.5
    )
    #     mixing_integral1.append(integrate.simps(mixing_function[0,1], time2[:-5]))
    #     mixing_integral2.append(integrate.simps(new_mixing_function(time, evecs[0], evecs[1], reorg_energy, site_lbf, site_lbf_dot, site_lbf_dot_dot)))
    mixing_integral1.append(mixing_function[0, 1])
    mixing_integral2.append(
        new_mixing_function(time, evecs[0], evecs[1], reorg_energy, site_lbf, site_lbf_dot, site_lbf_dot_dot)
    )

plt.plot(delta_E_values, mixing_integral1[0], label="1")
plt.plot(delta_E_values, mixing_integral2[0], label="2", linewidth=2, ls="--", color="red")
plt.legend()
# plt.plot(delta_E_values, [np.abs(mixing_integral1[i] - mixing_integral2[i]) for i in range(len(mixing_integral1))])
plt.show()

reorg_energy = 100.  # wavenumbers
cutoff_freq = 53.  # wavenumbers
temperature = 300.
'''
Code to calculate rates for various coupling strengths and energy gaps between the monomers in a dimer, then saves data to file for plotting
'''
rates_data = []

for i, V in enumerate(coupling_values):
    print 'calculating rates for coupling ' + str(V)
    rates = []
    for delta_E in delta_E_values:
        rates.append(
            os.modified_redfield_relaxation_rates(
                hamiltonian(delta_E, V), np.array([reorg_energy,
                                                   reorg_energy]), cutoff_freq,
                None, temperature, 0)[0, 1])
    plt.subplot(1, coupling_values.size, i + 1)
    rates_data.append(rates)
    plt.loglog(delta_E_values,
               np.array(rates) * utils.WAVENUMS_TO_INVERSE_PS,
               label=V)

    # plot extracted data from Ed's thesis
    xdata, ydata = np.loadtxt('../../data/thieved_data' + str(i) + '.txt',
                              delimiter=', ',
                              unpack=True)
    plt.loglog(xdata, ydata, color='red')

    plt.xlabel(r'$\Delta E$ (cm$^{-1}$)')
    plt.ylabel(r'rate')
reorg_energy = 100.0  # wavenumbers
cutoff_freq = 53.0  # wavenumbers
temperature = 300.0

"""
Code to calculate rates for various coupling strengths and energy gaps between the monomers in a dimer, then saves data to file for plotting
"""
rates_data = []

for i, V in enumerate(coupling_values):
    print "calculating rates for coupling " + str(V)
    rates = []
    for delta_E in delta_E_values:
        rates.append(
            os.modified_redfield_relaxation_rates(
                hamiltonian(delta_E, V), np.array([reorg_energy, reorg_energy]), cutoff_freq, None, temperature, 0
            )[0, 1]
        )
    plt.subplot(1, coupling_values.size, i + 1)
    rates_data.append(rates)
    plt.loglog(delta_E_values, np.array(rates) * utils.WAVENUMS_TO_INVERSE_PS, label=V)

    # plot extracted data from Ed's thesis
    xdata, ydata = np.loadtxt("../../data/thieved_data" + str(i) + ".txt", delimiter=", ", unpack=True)
    plt.loglog(xdata, ydata, color="red")

    plt.xlabel(r"$\Delta E$ (cm$^{-1}$)")
    plt.ylabel(r"rate")
    plt.ylim(0.01, 200)
    plt.xlim(5, 1000)
    plt.legend()
Example #4
0
        np.exp(2. * np.sum(c_alphas**2 * c_betas**2) *
               (g_site[k] + 1.j * site_reorg_energy * t)) *
        ((np.sum(c_alphas**2 * c_betas**2) * g_site_dot_dot[k]) -
         ((np.sum(c_alphas * c_betas**3) - np.sum(c_alphas**3 * c_betas)) *
          g_site_dot[k] +
          2.j * np.sum(c_betas**3 * c_alphas) * site_reorg_energy)**2)
        for k, t in enumerate(time)
    ])


mixing_integral1 = []
mixing_integral2 = []
for i, delta_E in enumerate(delta_E_values):
    evals, evecs = utils.sorted_eig(hamiltonian(delta_E, 20.))
    rates, abs_lineshapes, fl_lineshapes, mixing_function, time2 = os.modified_redfield_relaxation_rates(
        hamiltonian(delta_E, 20.), np.array([reorg_energy, reorg_energy]),
        cutoff_freq, None, temperature, 0, 0.5)
    #     mixing_integral1.append(integrate.simps(mixing_function[0,1], time2[:-5]))
    #     mixing_integral2.append(integrate.simps(new_mixing_function(time, evecs[0], evecs[1], reorg_energy, site_lbf, site_lbf_dot, site_lbf_dot_dot)))
    mixing_integral1.append(mixing_function[0, 1])
    mixing_integral2.append(
        new_mixing_function(time, evecs[0], evecs[1], reorg_energy, site_lbf,
                            site_lbf_dot, site_lbf_dot_dot))

plt.plot(delta_E_values, mixing_integral1[0], label='1')
plt.plot(delta_E_values,
         mixing_integral2[0],
         label='2',
         linewidth=2,
         ls='--',
         color='red')