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