Normal metal - P Wave interface
Dear all, First off, thanks for all the hard work in this. Very much appreciated! I'm trying to write a system with a p-wave scattering region ( H = (p^2+V-\mu)\sigma_z +1/2 {\alpha, p} \cdot \sigma) with normal metal leads (\alpha = 0 in the leads). For simplicity, I'm going to talk about 1-D systems (chains) here, although I'm working on 2D systems. Because of the term linear in p, you can't take it directly to zero. For example: Define the p-wave parameter to be zero in the hopping between sites x=0 and x=1 (with lattice spacing=1). Then define the hopping between sites x=1 and x=2 to to be =1. Then, this will force all of the hoppings to undulate between 0 and 1. The way around this is to define it to be zero in one hopping, then 0.5 in the next hopping, and then 1 in the hopping after that. My question is: Is this automatically implemented? (Just in case, I'm putting this in by hand, not using HoppingKind, but iterating over nearest neighbors and conditionally setting sys[lat(x,y), lat(x+1,y) ] to values I want. ) Thank you very much, Baris
Hi Baris, Baris Pekerten <barisp@sabanciuniv.edu> writes:
(...)
Because of the term linear in p, you can't take it directly to zero. For example: Define the p-wave parameter to be zero in the hopping between sites x=0 and x=1 (with lattice spacing=1). Then define the hopping between sites x=1 and x=2 to to be =1. Then, this will force all of the hoppings to undulate between 0 and 1. The way around this is to define it to be zero in one hopping, then 0.5 in the next hopping, and then 1 in the hopping after that.
My question is: Is this automatically implemented?
I’m not entirely sure what you are up to, but this does not matter: Kwant never manipulates the Hamiltonian you set in any way. You get what you set. So just set the Hamiltonian that you would like to have. Without knowing much about your particular case, I recommend that you set all the nearest neighbor hoppings to a value function that you provide. (For example in the standard way using yourlattice.neigbhors().) The value function can then implement the particular hopping integral you would like to have. Best, Christoph
Hi Baris, just to summarize in more general terms what you want to do (I think this might not be clear to people that are not familiar with your particular model): Baris has a one-dimensional tight-binding model where there is a certain hopping t1 in the leads, and a certain hopping t2 in the system. The boundary conditions of the physical system lead to the fact that when you combine these two systems, you need to do this using the average hopping t' = 1/2 (t1+t2). The system hence looks like this (O denotes a lattice site, --t-- a hopping with value t): ... --t1--O--t1--O--t'--O--t2--O--t2-- ... Baris' question is now the following: He sets up a scattering region with hopping t2, and a lead with hopping t1. Does kwant now automatically attach the lead with the hopping t' when calling attach_lead()? No, this is *not* the case (in fact, since this depends on the underlying physcial properties of your model, kwant has no way to know this). When you call attach_lead(), the hopping from the lead to the system is *always* the hopping of the lead! So how do you make the system that is desired above? You have to add one site with the average hopping t' to the system by hand: ----------------------------- lat = kwant.lattice.chain() sys = kwant.Builder() # make the scattering region for i in xrange(L): sys[lat(i)] = onsite if i > 0: sys[lat(i-1), lat(i)] = t2 # add one additional site toghether with the average hopping sys[lat(-1)] = onsite sys[lat(-1), lat(0)] = 0.5 * (t1 + t2) # make lead lead = kwant.Builder(kwant.TranslationalSymmetry((-1, ))) lead[lat(0)] = onsite lead[lat(0), lat(1)] = t1 sys.attach_lead(lead) ----------------------------- Of course, you also have to do that ont he other side, too, if you wish to do the same there. Hope that helps, Michael On 20.01.2014 11:37, Baris Pekerten wrote:
Dear all,
First off, thanks for all the hard work in this. Very much appreciated!
I'm trying to write a system with a p-wave scattering region ( H = (p^2+V-\mu)\sigma_z +1/2 {\alpha, p} \cdot \sigma) with normal metal leads (\alpha = 0 in the leads). For simplicity, I'm going to talk about 1-D systems (chains) here, although I'm working on 2D systems.
Because of the term linear in p, you can't take it directly to zero. For example: Define the p-wave parameter to be zero in the hopping between sites x=0 and x=1 (with lattice spacing=1). Then define the hopping between sites x=1 and x=2 to to be =1. Then, this will force all of the hoppings to undulate between 0 and 1. The way around this is to define it to be zero in one hopping, then 0.5 in the next hopping, and then 1 in the hopping after that.
My question is: Is this automatically implemented?
(Just in case, I'm putting this in by hand, not using HoppingKind, but iterating over nearest neighbors and conditionally setting sys[lat(x,y), lat(x+1,y) ] to values I want. )
Thank you very much,
Baris
participants (3)
-
Baris Pekerten
-
christoph.groth@cea.fr
-
Michael Wimmer