diff --git a/academic_codes/2021.02.08_quantum_transport_in_multi_lead_systems/quantum_transport_in_multi_lead_systems_with_guan.py b/academic_codes/2021.02.08_quantum_transport_in_multi_lead_systems/quantum_transport_in_multi_lead_systems_with_guan.py index 72303fa..0b135dc 100644 --- a/academic_codes/2021.02.08_quantum_transport_in_multi_lead_systems/quantum_transport_in_multi_lead_systems_with_guan.py +++ b/academic_codes/2021.02.08_quantum_transport_in_multi_lead_systems/quantum_transport_in_multi_lead_systems_with_guan.py @@ -38,67 +38,30 @@ def main(): width = 5 length = 50 fermi_energy_array = np.arange(-4, 4, .01) - # 中心区的哈密顿量 - H_center = get_center_hamiltonian(Nx=length, Ny=width) - + center_hamiltonian = get_center_hamiltonian(Nx=length, Ny=width) # 电极的h00和h01 lead_h00 = get_lead_h00(width) lead_h01 = get_lead_h01(width) - transmission_12_array = [] transmission_13_array = [] transmission_14_array = [] transmission_15_array = [] transmission_16_array = [] transmission_1_all_array = [] - for fermi_energy in fermi_energy_array: print(fermi_energy) # 几何形状如下所示: # lead2 lead3 # lead1(L) lead4(R) # lead6 lead5 - - # 电极到中心区的跃迁矩阵 - h_lead1_to_center = np.zeros((width, width*length), dtype=complex) - h_lead2_to_center = np.zeros((width, width*length), dtype=complex) - h_lead3_to_center = np.zeros((width, width*length), dtype=complex) - h_lead4_to_center = np.zeros((width, width*length), dtype=complex) - h_lead5_to_center = np.zeros((width, width*length), dtype=complex) - h_lead6_to_center = np.zeros((width, width*length), dtype=complex) - move = 0 # the step of leads 2,3,6,5 moving to center - for i0 in range(width): - h_lead1_to_center[i0, i0] = 1 - h_lead2_to_center[i0, width*(move+i0)+(width-1)] = 1 - h_lead3_to_center[i0, width*(length-move-1-i0)+(width-1)] = 1 - h_lead4_to_center[i0, width*(length-1)+i0] = 1 - h_lead5_to_center[i0, width*(length-move-1-i0)+0] = 1 - h_lead6_to_center[i0, width*(move+i0)+0] = 1 - # 自能 - self_energy1, gamma1 = guan.self_energy_of_lead_with_h_lead_to_center(fermi_energy, lead_h00, lead_h01, h_lead1_to_center) - self_energy2, gamma2 = guan.self_energy_of_lead_with_h_lead_to_center(fermi_energy, lead_h00, lead_h01, h_lead2_to_center) - self_energy3, gamma3 = guan.self_energy_of_lead_with_h_lead_to_center(fermi_energy, lead_h00, lead_h01, h_lead3_to_center) - self_energy4, gamma4 = guan.self_energy_of_lead_with_h_lead_to_center(fermi_energy, lead_h00, lead_h01, h_lead4_to_center) - self_energy5, gamma5 = guan.self_energy_of_lead_with_h_lead_to_center(fermi_energy, lead_h00, lead_h01, h_lead5_to_center) - self_energy6, gamma6 = guan.self_energy_of_lead_with_h_lead_to_center(fermi_energy, lead_h00, lead_h01, h_lead6_to_center) - - # 整体格林函数 - green = np.linalg.inv(fermi_energy*np.eye(width*length)-H_center-self_energy1-self_energy2-self_energy3-self_energy4-self_energy5-self_energy6) - - # Transmission - transmission_12 = np.trace(np.dot(np.dot(np.dot(gamma1, green), gamma2), green.transpose().conj())) - transmission_13 = np.trace(np.dot(np.dot(np.dot(gamma1, green), gamma3), green.transpose().conj())) - transmission_14 = np.trace(np.dot(np.dot(np.dot(gamma1, green), gamma4), green.transpose().conj())) - transmission_15 = np.trace(np.dot(np.dot(np.dot(gamma1, green), gamma5), green.transpose().conj())) - transmission_16 = np.trace(np.dot(np.dot(np.dot(gamma1, green), gamma6), green.transpose().conj())) - transmission_12_array.append(np.real(transmission_12)) - transmission_13_array.append(np.real(transmission_13)) - transmission_14_array.append(np.real(transmission_14)) - transmission_15_array.append(np.real(transmission_15)) - transmission_16_array.append(np.real(transmission_16)) - transmission_1_all_array.append(np.real(transmission_12+transmission_13+transmission_14+transmission_15+transmission_16)) - + transmission_matrix = guan.calculate_six_terminal_transmission_matrix(fermi_energy, h00_for_lead_4=lead_h00, h01_for_lead_4=lead_h01, h00_for_lead_2=lead_h00, h01_for_lead_2=lead_h01, center_hamiltonian=center_hamiltonian, width=width, length=length, internal_degree=1, moving_step_of_leads=0) + transmission_12_array.append(transmission_matrix[0, 1]) + transmission_13_array.append(transmission_matrix[0, 2]) + transmission_14_array.append(transmission_matrix[0, 3]) + transmission_15_array.append(transmission_matrix[0, 4]) + transmission_16_array.append(transmission_matrix[0, 5]) + transmission_1_all_array.append(transmission_matrix[0, 1]+transmission_matrix[0, 2]+transmission_matrix[0, 3]+transmission_matrix[0, 4]+transmission_matrix[0, 5]) guan.plot(fermi_energy_array, transmission_12_array, xlabel='Fermi energy', ylabel='Transmission_12') guan.plot(fermi_energy_array, transmission_13_array, xlabel='Fermi energy', ylabel='Transmission_13') guan.plot(fermi_energy_array, transmission_14_array, xlabel='Fermi energy', ylabel='Transmission_14')