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.espe...@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 on-site and hopping elements
> # ================================================================
> #
> # Physics background
> # ------------------
> #  Gaps in quantum wires with spin-orbit 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 Pauli-matrices 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 tight-binding 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 x-direction
>     sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \
>         -t * sigma_0 - 1j * alpha * sigma_y
>     # hoppings in y-directions
>     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 x-direction
>     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='xx-large')
>     ax.set_xlabel('$E/t$', fontsize='xx-large')
>     ax.legend(fontsize='x-large')
>
>     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.akhme...@gmail.com [mailto:anton.akhme...@gmail.com] On
> Behalf Of Anton Akhmerov
> Sent: 17. januar 2017 10:48
> To: Camilla Espedal <camilla.espe...@ntnu.no>
> Cc: kwant-discuss@kwant-project.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.espe...@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.akhme...@gmail.com [mailto:anton.akhme...@gmail.com] On
> > Behalf Of Anton Akhmerov
> > Sent: 8. januar 2017 16:35
> > To: Tómas Örn Rosdahl <torosd...@gmail.com>
> > Cc: Camilla Espedal <camilla.espe...@ntnu.no>;
> > kwant-discuss@kwant-project.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 <torosd...@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.espe...@ntnu.no>
> >> wrote:
> >>>
> >>> Hi again,
> >>>
> >>>
> >>>
> >>> This question is basically the same as this:
> >>> https://www.mail-archive.com/kwant-discuss@kwant-project.org/msg0007
> >>> 6
> >>> .html
> >>>
> >>>
> >>>
> >>> I want to calculate some things using the scattering matrix. I
> >>> started out with a very simple system, most basic two-terminal
> >>> 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
> >>
> >>
>

Reply via email to