def HEOM_calculation(hamiltonian): reorg_energy = 100. cutoff_freq = 53. temperature = 300. init_state = np.array([[1., 0], [0, 0]]) duration = 5. time_step = 0.00005 hs = HierarchySolver(hamiltonian, reorg_energy, cutoff_freq, temperature) HEOM_history, time = hs.hierarchy_time_evolution(init_state, 18, time_step, duration) return HEOM_history
def calculate_HEOM(reorg_energy): system_hamiltonian = np.array([[100., 20.], [20., 0]]) cutoff_freq = 53. temperature = 300. init_state = np.array([[1., 0], [0, 0]]) time_step = 0.00005 duration = 5. hs = HierarchySolver(system_hamiltonian, reorg_energy, cutoff_freq, temperature) HEOM_history, time = hs.hierarchy_time_evolution(init_state, 18, time_step, duration) return HEOM_history
def HEOM_calculation(hamiltonian): reorg_energy = 100. cutoff_freq = 53. temperature = 300. init_state = np.array([[1., 0], [0, 0]]) duration = 5. time_step = 0.00005 hs = HierarchySolver(hamiltonian, reorg_energy, cutoff_freq, temperature) HEOM_history, time = hs.hierarchy_time_evolution(init_state, 18, time_step, duration) return HEOM_history
jump_operators=jump_operators, jump_rates=jump_rates) # start_time = tutils.getTime() # print 'Calculating steady state...' # steady_state = hs.calculate_steady_state(6,6) # print steady_state # # end_time = tutils.getTime() # print 'Calculation took ' + str(tutils.duration(end_time, start_time)) start_time = tutils.getTime() print 'Calculating time evolution...' dm_history, time = hs.hierarchy_time_evolution(np.array([[0, 0, 0, 0], [0, 1., 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]), 8, 8, 0.005, 15., sparse=True) end_time = tutils.getTime() print 'Calculation took ' + str(tutils.duration(end_time, start_time)) print time.shape print dm_history.shape for i in range(4): plt.plot(time[:-1], dm_history[:, i, i], label=i) plt.legend() plt.show()
[0, 1., 0, 0]]) # irreversible transfer to ground state jump_operators[6] = np.array([[0, 0, 0, 1.], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]) jump_rates = np.array([1., 1.1, 2., 2.1, 0.8, 0.82, 0.2]) hs = HierarchySolver(system_hamiltonian, reorg_energy, cutoff_freq, temperature, jump_operators=jump_operators, jump_rates=jump_rates) # start_time = tutils.getTime() # print 'Calculating steady state...' # steady_state = hs.calculate_steady_state(6,6) # print steady_state # # end_time = tutils.getTime() # print 'Calculation took ' + str(tutils.duration(end_time, start_time)) start_time = tutils.getTime() print 'Calculating time evolution...' dm_history,time = hs.hierarchy_time_evolution(np.array([[0, 0, 0, 0],[0, 1., 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]]), 8, 8, 0.005, 15., sparse=True) end_time = tutils.getTime() print 'Calculation took ' + str(tutils.duration(end_time, start_time)) print time.shape print dm_history.shape for i in range(4): plt.plot(time[:-1], dm_history[:,i,i], label=i) plt.legend() plt.show()