From 242d62a9982146d36b3a5727028c15438dc57aa1 Mon Sep 17 00:00:00 2001 From: Anton Akhmerov <anton.akhmerov@gmail.com> Date: Fri, 15 Feb 2013 17:52:37 -0500 Subject: [PATCH] fix lattices with less vectors than the spatial dimension --- kwant/lattice.py | 8 +++++--- kwant/tests/test_lattice.py | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/kwant/lattice.py b/kwant/lattice.py index 4834f664..5a661470 100644 --- a/kwant/lattice.py +++ b/kwant/lattice.py @@ -99,12 +99,13 @@ class PolyatomicLattice(object): Site = builder.Site dim = len(start) + num_vecs = len(self.prim_vecs) if dim != self.prim_vecs.shape[1]: raise ValueError('Dimensionality of start position does not match' ' the space dimensionality.') sls = self.sublattices - deltas = [ta.array(i * (0,) + (1,) + (dim - 1 - i) * (0,)) - for i in xrange(dim)] + deltas = [ta.array(i * (0,) + (1,) + (num_vecs - 1 - i) * (0,)) + for i in xrange(num_vecs)] deltas += [-delta for delta in deltas] # Check if no sites are going to be added, to catch a common error. @@ -187,10 +188,11 @@ class MonatomicLattice(PolyatomicLattice, builder.SiteGroup): builder.SiteGroup.__init__(self) self.dim = dim + self._lattice_dim = len(prim_vecs) def normalize_tag(self, tag): tag = ta.array(tag, int) - if len(tag) != self.dim: + if len(tag) != self._lattice_dim: raise ValueError("Dimensionality mismatch.") return tag diff --git a/kwant/tests/test_lattice.py b/kwant/tests/test_lattice.py index 9c8a5495..5e93e577 100644 --- a/kwant/tests/test_lattice.py +++ b/kwant/tests/test_lattice.py @@ -15,6 +15,11 @@ def test_make_lattice(): site = sl(*tag) assert_equal(tag, sl.closest(site.pos)) + # Test 2D lattice with 1 vector. + lat = lattice.make_lattice([[1, 0]]) + site = lat(0) + assert_raises(ValueError, lat, 0, 1) + def test_shape(): def in_circle(pos): -- GitLab