Wrapping leads around a channel
Hi all, I am working on trying to create a system where there is a lead which wraps around the edge of a sample. For example, I have included a code which generates a square scattering region with two contacts, one extending vertically and the other extending horizontally. What I would like to do is combine these two contacts into a single contact, so this might represent a system where there is a contact that has been etched surrounding a central region. I think that the way to approach this would be to generate one wide contact, whose width is equal to the combined with of the contacts in my code (40 in my example). This contact would then be attached to the channel and its interface would be wrapped around the channel. Unfortunately, I am at a bit of a loss as to how I would code this. My main reason for wanting to do this rather than treat the problem with two separate leads is that the modes are going to be different between the two. Ultimately, it would be nice to be able to do this in a way that wraps the lead completely around the outer edge of the channel to simulate some sort of open boundary condition. Additionally, it would be nice to do something similar with a hole in the middle of the scattering region, to construct a Corbino disk. If anyone as any advice, I would love to hear it! Thanks, Sam LaGasse Here is the code: import kwant import matplotlib.pyplot as plt lat = kwant.lattice.square(a=1) s = 20.0 t = 1 def square(pos): x, y = pos return x <= s/2 and x >= -s/2 and y <= s/2 and y >= -s/2 y_min = -10. y_max = +10. x_min = -10. x_max = +10. def y_contact(pos): x, y = pos return x >= y_min and x <= y_max def x_contact(pos): x, y = pos return y >= y_min and y <= y_max sys = kwant.Builder() sys[lat.shape(square, (0,0))] = 4*t sys[lat.neighbors()] = -t sym0 = kwant.TranslationalSymmetry((-1,0)) sym_down = kwant.TranslationalSymmetry((0,1)) lead0 = kwant.Builder(sym_down) lead0[lat.shape(y_contact, (0, 0))] = 0 lead0[lat.neighbors()] = -t lead1 = kwant.Builder(sym0) lead1[lat.shape(x_contact, (0, 0))] = 0 lead1[lat.neighbors()] = -t sys.attach_lead(lead0) # top sys.attach_lead(lead1) # left kwant.plot(sys) plt.show()
Hi Sam,
I am working on trying to create a system where there is a lead which wraps around the edge of a sample.
For example, I have included a code which generates a square scattering region with two contacts, one extending vertically and the other extending horizontally. What I would like to do is combine these two contacts into a single contact, so this might represent a system where there is a contact that has been etched surrounding a central region.
I think that the way to approach this would be to generate one wide contact, whose width is equal to the combined with of the contacts in my code (40 in my example). This contact would then be attached to the channel and its interface would be wrapped around the channel. Unfortunately, I am at a bit of a loss as to how I would code this.
My main reason for wanting to do this rather than treat the problem with two separate leads is that the modes are going to be different between the two. Ultimately, it would be nice to be able to do this in a way that wraps the lead completely around the outer edge of the channel to simulate some sort of open boundary condition. Additionally, it would be nice to do something similar with a hole in the middle of the scattering region, to construct a Corbino disk.
If I understand correctly, you would like to construct a lead with a 2D translational symmetry and solve a scattering problem where you attach this lead to some 0D scattering region. Unfortunately this is not something that Kwant is capable of, currently. Essentially the fact that you have a 2D lead means that you will have an infinite number of modes at a given energy (waves can be scattered at arbitrary angles). This is in constrast to the case with (quasi-) 1D leads where there are a finite number of modes at a given energy. This is definitely a direction where we are looking to extend Kwant, however it will be some time before we have anything concrete.
Hi Joe, Thanks for your fast response. I think I might not have been clear with what I am attempting, so I included a diagram as an attachment. I'm trying to study a system where a contact has been patterned around the outer edge of a channel. Initially I have tried attaching one lead oriented along the z-direction (similar to the Hanle valve example in the Kwant paper), which allows me to make one lead which boarders two sides of the device (and vertical leads in the middle). Unfortunately, these do not seem to work in the way that I want. Even with a very large number of modes in such a lead, it seems that only a few modes actually are able to transmit into the channel. I suspect this has to do with the primarily z-transporting waves having to somehow convert into transporting only in the plane of the channel- most just reflect back into the lead. Instead, I have been trying to solve the problem using a solution where the leads are constructed in the plane of the sample. One approach I have taken to this is separating the lead into two, one along x and one along y (labeled virtual contact 1 and 2). Since these two contacts are treated independently, they are out of phase with one another. My hope is to somehow construct one contact (with 1 translational symmetry) that has a width of the perimeter of the red line in my diagram. I would like to then attach the contact in such a way that it bends around the corner. It sounds like this would not be possible though. A side question then- Is there anyway that you know of that I could tell Kwant to treat the virtual contacts I labeled in my diagram such that the waves would be coherent with one another? Currently the big problem that I face with that method is the waves coming out of the contacts do not interfere. Thanks! Sam ________________________________________ From: Joseph Weston <joseph.weston08@gmail.com> Sent: Wednesday, April 12, 2017 3:43 PM To: LaGasse, Samuel Cc: kwant-discuss@kwant-project.org Subject: Re: [Kwant] Wrapping leads around a channel Hi Sam,
I am working on trying to create a system where there is a lead which wraps around the edge of a sample.
For example, I have included a code which generates a square scattering region with two contacts, one extending vertically and the other extending horizontally. What I would like to do is combine these two contacts into a single contact, so this might represent a system where there is a contact that has been etched surrounding a central region.
I think that the way to approach this would be to generate one wide contact, whose width is equal to the combined with of the contacts in my code (40 in my example). This contact would then be attached to the channel and its interface would be wrapped around the channel. Unfortunately, I am at a bit of a loss as to how I would code this.
My main reason for wanting to do this rather than treat the problem with two separate leads is that the modes are going to be different between the two. Ultimately, it would be nice to be able to do this in a way that wraps the lead completely around the outer edge of the channel to simulate some sort of open boundary condition. Additionally, it would be nice to do something similar with a hole in the middle of the scattering region, to construct a Corbino disk.
If I understand correctly, you would like to construct a lead with a 2D translational symmetry and solve a scattering problem where you attach this lead to some 0D scattering region. Unfortunately this is not something that Kwant is capable of, currently. Essentially the fact that you have a 2D lead means that you will have an infinite number of modes at a given energy (waves can be scattered at arbitrary angles). This is in constrast to the case with (quasi-) 1D leads where there are a finite number of modes at a given energy. This is definitely a direction where we are looking to extend Kwant, however it will be some time before we have anything concrete.
Hi Sam, Thanks for the clarification.
I'm trying to study a system where a contact has been patterned around the outer edge of a channel. Initially I have tried attaching one lead oriented along the z-direction (similar to the Hanle valve example in the Kwant paper), which allows me to make one lead which boarders two sides of the device (and vertical leads in the middle).
My hope is to somehow construct one contact (with 1 translational symmetry) that has a width of the perimeter of the red line in my diagram. I would like to then attach the contact in such a way that it bends around the corner. It sounds like this would not be possible though.
What is it that you are hoping to acheive with the contact that "bends round the corner? Naively I would say that you could construct the system that I have attached as an image. Essentially you would just add the part of the lead that "bends round the system" as an explicit part of the scattering region. What were you hoping to achieve by attaching two leads in the first place? Joe
Hi Joe, The main reason for wanting to have the contact wrap around a corner, and not just add cells to the scattering region, is that it will act as a dephasing boundary when we perform Landauer-Buttiker equation calculations. I don't want to plug my own paper, but we recently wrote up a manuscript where this can be done with a virtual contact, except it was just a straight contact on the side of the device (it is on arXiv). Now I am hoping to extend that to where the contact wraps around. In this way you could engineer where dephasing happens in a device- something we are also trying to achieve in the lab. You can sort of do this with Kwant by making two virtual contacts as I showed and then fixing them to the same voltage in the Landauer-Buttiker calculation, however the waves injected from the two contacts are out of phase with one another and will not interfere. I don't think that is a huge issue, but it is not ideal. Something which I think is related to this, would be to create some sort of isotropic source inside of a sheet by wrapping a contact around the interior of a hole. Currently the best way I have seen to inject electrons isotropically (or close) in the middle of a scattering region is as was shown in the Hanle valve example. Unfortunately, I have not found a good way to make these leads couple to the scattering region well. Maybe there is some other way to achieve this? Thanks! Sam ________________________________________ From: Joseph Weston <joseph.weston08@gmail.com> Sent: Thursday, April 13, 2017 9:58 AM To: LaGasse, Samuel Cc: kwant-discuss@kwant-project.org Subject: Re: [Kwant] Wrapping leads around a channel Hi Sam, Thanks for the clarification.
I'm trying to study a system where a contact has been patterned around the outer edge of a channel. Initially I have tried attaching one lead oriented along the z-direction (similar to the Hanle valve example in the Kwant paper), which allows me to make one lead which boarders two sides of the device (and vertical leads in the middle).
My hope is to somehow construct one contact (with 1 translational symmetry) that has a width of the perimeter of the red line in my diagram. I would like to then attach the contact in such a way that it bends around the corner. It sounds like this would not be possible though.
What is it that you are hoping to acheive with the contact that "bends round the corner? Naively I would say that you could construct the system that I have attached as an image. Essentially you would just add the part of the lead that "bends round the system" as an explicit part of the scattering region. What were you hoping to achieve by attaching two leads in the first place? Joe
participants (2)
-
Joseph Weston
-
LaGasse, Samuel