def calculate_F2(model): solver = FCSSolver(model.heom_matrix(), model.jump_matrix(), model.dv_pops) return solver.second_order_fano_factor(0)
cutoff_freq = 1. def drude_spectral_density(reorg_energy): def J(omega): return 2.*omega*reorg_energy*cutoff_freq / (omega**2 + cutoff_freq**2) return J diss_model = DissipativeDQDModel(Gamma_L, Gamma_R, bias, T_c, drude_spectral_density(1.e-9), beta) heom_model = DQDHEOMModel(bias, T_c, Gamma_L, Gamma_R, 1.e-9, cutoff_freq, beta) diss_F2 = np.zeros(reorg_energy_values.size) heom_F2 = np.zeros(reorg_energy_values.size) for i,Er in enumerate(reorg_energy_values): diss_model.spectral_density = drude_spectral_density(reorg_energy_values[i]) heom_model.drude_reorg_energy = reorg_energy_values[i] diss_solver = FCSSolver(diss_model.liouvillian(), diss_model.jump_matrix(), np.array([1.,1.,1.,0,0])) heom_solver = FCSSolver(heom_model.heom_matrix(), heom_model.jump_matrix(), heom_model.dv_pops) diss_F2[i] = diss_solver.second_order_fano_factor(0) heom_F2[i] = heom_solver.second_order_fano_factor(0) np.savez('../../data/DQD_counting_stats_F2_coupling_strength.npz', reorg_energy_values=reorg_energy_values, diss_F2=diss_F2, heom_F2=heom_F2) import matplotlib.pyplot as plt plt.plot(reorg_energy_values, diss_F2, label='diss') plt.plot(reorg_energy_values, heom_F2, label='heom') plt.legend().draggable() plt.show()
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)
font = {'size':20} matplotlib.rc('font', **font) #model = DQDModel(remove_elements=True) def dqd_hamiltonian(bias, T): return np.array([[0,0,0],[0,bias/2,T],[0,T,-bias/2]]) dqd_lindblad_ops = [np.array([[0,0,0],[1,0,0],[0,0,0]]), np.array([[0,0,1],[0,0,0],[0,0,0]])] dqd_lindblad_rates = [1., 1.] solver = FCSSolver(dqd_hamiltonian(0, 3.), dqd_lindblad_ops, dqd_lindblad_rates, np.array([0,1]), reduce_dim=True) freq_range = np.linspace(0, 10., 100) bias_values = np.array([0]) #, 1.5, 3., 4.5, 6.]) F2 = np.zeros((bias_values.size, freq_range.size)) plt.axhline(1., ls='--', color='grey') for i,v in enumerate(bias_values): #model.bias = v solver.H = dqd_hamiltonian(v, 3.) print solver.liouvillian() #ss = utils.stationary_state_svd(model.liouvillian(), model.density_vector_populations()) #F2[i] = model.second_order_fano_factor(ss, freq_range=freq_range) F2[i] = solver.second_order_fano_factor(freq_range) plt.plot(freq_range, F2[i], label=r'$\epsilon$ = ' + str(v), linewidth=3) plt.legend().draggable() plt.xlabel('frequency') plt.ylabel(r'F$^{(2)}$($\omega$)') plt.show()
return 2. * reorg_energy * freq**2 * ((delta * damping) / ((delta**2 - freq**2)**2 + delta**2 * damping**2)) return J bias_values = np.linspace(-15., 15., 500) F2_values = np.zeros((len(beta)+1, bias_values.size)) model = DissipativeDQDModel(Gamma_L, Gamma_R, 0, T_c, underdamped_brownian_oscillator(mode_freq, hr_factor, damping), 1.) solver = FCSSolver(model.liouvillian(), model.jump_matrix(), np.array([1,1,1,0,0])) for j,B in enumerate(beta): model.beta = B print B for i,E in enumerate(bias_values): model.bias = E solver.L = model.liouvillian() F2_values[j+1,i] = solver.second_order_fano_factor(0) model.spectral_density = underdamped_brownian_oscillator(0, hr_factor, damping) for i,E in enumerate(bias_values): model.bias = E solver.L = model.liouvillian() F2_values[0,i] = solver.second_order_fano_factor(0) np.savez('../../data/DQD_dissipative_F2_strong_coupling_UBO.npz', bias=bias_values, beta=beta, F2=F2_values) import matplotlib.pyplot as plt import matplotlib font = {'size':18} matplotlib.rc('font', **font)
''' 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)')