From 83fdd8a6194119a8f3706f5fe510098824eb63e6 Mon Sep 17 00:00:00 2001 From: guanjihuan <34735497+guanjihuan@users.noreply.github.com> Date: Fri, 5 Nov 2021 21:52:30 +0800 Subject: [PATCH] guan-0.0.24 --- API_reference.py | 1 + PyPI/setup.cfg | 2 +- PyPI/src/guan/calculate_density_of_states.py | 36 ++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/API_reference.py b/API_reference.py index f7d7e13..a458d9b 100644 --- a/API_reference.py +++ b/API_reference.py @@ -74,6 +74,7 @@ local_dos = guan.local_density_of_states_for_square_lattice(fermi_energy, hamilt local_dos = guan.local_density_of_states_for_cubic_lattice(fermi_energy, hamiltonian, N1, N2, N3, internal_degree=1, broadening=0.01) local_dos = guan.local_density_of_states_for_square_lattice_using_dyson_equation(fermi_energy, h00, h01, N2, N1, internal_degree=1, broadening=0.01) local_dos = guan.local_density_of_states_for_cubic_lattice_using_dyson_equation(fermi_energy, h00, h01, N3, N2, N1, internal_degree=1, broadening=0.01) +local_dos = local_density_of_states_for_square_lattice_with_self_energy_using_dyson_equation(fermi_energy, h00, h01, N2, N1, right_self_energy, left_self_energy, internal_degree=1, broadening=0.01) # calculate conductance # Source code: https://py.guanjihuan.com/calculate_conductance transfer = guan.transfer_matrix(fermi_energy, h00, h01) diff --git a/PyPI/setup.cfg b/PyPI/setup.cfg index dff0c9b..de6564a 100644 --- a/PyPI/setup.cfg +++ b/PyPI/setup.cfg @@ -1,7 +1,7 @@ [metadata] # replace with your username: name = guan -version = 0.0.23 +version = 0.0.24 author = guanjihuan author_email = guanjihuan@163.com description = An open source python package diff --git a/PyPI/src/guan/calculate_density_of_states.py b/PyPI/src/guan/calculate_density_of_states.py index 65ac7bb..3483f61 100644 --- a/PyPI/src/guan/calculate_density_of_states.py +++ b/PyPI/src/guan/calculate_density_of_states.py @@ -100,4 +100,40 @@ def local_density_of_states_for_cubic_lattice_using_dyson_equation(fermi_energy, for i3 in range(N3): for i in range(internal_degree): local_dos[i3, i2, i1] = local_dos[i3, i2, i1] -np.imag(green_ii_n_minus[i2*N3*internal_degree+i3*internal_degree+i, i2*N3*internal_degree+i3*internal_degree+i])/pi + return local_dos + +def local_density_of_states_for_square_lattice_with_self_energy_using_dyson_equation(fermi_energy, h00, h01, N2, N1, right_self_energy, left_self_energy, internal_degree=1, broadening=0.01): + # dim_h00 = N2*internal_degree + local_dos = np.zeros((N2, N1)) + green_11_1 = green_function(fermi_energy, h00+left_self_energy, broadening) + for i1 in range(N1): + green_nn_n_minus = green_11_1 + green_in_n_minus = green_11_1 + green_ni_n_minus = green_11_1 + green_ii_n_minus = green_11_1 + for i2_0 in range(i1): + if i2_0 == N1-1-1: + green_nn_n = green_function_nn_n(fermi_energy, h00+right_self_energy, h01, green_nn_n_minus, broadening) + else: + green_nn_n = green_function_nn_n(fermi_energy, h00, h01, green_nn_n_minus, broadening) + green_nn_n_minus = green_nn_n + if i1!=0: + green_in_n_minus = green_nn_n + green_ni_n_minus = green_nn_n + green_ii_n_minus = green_nn_n + for size_0 in range(N1-1-i1): + if size_0 == N1-1-i1-1: + green_nn_n = green_function_nn_n(fermi_energy, h00+right_self_energy, h01, green_nn_n_minus, broadening) + else: + green_nn_n = green_function_nn_n(fermi_energy, h00, h01, green_nn_n_minus, broadening) + green_nn_n_minus = green_nn_n + green_ii_n = green_function_ii_n(green_ii_n_minus, green_in_n_minus, h01, green_nn_n, green_ni_n_minus) + green_ii_n_minus = green_ii_n + green_in_n = green_function_in_n(green_in_n_minus, h01, green_nn_n) + green_in_n_minus = green_in_n + green_ni_n = green_function_ni_n(green_nn_n, h01, green_ni_n_minus) + green_ni_n_minus = green_ni_n + for i2 in range(N2): + for i in range(internal_degree): + local_dos[i2, i1] = local_dos[i2, i1] - np.imag(green_ii_n_minus[i2*internal_degree+i, i2*internal_degree+i])/pi return local_dos \ No newline at end of file