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
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
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
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
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
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
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
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
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
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
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