the density of states in four-band Hamiltonian
Dear Joseph ! Thanks for your teams creating the Kwant to calculate the quantum transport, and I have read some of the kwant-discussions that is relevant with my questions. However, there are still several confuse and I hope that you can help me for your free time. (1) I am not sure whether the energy used in function (such as kwant.smatrix(sys, energy), kwant.wave_function(sys, energy) or kwant.ldos(sys, energy).) is Fermi energy in a given system. My previous insight about this energy is the energy that one electron is incoming from one lead. (2) In some literatures such as topological insulator, the Hamiltonian has the form blocks(four-band Hamiltonian). For example, in ref [Papaj M, Cywiński Ł, Wróbel J, et al. Physical Review B, 2016, 93(19): 195305.], the Hamilton takes the following form , . If we use the function ( local_ldos =)kwant.ldos(sys, energy) to calculate local the density of states (LDOS) for this system , the return array local_ldos is . So, my question is that whether we can think the following Schrodinger equation holds for site- . Other relevant questions: (a) Dose the eigenvalue correspond to the energy inputted into kwant.ldos(sys, energy)? (b) For site-, whether the LDOS of electron with spin up and down is , respectively? If not, how can we obtain it?. (3) When we use the function ( wf =)kwant.wave_function(sys,enengy) to obtain the wave function of electron, the array wf(0)(with elements) for electron incoming from lead 1 can give M models (channels) and oribits (each orbit has four wave function) For the with model , the Schrodinger equation is The question: (a) Whether the eigenvalue is all the same for . In other words, I am not sure that whether all the states for is degenerate in ? (b) In order to calculate the density of states for , we can use the following relation Does this give the total density of states? If we only want to know the case of spin up or down, how can we calculate the density of states? Is the following correct? (c) What is the difference of the density of state obtained from above method (kwant.wave_function)and LDOS(kwant.ldos)? The code for calculating the density of states is the follow: import math import numpy as np import numpy from numpy import * from matplotlib import pyplot import kwant import tinyarray def make_system(W = 197, L = 400, F = 190, de = 100): A, B, D, M, Dz, De, Dh, Ee = 0.365, -0.686, -0.511, -0.01, 0.0016, -0.0128, 0.0211, 0.0 p = 1 sigma_1 = tinyarray.array([[1, 0, 0, 0], [0, -1, 0 ,0], [0, 0, 1, 0], [0, 0, 0, -1]]) sigma_2 = tinyarray.array([[1, 0, 0, 0], [0, 0, 0 ,0], [0, 0, 1, 0], [0, 0, 0, 0]]) sigma_3 = tinyarray.array([[0, 0, 0, 0], [0, 1, 0 ,0], [0, 0, 0, 0], [0, 0, 0, 1]]) sigma_33 = tinyarray.array([[0, 0, 0, -1], [0, 0, 1 ,0], [0, 1, 0, 0], [-1, 0, 0, 1]]) sigma_4 = tinyarray.array([[0, A, De+1j*Ee, 0], [A, 0, 0 ,Dh], [De+1j*Ee, 0, 0, -A], [0, Dh, -A, 0]]) sigma_5 = tinyarray.array([[0, 1j*A, 1j*De+Ee, 0], [-1j*A, 0, 0 ,-1j*Dh], [-1j*De-Ee, 0, 0, 1j*A], [0, 1j*Dh, -1j*A, 0]]) def central_region(pos): x, y = pos return -L/2 < x < L/2 and \ abs(y) < L/2 - F*math.exp((-x**2)/(de**2)) lat = kwant.lattice.square(p) sys = kwant.Builder() sys[lat.shape(central_region, (0, 0))] = M*sigma_1-4*(B+D)*sigma_2+4*(B-D)*sigma_3+Dz*sigma_33 sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = (B+D)*sigma_2-(B-D)*sigma_3-1j*sigma_4 sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = (B+D)*sigma_2-(B-D)*sigma_3-1j*sigma_5 sym = kwant.TranslationalSymmetry((-p, 0)) lead = kwant.Builder(sym) lead[(lat(0, y) for y in range(-W + 1, W))] = M*sigma_1-4*(B+D)*sigma_2+4*(B-D)*sigma_3+Dz*sigma_33 lead[kwant.builder.HoppingKind((1, 0), lat, lat)] = (B+D)*sigma_2-(B-D)*sigma_3-1j*sigma_4 lead[kwant.builder.HoppingKind((0, 1), lat, lat)] = (B+D)*sigma_2-(B-D)*sigma_3-1j*sigma_5 sys.attach_lead(lead) sys.attach_lead(lead.reversed()) return sys.finalized() def plot_ldos(sys, energy): local_ldos = kwant.ldos(sys, energy) sx1 = local_ldos[::4] sx2 = local_ldos[1::4] sx3 = local_ldos[2::4] sx4 = local_ldos[3::4] kwant.plotter.map(sys, sx1+sx2) def density(sys, energy): wf = kwant.wave_function(sys, energy) wf_0 = abs(wf(0)**2).sum(axis=0) A1, A2, A3, A4 = wf_0[::4], wf_0[1::4], wf_0[2::4], wf_0[3::4] D = A1 + A2# + A3 + A4 #numpy.savetxt("D_D.txt",D); kwant.plotter.map(sys, D) sys = make_system() kwant.plot(sys) # density of state for spin up d = density(sys, energy=-0.02) # local density of state for spin up plot_ldos(sys, energy=-0.02)
participants (1)
-
Gongwei_Hu