From 4107eb765c1d6ae6628422fc98b988283bdcdcd8 Mon Sep 17 00:00:00 2001 From: guanjihuan Date: Wed, 10 Nov 2021 02:43:39 +0800 Subject: [PATCH] guan-0.0.27 --- API_reference.py | 8 ++++---- PyPI/setup.cfg | 2 +- PyPI/src/guan/calculate_conductance.py | 26 ++++++++++++++++---------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/API_reference.py b/API_reference.py index 89e37a5..1450ce3 100644 --- a/API_reference.py +++ b/API_reference.py @@ -82,10 +82,10 @@ right_lead_surface, left_lead_surface = guan.surface_green_function_of_lead(ferm right_self_energy, left_self_energy = guan.self_energy_of_lead(fermi_energy, h00, h01) conductance = guan.calculate_conductance(fermi_energy, h00, h01, length=100) conductance_array = guan.calculate_conductance_with_fermi_energy_array(fermi_energy_array, h00, h01, length=100) -conductance = guan.calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=2.0, disorder_density=1.0, length=100) -conductance_array = guan.calculate_conductance_with_disorder_intensity_array(fermi_energy, h00, h01, disorder_intensity_array, disorder_density=1.0, length=100) -conductance_array = guan.calculate_conductance_with_disorder_density_array(fermi_energy, h00, h01, disorder_density_array,disorder_intensity=2.0, length=100) -conductance_array = guan.calculate_conductance_with_scattering_length_array(fermi_energy, h00, h01, length_array, disorder_intensity=2.0, disorder_density=1.0) +conductance = guan.calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=2.0, disorder_concentration=1.0, length=100) +conductance_array = guan.calculate_conductance_with_disorder_intensity_array(fermi_energy, h00, h01, disorder_intensity_array, disorder_concentration=1.0, length=100, calculation_times=1) +conductance_array = guan.calculate_conductance_with_disorder_concentration_array(fermi_energy, h00, h01, disorder_concentration_array,disorder_intensity=2.0, length=100, calculation_times=1) +conductance_array = guan.calculate_conductance_with_scattering_length_array(fermi_energy, h00, h01, length_array, disorder_intensity=2.0, disorder_concentration=1.0, calculation_times=1) # scattering matrix # Source code: https://py.guanjihuan.com/calculate_scattering_matrix if_active = guan.if_active_channel(k_of_channel) diff --git a/PyPI/setup.cfg b/PyPI/setup.cfg index 74427d5..6f49f42 100644 --- a/PyPI/setup.cfg +++ b/PyPI/setup.cfg @@ -1,7 +1,7 @@ [metadata] # replace with your username: name = guan -version = 0.0.26 +version = 0.0.27 author = guanjihuan author_email = guanjihuan@163.com description = An open source python package diff --git a/PyPI/src/guan/calculate_conductance.py b/PyPI/src/guan/calculate_conductance.py index e42283e..21a1a3f 100644 --- a/PyPI/src/guan/calculate_conductance.py +++ b/PyPI/src/guan/calculate_conductance.py @@ -75,13 +75,13 @@ def calculate_conductance_with_fermi_energy_array(fermi_energy_array, h00, h01, i0 += 1 return conductance_array -def calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=2.0, disorder_density=1.0, length=100): +def calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=2.0, disorder_concentration=1.0, length=100): right_self_energy, left_self_energy = self_energy_of_lead(fermi_energy, h00, h01) dim = np.array(h00).shape[0] for ix in range(length): disorder = np.zeros((dim, dim)) for dim0 in range(dim): - if np.random.uniform(0, 1)<=disorder_density: + if np.random.uniform(0, 1)<=disorder_concentration: disorder[dim0, dim0] = np.random.uniform(-disorder_intensity, disorder_intensity) if ix == 0: green_nn_n = green_function(fermi_energy, h00+disorder, broadening=0, self_energy=left_self_energy) @@ -97,29 +97,35 @@ def calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensi conductance = np.trace(np.dot(np.dot(np.dot(left_self_energy, green_0n_n), right_self_energy), green_0n_n.transpose().conj())) return conductance -def calculate_conductance_with_disorder_intensity_array(fermi_energy, h00, h01, disorder_intensity_array, disorder_density=1.0, length=100): +def calculate_conductance_with_disorder_intensity_array(fermi_energy, h00, h01, disorder_intensity_array, disorder_concentration=1.0, length=100, calculation_times=1): dim = np.array(disorder_intensity_array).shape[0] conductance_array = np.zeros(dim) i0 = 0 for disorder_intensity_0 in disorder_intensity_array: - conductance_array[i0] = np.real(calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=disorder_intensity_0, disorder_density=disorder_density, length=length)) + for times in range(calculation_times): + conductance_array[i0] = conductance_array[i0]+np.real(calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=disorder_intensity_0, disorder_concentration=disorder_concentration, length=length)) i0 += 1 + conductance_array = conductance_array/calculation_times return conductance_array -def calculate_conductance_with_disorder_density_array(fermi_energy, h00, h01, disorder_density_array,disorder_intensity=2.0, length=100): - dim = np.array(disorder_density_array).shape[0] +def calculate_conductance_with_disorder_concentration_array(fermi_energy, h00, h01, disorder_concentration_array,disorder_intensity=2.0, length=100, calculation_times=1): + dim = np.array(disorder_concentration_array).shape[0] conductance_array = np.zeros(dim) i0 = 0 - for disorder_density_0 in disorder_density_array: - conductance_array[i0] = np.real(calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=disorder_intensity, disorder_density=disorder_density_0, length=length)) + for disorder_concentration_0 in disorder_concentration_array: + for times in range(calculation_times): + conductance_array[i0] = conductance_array[i0]+np.real(calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=disorder_intensity, disorder_concentration=disorder_concentration_0, length=length)) i0 += 1 + conductance_array = conductance_array/calculation_times return conductance_array -def calculate_conductance_with_scattering_length_array(fermi_energy, h00, h01, length_array, disorder_intensity=2.0, disorder_density=1.0): +def calculate_conductance_with_scattering_length_array(fermi_energy, h00, h01, length_array, disorder_intensity=2.0, disorder_concentration=1.0, calculation_times=1): dim = np.array(length_array).shape[0] conductance_array = np.zeros(dim) i0 = 0 for length_0 in length_array: - conductance_array[i0] = np.real(calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=disorder_intensity, disorder_density=disorder_density, length=length_0)) + for times in range(calculation_times): + conductance_array[i0] = conductance_array[i0]+np.real(calculate_conductance_with_disorder(fermi_energy, h00, h01, disorder_intensity=disorder_intensity, disorder_concentration=disorder_concentration, length=length_0)) i0 += 1 + conductance_array = conductance_array/calculation_times return conductance_array \ No newline at end of file