Regarding smatrix and spin
Hi again, This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg00076.html I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense). Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it [[r_upup, r_updown],[r_downup, r_downdown]] I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix. Hope you can help me, and thanks in advance. Best regards, Camilla
Dear Camilla, For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin. However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here <https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg01025.html> for an explanation of the basic idea behind the algorithm. We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here <https://gitlab.kwantproject.org/antonakhmerov/kwant> is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This <http://nbviewer.jupyter.org/urls/dl.dropbox.com/s/9fr8pq65ujmtr20/symm_modes.ipynb> notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix. I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback! In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index). Best regards, Tómas On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/ kwantdiscuss@kwantproject.org/msg00076.html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Hi Camilla, everyone, I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductance.ipyn... I've also provided more detailed installation instructions in the notebook. Cheers, Anton On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg00076.html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message: "LINK: fatal error LNK1181: cannot open input file 'lapack.lib'" Is there some package or installation I am missing? Best regards, Camilla Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com> Cc: Camilla Espedal <camilla.espedal@ntnu.no>; kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin Hi Camilla, everyone, I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductance.ipyn... I've also provided more detailed installation instructions in the notebook. Cheers, Anton On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg00076 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Dear Camilla, It seems that you are trying to install Kwant on windows. This is a very hard task, and I fear none of the Kwant developers has enough knowledge of it right now (our Windows packages are built by Christoph Gohlke, see [1] for the build environment description). However if you are using windows 10, I suggest to try to install Kwant using the windows subsystem for linux. That way the standard Ubuntu build procedure should work for you. Best, Anton [1]: http://www.lfd.uci.edu/~gohlke/pythonlibs/ On Mon, Jan 16, 2017 at 9:45 AM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message:
"LINK: fatal error LNK1181: cannot open input file 'lapack.lib'"
Is there some package or installation I am missing?
Best regards, Camilla
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com> Cc: Camilla Espedal <camilla.espedal@ntnu.no>; kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Hi Camilla, everyone,
I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductance.ipyn...
I've also provided more detailed installation instructions in the notebook.
Cheers, Anton
On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg00076 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Dear Anton, Thanks again for all your help. I will try to do it the linux way. Just one more thing regarding this. I wrote a script in the old Kwant to find the total conductance and compare it to the one in your notebook. While the two plots are qualitatively similar, they are not the same. Am I missing something, or am I calculating different things? Best, Camilla (my code): # Tutorial 2.3.1. Matrix structure of onsite and hopping elements # ================================================================ # # Physics background #  # Gaps in quantum wires with spinorbit coupling and Zeeman splititng, # as theoretically predicted in # http://prl.aps.org/abstract/PRL/v90/i25/e256601 # and (supposedly) experimentally oberved in # http://www.nature.com/nphys/journal/v6/n5/abs/nphys1626.html # # Kwant features highlighted #  #  Numpy matrices as values in Builder import kwant # For plotting import matplotlib.pyplot as plt # For matrix support import tinyarray import numpy as np # define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]]) def make_system(a=2, t=1.0, alpha=0.1, e_z=0.05, W=10, L=10): # Start with an empty tightbinding system and a single square lattice. # `a` is the lattice constant (by default set to 1 for simplicity). lat = kwant.lattice.square(a) sys = kwant.Builder() #### Define the scattering region. #### sys[(lat(x, y) for x in range(L) for y in range(W))] = \ 4 * t * sigma_0 + e_z * sigma_z # hoppings in xdirection sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x #### Define the left lead. #### lead = kwant.Builder(kwant.TranslationalSymmetry((a, 0))) lead[(lat(0, j) for j in range(W))] = 4 * t * sigma_0 # hoppings in xdirection lead[lat.neighbors()] = \ t * sigma_0 #### Attach the leads and return the finalized system. #### sys.attach_lead(lead) sys.attach_lead(lead.reversed()) return sys def plot_conductance(sys, energies): # Compute conductance data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0)) pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() def main(): sys = make_system() # Check that the system looks as intended. kwant.plot(sys) # Finalize the system. sys = sys.finalized() energies = np.linspace(0, 1, 200) smatrices = [kwant.smatrix(sys, energy) for energy in energies] fig = plt.figure(figsize=(13, 8)) ax = fig.add_subplot(1, 1, 1) ax.plot(energies, [smatrix.transmission(1,0) for smatrix in smatrices], label='total') ax.set_ylabel('$G [e^2/h]$', fontsize='xxlarge') ax.set_xlabel('$E/t$', fontsize='xxlarge') ax.legend(fontsize='xlarge') plt.show() # Call the main function if the script gets executed (as opposed to imported). # See <http://docs.python.org/library/__main__.html>. if __name__ == '__main__': main() Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 17. januar 2017 10:48 To: Camilla Espedal <camilla.espedal@ntnu.no> Cc: kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin Dear Camilla, It seems that you are trying to install Kwant on windows. This is a very hard task, and I fear none of the Kwant developers has enough knowledge of it right now (our Windows packages are built by Christoph Gohlke, see [1] for the build environment description). However if you are using windows 10, I suggest to try to install Kwant using the windows subsystem for linux. That way the standard Ubuntu build procedure should work for you. Best, Anton [1]: http://www.lfd.uci.edu/~gohlke/pythonlibs/ On Mon, Jan 16, 2017 at 9:45 AM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message:
"LINK: fatal error LNK1181: cannot open input file 'lapack.lib'"
Is there some package or installation I am missing?
Best regards, Camilla
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com> Cc: Camilla Espedal <camilla.espedal@ntnu.no>; kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Hi Camilla, everyone,
I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductanc e.ipynb
I've also provided more detailed installation instructions in the notebook.
Cheers, Anton
On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg0007 6 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Dear Camilla, Could the difference originate from you using a lattice constant of 2 instead of 1? Anton On Tue, Jan 24, 2017, 10:41 Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Dear Anton,
Thanks again for all your help. I will try to do it the linux way. Just one more thing regarding this. I wrote a script in the old Kwant to find the total conductance and compare it to the one in your notebook. While the two plots are qualitatively similar, they are not the same. Am I missing something, or am I calculating different things?
Best, Camilla
(my code):
# Tutorial 2.3.1. Matrix structure of onsite and hopping elements # ================================================================ # # Physics background #  # Gaps in quantum wires with spinorbit coupling and Zeeman splititng, # as theoretically predicted in # http://prl.aps.org/abstract/PRL/v90/i25/e256601 # and (supposedly) experimentally oberved in # http://www.nature.com/nphys/journal/v6/n5/abs/nphys1626.html # # Kwant features highlighted #  #  Numpy matrices as values in Builder
import kwant
# For plotting import matplotlib.pyplot as plt
# For matrix support import tinyarray import numpy as np
# define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]])
def make_system(a=2, t=1.0, alpha=0.1, e_z=0.05, W=10, L=10): # Start with an empty tightbinding system and a single square lattice. # `a` is the lattice constant (by default set to 1 for simplicity). lat = kwant.lattice.square(a)
sys = kwant.Builder()
#### Define the scattering region. #### sys[(lat(x, y) for x in range(L) for y in range(W))] = \ 4 * t * sigma_0 + e_z * sigma_z # hoppings in xdirection sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x
#### Define the left lead. #### lead = kwant.Builder(kwant.TranslationalSymmetry((a, 0)))
lead[(lat(0, j) for j in range(W))] = 4 * t * sigma_0 # hoppings in xdirection lead[lat.neighbors()] = \ t * sigma_0
#### Attach the leads and return the finalized system. #### sys.attach_lead(lead) sys.attach_lead(lead.reversed())
return sys
def plot_conductance(sys, energies): # Compute conductance data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0))
pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show()
def main(): sys = make_system()
# Check that the system looks as intended. kwant.plot(sys)
# Finalize the system. sys = sys.finalized() energies = np.linspace(0, 1, 200) smatrices = [kwant.smatrix(sys, energy) for energy in energies]
fig = plt.figure(figsize=(13, 8)) ax = fig.add_subplot(1, 1, 1)
ax.plot(energies, [smatrix.transmission(1,0) for smatrix in smatrices], label='total')
ax.set_ylabel('$G [e^2/h]$', fontsize='xxlarge') ax.set_xlabel('$E/t$', fontsize='xxlarge') ax.legend(fontsize='xlarge')
plt.show()
# Call the main function if the script gets executed (as opposed to imported). # See <http://docs.python.org/library/__main__.html>. if __name__ == '__main__': main()
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 17. januar 2017 10:48 To: Camilla Espedal <camilla.espedal@ntnu.no> Cc: kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Dear Camilla,
It seems that you are trying to install Kwant on windows. This is a very hard task, and I fear none of the Kwant developers has enough knowledge of it right now (our Windows packages are built by Christoph Gohlke, see [1] for the build environment description). However if you are using windows 10, I suggest to try to install Kwant using the windows subsystem for linux. That way the standard Ubuntu build procedure should work for you.
Best, Anton
[1]: http://www.lfd.uci.edu/~gohlke/pythonlibs/
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message:
"LINK: fatal error LNK1181: cannot open input file 'lapack.lib'"
Is there some package or installation I am missing?
Best regards, Camilla
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com> Cc: Camilla Espedal <camilla.espedal@ntnu.no>; kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Hi Camilla, everyone,
I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductanc e.ipynb
I've also provided more detailed installation instructions in the notebook.
Cheers, Anton
On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind
On Mon, Jan 16, 2017 at 9:45 AM, Camilla Espedal <camilla.espedal@ntnu.no> wrote: the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the
scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of
indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg0007 6 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Dear Anton, I triend changing it, but that does not solve the problem. Best, Camilla From: Anton Akhmerov [mailto:anton.akhmerov+kd@gmail.com] Sent: 24. januar 2017 12:36 To: Camilla Espedal <camilla.espedal@ntnu.no> Cc: kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin Dear Camilla, Could the difference originate from you using a lattice constant of 2 instead of 1? Anton On Tue, Jan 24, 2017, 10:41 Camilla Espedal <camilla.espedal@ntnu.no<mailto:camilla.espedal@ntnu.no>> wrote: Dear Anton, Thanks again for all your help. I will try to do it the linux way. Just one more thing regarding this. I wrote a script in the old Kwant to find the total conductance and compare it to the one in your notebook. While the two plots are qualitatively similar, they are not the same. Am I missing something, or am I calculating different things? Best, Camilla (my code): # Tutorial 2.3.1. Matrix structure of onsite and hopping elements # ================================================================ # # Physics background #  # Gaps in quantum wires with spinorbit coupling and Zeeman splititng, # as theoretically predicted in # http://prl.aps.org/abstract/PRL/v90/i25/e256601 # and (supposedly) experimentally oberved in # http://www.nature.com/nphys/journal/v6/n5/abs/nphys1626.html # # Kwant features highlighted #  #  Numpy matrices as values in Builder import kwant # For plotting import matplotlib.pyplot as plt # For matrix support import tinyarray import numpy as np # define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]]) def make_system(a=2, t=1.0, alpha=0.1, e_z=0.05, W=10, L=10): # Start with an empty tightbinding system and a single square lattice. # `a` is the lattice constant (by default set to 1 for simplicity). lat = kwant.lattice.square(a) sys = kwant.Builder() #### Define the scattering region. #### sys[(lat(x, y) for x in range(L) for y in range(W))] = \ 4 * t * sigma_0 + e_z * sigma_z # hoppings in xdirection sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x #### Define the left lead. #### lead = kwant.Builder(kwant.TranslationalSymmetry((a, 0))) lead[(lat(0, j) for j in range(W))] = 4 * t * sigma_0 # hoppings in xdirection lead[lat.neighbors()] = \ t * sigma_0 #### Attach the leads and return the finalized system. #### sys.attach_lead(lead) sys.attach_lead(lead.reversed()) return sys def plot_conductance(sys, energies): # Compute conductance data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0)) pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() def main(): sys = make_system() # Check that the system looks as intended. kwant.plot(sys) # Finalize the system. sys = sys.finalized() energies = np.linspace(0, 1, 200) smatrices = [kwant.smatrix(sys, energy) for energy in energies] fig = plt.figure(figsize=(13, 8)) ax = fig.add_subplot(1, 1, 1) ax.plot(energies, [smatrix.transmission(1,0) for smatrix in smatrices], label='total') ax.set_ylabel('$G [e^2/h]$', fontsize='xxlarge') ax.set_xlabel('$E/t$', fontsize='xxlarge') ax.legend(fontsize='xlarge') plt.show() # Call the main function if the script gets executed (as opposed to imported). # See <http://docs.python.org/library/__main__.html>. if __name__ == '__main__': main() Original Message From: anton.akhmerov@gmail.com<mailto:anton.akhmerov@gmail.com> [mailto:anton.akhmerov@gmail.com<mailto:anton.akhmerov@gmail.com>] On Behalf Of Anton Akhmerov Sent: 17. januar 2017 10:48 To: Camilla Espedal <camilla.espedal@ntnu.no<mailto:camilla.espedal@ntnu.no>> Cc: kwantdiscuss@kwantproject.org<mailto:kwantdiscuss@kwantproject.org> Subject: Re: [Kwant] Regarding smatrix and spin Dear Camilla, It seems that you are trying to install Kwant on windows. This is a very hard task, and I fear none of the Kwant developers has enough knowledge of it right now (our Windows packages are built by Christoph Gohlke, see [1] for the build environment description). However if you are using windows 10, I suggest to try to install Kwant using the windows subsystem for linux. That way the standard Ubuntu build procedure should work for you. Best, Anton [1]: http://www.lfd.uci.edu/~gohlke/pythonlibs/ On Mon, Jan 16, 2017 at 9:45 AM, Camilla Espedal <camilla.espedal@ntnu.no<mailto:camilla.espedal@ntnu.no>> wrote:
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message:
"LINK: fatal error LNK1181: cannot open input file 'lapack.lib'"
Is there some package or installation I am missing?
Best regards, Camilla
Original Message From: anton.akhmerov@gmail.com<mailto:anton.akhmerov@gmail.com> [mailto:anton.akhmerov@gmail.com<mailto:anton.akhmerov@gmail.com>] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com<mailto:torosdahl@gmail.com>> Cc: Camilla Espedal <camilla.espedal@ntnu.no<mailto:camilla.espedal@ntnu.no>>; kwantdiscuss@kwantproject.org<mailto:kwantdiscuss@kwantproject.org> Subject: Re: [Kwant] Regarding smatrix and spin
Hi Camilla, everyone,
I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductanc e.ipynb
I've also provided more detailed installation instructions in the notebook.
Cheers, Anton
On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com<mailto:torosdahl@gmail.com>> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no<mailto:camilla.espedal@ntnu.no>> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg0007 6 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
OK, please doublecheck the remaining simulation parameters. Anton On Tue, Jan 24, 2017 at 1:00 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Dear Anton,
I triend changing it, but that does not solve the problem.
Best,
Camilla
From: Anton Akhmerov [mailto:anton.akhmerov+kd@gmail.com] Sent: 24. januar 2017 12:36
To: Camilla Espedal <camilla.espedal@ntnu.no> Cc: kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Dear Camilla,
Could the difference originate from you using a lattice constant of 2 instead of 1?
Anton
On Tue, Jan 24, 2017, 10:41 Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Dear Anton,
Thanks again for all your help. I will try to do it the linux way. Just one more thing regarding this. I wrote a script in the old Kwant to find the total conductance and compare it to the one in your notebook. While the two plots are qualitatively similar, they are not the same. Am I missing something, or am I calculating different things?
Best, Camilla
(my code):
# Tutorial 2.3.1. Matrix structure of onsite and hopping elements # ================================================================ # # Physics background #  # Gaps in quantum wires with spinorbit coupling and Zeeman splititng, # as theoretically predicted in # http://prl.aps.org/abstract/PRL/v90/i25/e256601 # and (supposedly) experimentally oberved in # http://www.nature.com/nphys/journal/v6/n5/abs/nphys1626.html # # Kwant features highlighted #  #  Numpy matrices as values in Builder
import kwant
# For plotting import matplotlib.pyplot as plt
# For matrix support import tinyarray import numpy as np
# define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]])
def make_system(a=2, t=1.0, alpha=0.1, e_z=0.05, W=10, L=10): # Start with an empty tightbinding system and a single square lattice. # `a` is the lattice constant (by default set to 1 for simplicity). lat = kwant.lattice.square(a)
sys = kwant.Builder()
#### Define the scattering region. #### sys[(lat(x, y) for x in range(L) for y in range(W))] = \ 4 * t * sigma_0 + e_z * sigma_z # hoppings in xdirection sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x
#### Define the left lead. #### lead = kwant.Builder(kwant.TranslationalSymmetry((a, 0)))
lead[(lat(0, j) for j in range(W))] = 4 * t * sigma_0 # hoppings in xdirection lead[lat.neighbors()] = \ t * sigma_0
#### Attach the leads and return the finalized system. #### sys.attach_lead(lead) sys.attach_lead(lead.reversed())
return sys
def plot_conductance(sys, energies): # Compute conductance data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0))
pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show()
def main(): sys = make_system()
# Check that the system looks as intended. kwant.plot(sys)
# Finalize the system. sys = sys.finalized() energies = np.linspace(0, 1, 200) smatrices = [kwant.smatrix(sys, energy) for energy in energies]
fig = plt.figure(figsize=(13, 8)) ax = fig.add_subplot(1, 1, 1)
ax.plot(energies, [smatrix.transmission(1,0) for smatrix in smatrices], label='total')
ax.set_ylabel('$G [e^2/h]$', fontsize='xxlarge') ax.set_xlabel('$E/t$', fontsize='xxlarge') ax.legend(fontsize='xlarge')
plt.show()
# Call the main function if the script gets executed (as opposed to imported). # See <http://docs.python.org/library/__main__.html>. if __name__ == '__main__': main()
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 17. januar 2017 10:48 To: Camilla Espedal <camilla.espedal@ntnu.no> Cc: kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Dear Camilla,
It seems that you are trying to install Kwant on windows. This is a very hard task, and I fear none of the Kwant developers has enough knowledge of it right now (our Windows packages are built by Christoph Gohlke, see [1] for the build environment description). However if you are using windows 10, I suggest to try to install Kwant using the windows subsystem for linux. That way the standard Ubuntu build procedure should work for you.
Best, Anton
[1]: http://www.lfd.uci.edu/~gohlke/pythonlibs/
On Mon, Jan 16, 2017 at 9:45 AM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message:
"LINK: fatal error LNK1181: cannot open input file 'lapack.lib'"
Is there some package or installation I am missing?
Best regards, Camilla
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com> Cc: Camilla Espedal <camilla.espedal@ntnu.no>; kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Hi Camilla, everyone,
I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductanc e.ipynb
I've also provided more detailed installation instructions in the notebook.
Cheers, Anton
On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg0007 6 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
Dear Camillia, You called the function make_sys() with the default values for all the parameters, so you used alpha=0.1. On the online example, they changed the value to alpha=0.2 So, just change your parameters to a=1 and alpha=0.2 and you will get the same result. Regards, Adel On Tue, Jan 24, 2017 at 3:00 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Dear Anton,
I triend changing it, but that does not solve the problem.
Best,
Camilla
*From:* Anton Akhmerov [mailto:anton.akhmerov+kd@gmail.com] *Sent:* 24. januar 2017 12:36
*To:* Camilla Espedal <camilla.espedal@ntnu.no> *Cc:* kwantdiscuss@kwantproject.org *Subject:* Re: [Kwant] Regarding smatrix and spin
Dear Camilla,
Could the difference originate from you using a lattice constant of 2 instead of 1?
Anton
On Tue, Jan 24, 2017, 10:41 Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Dear Anton,
Thanks again for all your help. I will try to do it the linux way. Just one more thing regarding this. I wrote a script in the old Kwant to find the total conductance and compare it to the one in your notebook. While the two plots are qualitatively similar, they are not the same. Am I missing something, or am I calculating different things?
Best, Camilla
(my code):
# Tutorial 2.3.1. Matrix structure of onsite and hopping elements # ================================================================ # # Physics background #  # Gaps in quantum wires with spinorbit coupling and Zeeman splititng, # as theoretically predicted in # http://prl.aps.org/abstract/PRL/v90/i25/e256601 # and (supposedly) experimentally oberved in # http://www.nature.com/nphys/journal/v6/n5/abs/nphys1626.html # # Kwant features highlighted #  #  Numpy matrices as values in Builder
import kwant
# For plotting import matplotlib.pyplot as plt
# For matrix support import tinyarray import numpy as np
# define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]])
def make_system(a=2, t=1.0, alpha=0.1, e_z=0.05, W=10, L=10): # Start with an empty tightbinding system and a single square lattice. # `a` is the lattice constant (by default set to 1 for simplicity). lat = kwant.lattice.square(a)
sys = kwant.Builder()
#### Define the scattering region. #### sys[(lat(x, y) for x in range(L) for y in range(W))] = \ 4 * t * sigma_0 + e_z * sigma_z # hoppings in xdirection sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x
#### Define the left lead. #### lead = kwant.Builder(kwant.TranslationalSymmetry((a, 0)))
lead[(lat(0, j) for j in range(W))] = 4 * t * sigma_0 # hoppings in xdirection lead[lat.neighbors()] = \ t * sigma_0
#### Attach the leads and return the finalized system. #### sys.attach_lead(lead) sys.attach_lead(lead.reversed())
return sys
def plot_conductance(sys, energies): # Compute conductance data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(1, 0))
pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show()
def main(): sys = make_system()
# Check that the system looks as intended. kwant.plot(sys)
# Finalize the system. sys = sys.finalized() energies = np.linspace(0, 1, 200) smatrices = [kwant.smatrix(sys, energy) for energy in energies]
fig = plt.figure(figsize=(13, 8)) ax = fig.add_subplot(1, 1, 1)
ax.plot(energies, [smatrix.transmission(1,0) for smatrix in smatrices], label='total')
ax.set_ylabel('$G [e^2/h]$', fontsize='xxlarge') ax.set_xlabel('$E/t$', fontsize='xxlarge') ax.legend(fontsize='xlarge')
plt.show()
# Call the main function if the script gets executed (as opposed to imported). # See <http://docs.python.org/library/__main__.html>. if __name__ == '__main__': main()
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 17. januar 2017 10:48 To: Camilla Espedal <camilla.espedal@ntnu.no> Cc: kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Dear Camilla,
It seems that you are trying to install Kwant on windows. This is a very hard task, and I fear none of the Kwant developers has enough knowledge of it right now (our Windows packages are built by Christoph Gohlke, see [1] for the build environment description). However if you are using windows 10, I suggest to try to install Kwant using the windows subsystem for linux. That way the standard Ubuntu build procedure should work for you.
Best, Anton
[1]: http://www.lfd.uci.edu/~gohlke/pythonlibs/
Thanks a lot. I tried to install the cons_laws_combined, but I get the following error message:
"LINK: fatal error LNK1181: cannot open input file 'lapack.lib'"
Is there some package or installation I am missing?
Best regards, Camilla
Original Message From: anton.akhmerov@gmail.com [mailto:anton.akhmerov@gmail.com] On Behalf Of Anton Akhmerov Sent: 8. januar 2017 16:35 To: Tómas Örn Rosdahl <torosdahl@gmail.com> Cc: Camilla Espedal <camilla.espedal@ntnu.no>; kwantdiscuss@kwantproject.org Subject: Re: [Kwant] Regarding smatrix and spin
Hi Camilla, everyone,
I've slightly modified Tómas's example to a case where the spins do get coupled, check it out: http://nbviewer.jupyter.org/url/antonakhmerov.org/misc/spin_conductanc e.ipynb
I've also provided more detailed installation instructions in the notebook.
Cheers, Anton
On Sun, Jan 8, 2017 at 2:45 PM, Tómas Örn Rosdahl <torosdahl@gmail.com> wrote:
Dear Camilla,
For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here for an explanation of the basic idea behind
On Mon, Jan 16, 2017 at 9:45 AM, Camilla Espedal <camilla.espedal@ntnu.no> wrote: the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done  here is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This notebook contains a simple example to illustrate how to work with conservation laws and the
scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation  P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of
indices (lead index, block index).
Best regards, Tómas
On Fri, Jan 6, 2017 at 3:46 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:
Hi again,
This question is basically the same as this: https://www.mailarchive.com/kwantdiscuss@kwantproject.org/msg0007 6 .html
I want to calculate some things using the scattering matrix. I started out with a very simple system, most basic twoterminal system. For some energy there is one propagating mode. I now add matrix structure to the mix (just multiply by s_0 everywhere) and there are now 2 propagating modes (which makes sense).
Now, if I look at the reflection coefficients for lead 0 by using submatrix(0,0), it is now a 2x2 matrix after I introduced the matrices. How are the elements ordered? Is it
[[r_upup, r_updown],[r_downup, r_downdown]]
I know that I could make two lattices, but since I do not plan to use the other functions such as transmission. I just want the smatrix.
Hope you can help me, and thanks in advance.
Best regards,
Camilla
 Abbout Adel
participants (4)

Abbout Adel

Anton Akhmerov

Camilla Espedal

Tómas Örn Rosdahl