print "calculating for beta = " + str(B) model_heom.beta = B model_pert.beta = B for i,E in enumerate(reorg_energy_values): print str(E) + ' at ' + str(tu.getTime()) model_heom.environment = environment(E, B, K) try: solver = FCSSolver(model_heom.heom_matrix(), model_heom.jump_matrix(), model_heom.dv_pops) mean_heom[j,i] = solver.mean() F2_heom[j,i] = solver.second_order_fano_factor() coh_heom[j,i] = np.abs(model_heom.heom_solver.extract_system_density_matrix(solver.ss)[1,2]) except ArpackNoConvergence: print "Convergence error!" model_pert.spectral_density = drude_spectral_density(E, cutoff) solver_pert = DenseFCSSolver(model_pert.liouvillian(), model_pert.jump_matrix(), np.array([1,1,1,0,0])) mean_pert[j,i] = solver_pert.mean() F2_pert[j,i] = solver_pert.second_order_fano_factor(0) coh_pert[j,i] = np.abs(solver_pert.ss[3] + solver_pert.ss[4]) # fname = '../../data/HEOM_weak_coupling_F2_reorg_energy_drude_T2.7_N6_K7.npz' # data = np.load(fname) # reorg_energy_values = np.append(data['reorg_energy_values'], reorg_energy_values) # F2_heom = np.append(data['F2_heom'], F2_heom) # F2_pert = np.append(data['F2_pert'], F2_pert) # coh_heom = np.append(data['coh_heom'], coh_heom) # coh_pert = np.append(data['coh_pert'], coh_pert) # mean_heom = np.append(data['mean_heom'], mean_heom) # mean_pert = np.append(data['mean_pert'], mean_pert) np.savez('../../data/HEOM_weak_coupling_F2_reorg_energy_drude_T2.7_N6_K8_-6-0.npz', reorg_energy_values=reorg_energy_values, \ F2_heom=F2_heom.squeeze(), F2_pert=F2_pert.squeeze(), coh_heom=coh_heom.squeeze(), \
Gamma_L = 1. Gamma_R = 0.025 bias = 2. T_c = 1. beta = 0.4 cutoff = 50. def drude_spectral_density(reorg_energy, cutoff): def J(delta): return (2. * reorg_energy * cutoff * delta) / (delta**2 + cutoff**2) return J model_pert = DissipativeDQDModel(Gamma_L, Gamma_R, bias, T_c, drude_spectral_density(0,cutoff), beta) reorg_energy_values = np.logspace(-3, 15, 320) F2_pert = np.zeros(reorg_energy_values.size) coh_pert = np.zeros(reorg_energy_values.size) mean_pert = np.zeros(reorg_energy_values.size) for i,E in enumerate(reorg_energy_values): model_pert.spectral_density = drude_spectral_density(E, cutoff) solver_pert = FCSSolver(model_pert.liouvillian(), model_pert.jump_matrix(), np.array([1,1,1,0,0])) mean_pert[i] = solver_pert.mean() F2_pert[i] = solver_pert.second_order_fano_factor(0) coh_pert[i] = np.abs(solver_pert.ss[3] + solver_pert.ss[4]) np.savez('../data/F2_reorg_energy_perturbative_data_large_reorg_energy.npz', reorg_energy_values=reorg_energy_values, F2=F2_pert, \ mean=mean_pert, coh=coh_pert)
@author: richard ''' import numpy as np from HEOM_counting_statistics.DQD_HEOM_model import DQDHEOMModel from counting_statistics.fcs_solver import FCSSolver model = DQDHEOMModel(0, 3., 1., 1.e-4) bias_values = np.linspace(-10, 10, 100) current = np.zeros(bias_values.size) F2 = np.zeros(bias_values.size) for i,E in enumerate(bias_values): model.bias = E solver = FCSSolver(model.heom_matrix(), model.jump_matrix(), model.dv_pops) current[i] = solver.mean() F2[i] = solver.second_order_fano_factor(0) import matplotlib.pyplot as plt plt.subplot(121) plt.plot(bias_values, current, linewidth=3) plt.xlim(-10,10) plt.ylim(0,0.04) plt.xlabel(r'energy bias $\epsilon$') plt.ylabel(r'current') plt.subplot(122) plt.plot(bias_values, F2, linewidth=3) plt.xlim(-10,10) plt.xlabel(r'energy bias $\epsilon$') plt.ylabel(r'F$^{(2)}$(0)')