Smatrix in hall bar
Hello all, I have a question about one of the functions in this link: https://nbviewer.jupyter.org/url/topocondmat.org/notebooks/w3_pump_QHE/Laugh... For plotting Hall conductance and longitudinal one, there is a section where you defined a G function, which I put it below: def G(syst, p): smatrix = kwant.smatrix(syst, args=[p]) G = [[smatrix.transmission(i, j) for i in range(num_leads)] for j in range(num_leads)] G -= np.diag(np.sum(G, axis=0)) return calculate_sigmas(G) I want to know why we need this line " G -= np.diag(np.sum(G, axis=0)) " since G matrix is already calculated in the previous line? Your time and consideration are greatly appreciated. Best regards, Ali
Hi Ali, We subtract the sums because that is the definition of the conductance matrix. However this complete function really should be written as kwant.smatrix(syst, args=[p]).conductance_matrix() (see also the documentation of the conductance_matrix from Kwant). Best, Anton On Wed, Feb 15, 2017 at 3:43 PM, Ali Asgharpour <asgharpour@sabanciuniv.edu> wrote:
Hello all,
I have a question about one of the functions in this link: https://nbviewer.jupyter.org/url/topocondmat.org/notebooks/w3_pump_QHE/Laugh...
For plotting Hall conductance and longitudinal one, there is a section where you defined a G function, which I put it below:
def G(syst, p): smatrix = kwant.smatrix(syst, args=[p]) G = [[smatrix.transmission(i, j) for i in range(num_leads)] for j in range(num_leads)] G -= np.diag(np.sum(G, axis=0)) return calculate_sigmas(G)
I want to know why we need this line " G -= np.diag(np.sum(G, axis=0)) " since G matrix is already calculated in the previous line?
Your time and consideration are greatly appreciated.
Best regards,
Ali
Thanks. By the way, I want to find voltage difference in a system but, for some Fermi energies, the determinant of G matrix is zero and obviously I have a singular matrix error. Is there any way not to encounter this error except adding "if statements"? Best regards, Ali On Wed, Feb 15, 2017 at 8:02 PM, Anton Akhmerov <anton.akhmerov+kd@gmail.com
wrote:
Hi Ali,
We subtract the sums because that is the definition of the conductance matrix. However this complete function really should be written as kwant.smatrix(syst, args=[p]).conductance_matrix() (see also the documentation of the conductance_matrix from Kwant).
Best, Anton
On Wed, Feb 15, 2017 at 3:43 PM, Ali Asgharpour <asgharpour@sabanciuniv.edu> wrote:
Hello all,
I have a question about one of the functions in this link: https://nbviewer.jupyter.org/url/topocondmat.org/notebooks/ w3_pump_QHE/Laughlinargument.ipynb
For plotting Hall conductance and longitudinal one, there is a section where you defined a G function, which I put it below:
def G(syst, p): smatrix = kwant.smatrix(syst, args=[p]) G = [[smatrix.transmission(i, j) for i in range(num_leads)] for j in range(num_leads)] G -= np.diag(np.sum(G, axis=0)) return calculate_sigmas(G)
I want to know why we need this line " G -= np.diag(np.sum(G, axis=0)) " since G matrix is already calculated in the previous line?
Your time and consideration are greatly appreciated.
Best regards,
Ali
Dear Ali, The determinant of G matrix is always zero, since if you apply the same voltage to all leads, no current should flow. I am unsure why it is only zero for some energies for you. Best, Anton On Wed, Feb 15, 2017 at 7:56 PM, Ali Asgharpour <asgharpour@sabanciuniv.edu> wrote:
Thanks. By the way, I want to find voltage difference in a system but, for some Fermi energies, the determinant of G matrix is zero and obviously I have a singular matrix error. Is there any way not to encounter this error except adding "if statements"?
Best regards,
Ali
On Wed, Feb 15, 2017 at 8:02 PM, Anton Akhmerov <anton.akhmerov+kd@gmail.com> wrote:
Hi Ali,
We subtract the sums because that is the definition of the conductance matrix. However this complete function really should be written as kwant.smatrix(syst, args=[p]).conductance_matrix() (see also the documentation of the conductance_matrix from Kwant).
Best, Anton
On Wed, Feb 15, 2017 at 3:43 PM, Ali Asgharpour <asgharpour@sabanciuniv.edu> wrote:
Hello all,
I have a question about one of the functions in this link:
https://nbviewer.jupyter.org/url/topocondmat.org/notebooks/w3_pump_QHE/Laugh...
For plotting Hall conductance and longitudinal one, there is a section where you defined a G function, which I put it below:
def G(syst, p): smatrix = kwant.smatrix(syst, args=[p]) G = [[smatrix.transmission(i, j) for i in range(num_leads)] for j in range(num_leads)] G -= np.diag(np.sum(G, axis=0)) return calculate_sigmas(G)
I want to know why we need this line " G -= np.diag(np.sum(G, axis=0)) " since G matrix is already calculated in the previous line?
Your time and consideration are greatly appreciated.
Best regards,
Ali
Dear Anton, I am a bit confused now, if the determinant of G matrix is always zero, how inverse of G matrix is calculated to find Hall conductance and longitudinal one in the link I have mentioned in the first email? All leads have the same chemical potential there too. Best regards, Ali Best regards On Wed, Feb 15, 2017 at 9:59 PM, Anton Akhmerov <anton.akhmerov+kd@gmail.com
wrote:
Dear Ali,
The determinant of G matrix is always zero, since if you apply the same voltage to all leads, no current should flow. I am unsure why it is only zero for some energies for you.
Best, Anton
On Wed, Feb 15, 2017 at 7:56 PM, Ali Asgharpour <asgharpour@sabanciuniv.edu> wrote:
Thanks. By the way, I want to find voltage difference in a system but, for some Fermi energies, the determinant of G matrix is zero and obviously I have a singular matrix error. Is there any way not to encounter this error except adding "if statements"?
Best regards,
Ali
On Wed, Feb 15, 2017 at 8:02 PM, Anton Akhmerov <anton.akhmerov+kd@gmail.com> wrote:
Hi Ali,
We subtract the sums because that is the definition of the conductance matrix. However this complete function really should be written as kwant.smatrix(syst, args=[p]).conductance_matrix() (see also the documentation of the conductance_matrix from Kwant).
Best, Anton
On Wed, Feb 15, 2017 at 3:43 PM, Ali Asgharpour <asgharpour@sabanciuniv.edu> wrote:
Hello all,
I have a question about one of the functions in this link:
w3_pump_QHE/Laughlinargument.ipynb
For plotting Hall conductance and longitudinal one, there is a section where you defined a G function, which I put it below:
def G(syst, p): smatrix = kwant.smatrix(syst, args=[p]) G = [[smatrix.transmission(i, j) for i in range(num_leads)] for j
in
range(num_leads)] G -= np.diag(np.sum(G, axis=0)) return calculate_sigmas(G)
I want to know why we need this line " G -= np.diag(np.sum(G, axis=0)) " since G matrix is already calculated in the previous line?
Your time and consideration are greatly appreciated.
Best regards,
Ali
participants (2)
-
Ali Asgharpour
-
Anton Akhmerov