diff --git a/kwant/builder.py b/kwant/builder.py index 8bddf07ee158e2e3c74ee8a271d937cc4b0e5fab..bae5a3d592c5b513f4f0e775f9634bc5e4b61051 100644 --- a/kwant/builder.py +++ b/kwant/builder.py @@ -970,7 +970,6 @@ class Builder(object): 'different site groups. See tutorial for more details.' raise ValueError(msg.format(tuple(groups))) - all_doms = list(sym.which(site)[0] for site in self.H if sym.to_fd(site) in H) if origin is not None: diff --git a/kwant/lattice.py b/kwant/lattice.py index 5a6614708ab0d30349e8309cc464ab473620d79a..af54c1a7ddcfa349384d8081aa37805ff549db48 100644 --- a/kwant/lattice.py +++ b/kwant/lattice.py @@ -307,28 +307,26 @@ class TranslationalSymmetry(builder.Symmetry): det_x_inv_m_part = det_x_inv_m[:num_dir, :] m_part = m[:, :num_dir] - self.site_group_data[gr] = (ta.array(det_x_inv_m_part), - ta.array(m_part), - det_m) + self.site_group_data[gr] = (ta.array(m_part), + ta.array(det_x_inv_m_part), det_m) @property def num_directions(self): return len(self.periods) - def which(self, site): + def _get_site_group_data(self, group): try: - det_x_inv_m_part, m_part, det_m = self.site_group_data[site.group] + return self.site_group_data[group] except KeyError: - self.add_site_group(site.group) - return self.which(site) + self.add_site_group(group) + return self.site_group_data[group] + + def which(self, site): + det_x_inv_m_part, det_m = self._get_site_group_data(site.group)[-2:] return ta.dot(det_x_inv_m_part, site.tag) // det_m def act(self, element, a, b=None): - try: - det_x_inv_m_part, m_part, det_m = self.site_group_data[a.group] - except KeyError: - self.add_site_group(a.group) - return self.act(element, a, b) + m_part = self._get_site_group_data(a.group)[0] try: delta = ta.dot(m_part, element) except ValueError: @@ -353,13 +351,13 @@ class TranslationalSymmetry(builder.Symmetry): periods = [[-i for i in j] for j in self.periods] result = TranslationalSymmetry(*periods) for gr in self.site_group_data: - det_x_inv_m_part, m_part, det_m = self.site_group_data[gr] + m_part, det_x_inv_m_part, det_m = self.site_group_data[gr] if self.num_directions % 2: det_m = -det_m else: det_x_inv_m_part = -det_x_inv_m_part m_part = -m_part - result.site_group_data[gr] = (det_x_inv_m_part, m_part, det_m) + result.site_group_data[gr] = (m_part, det_x_inv_m_part, det_m) return result