diff --git a/kwant/lattice.py b/kwant/lattice.py index 4834f664a4226c09fe8ad85387eee907418910e5..5a6614708ab0d30349e8309cc464ab473620d79a 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 9c8a5495fbdb2996bc379e36e8fff92db6c5d15a..5e93e577a3675b925e21a793a547db901685bf90 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):