kuangyia lee wrote:
Suppose I have two scattering regions (S1 and S2) which are defined with two shape functions (shape_function_1 and shape_function_2) and connected with their interface. So I am wondering a feasible way to implement different hoppings in regions S1 and S2. And after that, how to deal with the hoppings across the interface?
I also see Prof. Christoph Groth already giving some solutions on the relevant issue, see here: https://mailman-mail5.webfaction.com/pipermail/kwant-discuss/2016-November/0....
Thanks for taking the effort of searching the list archives before asking.
I think that in your case the approach (1) of my post from 2016 will work best. Let me try to explain it in more detail:
Construct two builders, syst1 and syst2 that contain your two regions S1 and S2. You may already attach leads at this point. I assume in the following that both builders contain sites from the same lattice (or lattices).
Make a an empty new builder, and add both S1 and S2 to it:
syst = kwant.Builder() syst.update(syst1) syst.update(syst2)
(Note that because of the way 'update' works, if there's any overlap between syst1 and syst2, the latter ones take precedence.)
Now, set the hoppings that connect both regions, that is any *potential* hoppings of the system that begin in syst2 but do not end in it. (I assume here that your model only has nearest neighbor hoppings, but the below code can be adopted easily.)
for a, b in syst.expand(lat.neigbhors()): if (a in syst2) != (b in syst2): syst[a, b] = ...
Does this answer your question?