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
Exemple #2
0
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
Exemple #4
0
                     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()