diff --git a/kwant/builder.py b/kwant/builder.py index 39689bff6c542321228094e01cd4c608d908c815..0972b8d2624a1cd03fdcbf46b87340fccf7492d3 100644 --- a/kwant/builder.py +++ b/kwant/builder.py @@ -998,17 +998,24 @@ class Builder(object): # Check if site families of the lead are present in the system (catches # a common and a hard to find bug). families = set(site.family for site in H) + lead_only_families = families.copy() for site in self.H: - families.discard(site.family) - if not families: + lead_only_families.discard(site.family) + if not lead_only_families: break else: msg = 'Sites with site families {0} do not appear in the system, ' \ 'hence the system does not interrupt the lead.' - raise ValueError(msg.format(tuple(families))) + raise ValueError(msg.format(tuple(lead_only_families))) + + all_doms = set() + for site in self.H: + if site.family not in families: + continue + ge = sym.which(site) + if sym.act(-ge, site) in H: + all_doms.add(ge[0]) - all_doms = list(sym.which(site)[0] - for site in self.H if sym.to_fd(site) in H) if origin is not None: orig_dom = sym.which(origin)[0] all_doms = [dom for dom in all_doms if dom <= orig_dom]