I have a question concerning the leads. Suppose that I am considering a n-p-n or p-n-p junction, where the scattering region (assumed with a cubic geometry) is attached to two leads (say along the direction y) having the same Hamiltonian but different onsite energy. In the scattering region, a nearest-neighbor hopping occurs along \hat{y} c_{i + \hat{y}}^{\dagger} M c_{i} + H.c., with a matrix M not Hermitian in general. Going to attach the leads, I have a doubt if M is not Hermitian. Indeed, I think I can still write for the right lead: sym_right_lead = kwant.TranslationalSymmetry((0, a, 0)) right_lead = kwant.Builder(sym_right_lead) for i in range(W): for k in range(W): right_lead[lat(i, 1, k), lat(i, 0, k)] = M syst.attach_lead(right_lead) However, for the left lead I have the doubt between sym_left_lead = kwant.TranslationalSymmetry((0, -a, 0)) left_lead = kwant.Builder(sym_left_lead) for i in range(W): for k in range(W): left_lead[lat(i, 1, k), lat(i, 0, k)] = M syst.attach_lead(left_lead) and the same code with M^{dagger}: left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger} (or, I guess, equivalently the form in terms of the interchanged hopping: left_lead[lat(i, 0, k), lat(i, 1, k)] = M). Between the two options, nothing changes in the spectrum of the leads (fine !), but I does for the conductance of the junction. Can you help me ? Thank you very much L. L.
Dear Luca, Looking at the band structure of the lead will not help you to check your propositions. In fact, you will always have the same spectrum with M or M^\dagger. As you noticed, the difference could be seen in the conductance for example. The answer to your question is that you need to put the same hopping in the same direction. So, if you used left_right[lat(i, 1, k), lat(i, 0, k)] = M you need to put left_lead[lat(i, 1, k), lat(i, 0, k)] = M, which more consistent with the same kind of hopping in the direction (0,1,0) Did you think about using lead.reversed() ? I hope this helps. Adel On Tue, Mar 5, 2019 at 11:57 AM Luca Lepori <llepori81@gmail.com> wrote:
I have a question concerning the leads.
Suppose that I am considering a n-p-n or p-n-p junction, where the scattering region (assumed with a cubic geometry) is attached to two leads (say along the direction y) having the same Hamiltonian but different onsite energy. In the scattering region, a nearest-neighbor hopping occurs along \hat{y} c_{i + \hat{y}}^{\dagger} M c_{i} + H.c., with a matrix M not Hermitian in general. Going to attach the leads, I have a doubt if M is not Hermitian.
Indeed, I think I can still write for the right lead:
sym_right_lead = kwant.TranslationalSymmetry((0, a, 0)) right_lead = kwant.Builder(sym_right_lead)
for i in range(W): for k in range(W):
right_lead[lat(i, 1, k), lat(i, 0, k)] = M
syst.attach_lead(right_lead)
However, for the left lead I have the doubt between
sym_left_lead = kwant.TranslationalSymmetry((0, -a, 0)) left_lead = kwant.Builder(sym_left_lead)
for i in range(W): for k in range(W):
left_lead[lat(i, 1, k), lat(i, 0, k)] = M
syst.attach_lead(left_lead)
and the same code with M^{dagger}:
left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger}
(or, I guess, equivalently the form in terms of the interchanged hopping: left_lead[lat(i, 0, k), lat(i, 1, k)] = M).
Between the two options, nothing changes in the spectrum of the leads (fine !), but I does for the conductance of the junction.
Can you help me ?
Thank you very much
L. L.
-- Abbout Adel
Dear Adel, thank you very much for your answer. Sorry, I think to miss the final point: the line right_lead[lat(i, 1, k), lat(i, 0, k)] = M should amount to the hopping c_{i + \hat{y}}^{\dagger} M c_{i} in the direction (0,1,0). Now, the line left_lead[lat(i, 1, k), lat(i, 0, k)] = M should amount to the hopping c_{i - \hat{y}}^{\dagger} M c_{i} in the direction (0,-1,0) (opposite to (0,1,0)). It is correct ? This is way I suspected to have to use instead left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger} (equivalently left_lead[lat(i, 0, k), lat(i, 1, k)] = M): I want the same hopping in the same direction, as you said. Maybe I missed the logic of the code ? Yes, lead.reverse() is definitively a good option, but left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger} since I am starting with Kwant, I prefer to understand the low-level programming, first. Thank you very much again L. Il giorno mar 5 mar 2019 alle ore 10:20 Abbout Adel <abbout.adel@gmail.com> ha scritto:
Dear Luca,
Looking at the band structure of the lead will not help you to check your propositions. In fact, you will always have the same spectrum with M or M^\dagger.
As you noticed, the difference could be seen in the conductance for example. The answer to your question is that you need to put the same hopping in the same direction. So, if you used left_right[lat(i, 1, k), lat(i, 0, k)] = M you need to put left_lead[lat(i, 1, k), lat(i, 0, k)] = M, which more consistent with the same kind of hopping in the direction (0,1,0)
Did you think about using lead.reversed() ?
I hope this helps. Adel
On Tue, Mar 5, 2019 at 11:57 AM Luca Lepori <llepori81@gmail.com> wrote:
I have a question concerning the leads.
Suppose that I am considering a n-p-n or p-n-p junction, where the scattering region (assumed with a cubic geometry) is attached to two leads (say along the direction y) having the same Hamiltonian but different onsite energy. In the scattering region, a nearest-neighbor hopping occurs along \hat{y} c_{i + \hat{y}}^{\dagger} M c_{i} + H.c., with a matrix M not Hermitian in general. Going to attach the leads, I have a doubt if M is not Hermitian.
Indeed, I think I can still write for the right lead:
sym_right_lead = kwant.TranslationalSymmetry((0, a, 0)) right_lead = kwant.Builder(sym_right_lead)
for i in range(W): for k in range(W):
right_lead[lat(i, 1, k), lat(i, 0, k)] = M
syst.attach_lead(right_lead)
However, for the left lead I have the doubt between
sym_left_lead = kwant.TranslationalSymmetry((0, -a, 0)) left_lead = kwant.Builder(sym_left_lead)
for i in range(W): for k in range(W):
left_lead[lat(i, 1, k), lat(i, 0, k)] = M
syst.attach_lead(left_lead)
and the same code with M^{dagger}:
left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger}
(or, I guess, equivalently the form in terms of the interchanged hopping: left_lead[lat(i, 0, k), lat(i, 1, k)] = M).
Between the two options, nothing changes in the spectrum of the leads (fine !), but I does for the conductance of the junction.
Can you help me ?
Thank you very much
L. L.
-- Abbout Adel
Hi Luca, The symmetry gives you the direction of the construction of the lead. The hopping is given by (lat(to_site), lat.(from_site)) So you need to put left_lead[lat(i, 1, k), lat(i, 0, k)] = M Adel On Tue, Mar 5, 2019 at 1:05 PM Luca Lepori <llepori81@gmail.com> wrote:
Dear Adel,
thank you very much for your answer.
Sorry, I think to miss the final point: the line
right_lead[lat(i, 1, k), lat(i, 0, k)] = M
should amount to the hopping
c_{i + \hat{y}}^{\dagger} M c_{i}
in the direction (0,1,0). Now, the line
left_lead[lat(i, 1, k), lat(i, 0, k)] = M
should amount to the hopping
c_{i - \hat{y}}^{\dagger} M c_{i}
in the direction (0,-1,0) (opposite to (0,1,0)). It is correct ? This is way I suspected to have to use instead
left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger} (equivalently left_lead[lat(i, 0, k), lat(i, 1, k)] = M):
I want the same hopping in the same direction, as you said. Maybe I missed the logic of the code ?
Yes, lead.reverse() is definitively a good option, but left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger} since I am starting with Kwant, I prefer to understand the low-level programming, first.
Thank you very much again
L.
Il giorno mar 5 mar 2019 alle ore 10:20 Abbout Adel <abbout.adel@gmail.com> ha scritto:
Dear Luca,
Looking at the band structure of the lead will not help you to check
your propositions. In fact, you will always have the same spectrum with M or M^\dagger.
As you noticed, the difference could be seen in the conductance for
The answer to your question is that you need to put the same hopping in
example. the same direction. So, if you used
left_right[lat(i, 1, k), lat(i, 0, k)] = M you need to put left_lead[lat(i, 1, k), lat(i, 0, k)] = M, which more consistent with the same kind of hopping in the direction (0,1,0)
Did you think about using lead.reversed() ?
I hope this helps. Adel
On Tue, Mar 5, 2019 at 11:57 AM Luca Lepori <llepori81@gmail.com> wrote:
I have a question concerning the leads.
Suppose that I am considering a n-p-n or p-n-p junction, where the scattering region (assumed with a cubic geometry) is attached to two leads (say along the direction y) having the same Hamiltonian but different onsite energy. In the scattering region, a nearest-neighbor hopping occurs along
\hat{y}
c_{i + \hat{y}}^{\dagger} M c_{i} + H.c., with a matrix M not Hermitian in general. Going to attach the leads, I have a doubt if M is not Hermitian.
Indeed, I think I can still write for the right lead:
sym_right_lead = kwant.TranslationalSymmetry((0, a, 0)) right_lead = kwant.Builder(sym_right_lead)
for i in range(W): for k in range(W):
right_lead[lat(i, 1, k), lat(i, 0, k)] = M
syst.attach_lead(right_lead)
However, for the left lead I have the doubt between
sym_left_lead = kwant.TranslationalSymmetry((0, -a, 0)) left_lead = kwant.Builder(sym_left_lead)
for i in range(W): for k in range(W):
left_lead[lat(i, 1, k), lat(i, 0, k)] = M
syst.attach_lead(left_lead)
and the same code with M^{dagger}:
left_lead[lat(i, 1, k), lat(i, 0, k)] = M^{\dagger}
(or, I guess, equivalently the form in terms of the interchanged hopping: left_lead[lat(i, 0, k), lat(i, 1, k)] = M).
Between the two options, nothing changes in the spectrum of the leads (fine !), but I does for the conductance of the junction.
Can you help me ?
Thank you very much
L. L.
-- Abbout Adel
-- Abbout Adel
participants (2)
-
Abbout Adel -
Luca Lepori