Thank you, Pablo and Joe,
  Yes, KPM method did help, but I want to mention that energy_resolution parameter can be a bit misleading and for sharp DOS features one really needs to set it to notably lower value than naively expected.

Here is a bit of my code:

def compute_ldos4(sys, phi, depth, width, gap, epoints):
    print("computing LDOS for fi=" +str(phi))
    siteA = sys.id_by_site[a(0,0)]
    siteB = sys.id_by_site[b(0,0)]
    where =lambda s: (s.tag == numpy.array([0,0]))and ((s.family == a)or 
(s.family == b))
    vector_factory = kwant.kpm.LocalVectors(sys, where)
    local_dos = kwant.kpm.SpectralDensity(sys,params={'phi': phi,'depth': 
depth,'width': width,'gap': gap},
                                          num_vectors=None,
                                          vector_factory=vector_factory,
                                          mean=False,num_moments=10000)
    densities = local_dos(epoints)
      return densities

Best wishes,
Sergey

On 20/08/2020 16:58, Joseph Weston (Aquent LLC - Canada) wrote:
Hi Sergey

Pablo already said a few words about using KPM

Does kwant ldos  function work correctly if all the leads are insulating for a 
given energy?  Does it correctly catch the localized states in the scattering 
region?
kwant.ldos can only give the contribution to the ldos from the continuous part 
of the spectrum (i.e. the contribution from the *scattering* states).
If, as you indicate, none of your leads have open propagating modes at the 
energy that you are looking at then kwant.ldos will give 0.

Calculating the bound state spectrum for an open system (i.e. in the presence 
of leads) is not completely trivial.
This paper [1] outlines an algorithm to do so, but it's not foolproof 
(especially in the presence of almost-degeneracies).
I attempted to implement this algorithm in Kwant [2], but didn't finish due to 
time constraints.

If I understand your problem correctly you would actually like to study an 
*infinite* 2D sheet?
As you have discovered this is not really possible in current Kwant and you 
have to resort to using approximations (e.g. attaching many leads).
The good news is that there is work afoot to enable these kinds of calculations 
in Kwant, based on the approach outlined in this paper [3].
The bad news is that these things tend to move slowly and implementing [3] in a 
way that is robust remains a challenge.

On balance I would suggest a large finite sample and use of KPM may be your 
best bet for now.

Happy Kwanting,

Joe

[1]: https://arxiv.org/abs/1711.08250
[2]: https://gitlab.kwant-project.org/kwant/kwant/-/merge_requests/320
[3]: https://arxiv.org/abs/1906.09210


Reply via email to