diff --git a/kwant/builder.py b/kwant/builder.py index 9c93bae507478f9d05bf2ecd05c839c136b9f278..5dedfefb6e6702e80d9e63b7aa39e1c537572835 100644 --- a/kwant/builder.py +++ b/kwant/builder.py @@ -424,8 +424,8 @@ class HermConjOfFunc(object): def __init__(self, function): self.function = function - def __call__(self, i, j): - return herm_conj(self.function(j, i)) + def __call__(self, i, j, *args): + return herm_conj(self.function(j, i, *args)) ################ Leads diff --git a/kwant/tests/test_builder.py b/kwant/tests/test_builder.py index 67158f1b3efe991c459cddea3098b45f29268347..917fd548a2ed5ecbd1d2e71a84e13f9dbef5298b 100644 --- a/kwant/tests/test_builder.py +++ b/kwant/tests/test_builder.py @@ -210,10 +210,10 @@ def test_construction_and_indexing(): def test_hermitian_conjugation(): - def f(i, j): + def f(i, j, arg): i, j = i.tag, j.tag if j[0] == i[0] + 1: - return ta.array([[1, 2j], [3 + 1j, 4j]]) + return arg * ta.array([[1, 2j], [3 + 1j, 4j]]) else: raise ValueError @@ -224,8 +224,8 @@ def test_hermitian_conjugation(): sys[fam(0), fam(1)] = f assert sys[fam(0), fam(1)] is f assert isinstance(sys[fam(1), fam(0)], builder.HermConjOfFunc) - assert_equal(sys[fam(1), fam(0)](fam(1), fam(0)), - sys[fam(0), fam(1)](fam(0), fam(1)).conjugate().transpose()) + assert_equal(sys[fam(1), fam(0)](fam(1), fam(0), 2), + sys[fam(0), fam(1)](fam(0), fam(1), 2).conjugate().transpose()) sys[fam(0), fam(1)] = sys[fam(1), fam(0)] assert isinstance(sys[fam(0), fam(1)], builder.HermConjOfFunc) assert sys[fam(1), fam(0)] is f diff --git a/kwant/tests/test_system.py b/kwant/tests/test_system.py index be78058f2ff5bdaaf4fe0d9f576df22ee5fa2acb..29f548087232b92a92292fae687a48183d84a8eb 100644 --- a/kwant/tests/test_system.py +++ b/kwant/tests/test_system.py @@ -91,10 +91,10 @@ def test_hamiltonian_submatrix(): sys[((chain(i), chain(i + 1)) for i in xrange(2))] = hopping sys2 = sys.finalized() mat = sys2.hamiltonian_submatrix((2, 1)) - mat_should_be = [[5, 1, 0], [1, 4, 1.], [0, 1, 3]] + mat_should_be = [[3, 1, 0], [1, 4, 1], [0, 1, 5]] # Sorting is required due to unknown compression order of builder. - onsite_hamiltonians = mat.flat[::3] + onsite_hamiltonians = mat.flat[::4] perm = np.argsort(onsite_hamiltonians) mat = mat[perm, :] mat = mat[:, perm]