diff --git a/kwant/continuum/discretizer.py b/kwant/continuum/discretizer.py index c6b95297b0f890167c2f907cd6e2af9dcac50017..ad79642aea7b737aa4c26fe5c534dabf5f421380 100644 --- a/kwant/continuum/discretizer.py +++ b/kwant/continuum/discretizer.py @@ -601,12 +601,12 @@ def _builder_value(expr, coords, grid_spacing, onsite, {str(k.func) for k in map_func_calls}) # check if all argument names are valid python identifiers - for name in arg_names: - if not (name.isidentifier() and not iskeyword(name)): + for arg_name in arg_names: + if not (arg_name.isidentifier() and not iskeyword(arg_name)): raise ValueError("Invalid name in used symbols: {}\n" "Names of symbols used in Hamiltonian " "must be valid Python identifiers and " - "may not be keywords".format(name)) + "may not be keywords".format(arg_name)) arg_names = ', '.join(sorted(arg_names)) diff --git a/kwant/continuum/tests/test_discretizer.py b/kwant/continuum/tests/test_discretizer.py index 47efbe3ad7e05ab5fe7b17e0e39b7300301ded9e..149150d54c63e1cf71892eec650e1ffd84b313a2 100644 --- a/kwant/continuum/tests/test_discretizer.py +++ b/kwant/continuum/tests/test_discretizer.py @@ -45,7 +45,7 @@ x, y, z = sympy.symbols('x y z', commutative=False) ax, ay, az = sympy.symbols('a_x a_y a_z') a = sympy.symbols('a') -wf = _wf +wf = _wf Psi = wf(x, y, z) A, B = sympy.symbols('A B', commutative=False) @@ -62,7 +62,7 @@ def test_reading_coordinates(commutative): kx**2 + ky**2 + kz**2 : ['x', 'y', 'z'], ky**2 + kz**2 : ['y', 'z'], kz**2 : ['z'], - kx * A(x,y) * kx : ['x'], + kx * A(x, y) * kx : ['x'], kx**2 + kz * B(y) : ['x', 'z'], } for inp, out in test.items(): @@ -78,7 +78,7 @@ def test_reading_coordinates_matrix(): (sympy.Matrix([kx**2 + ky**2 + kz**2]) , ['x', 'y', 'z']), (sympy.Matrix([ky**2 + kz**2]) , ['y', 'z']), (sympy.Matrix([kz**2]) , ['z']), - (sympy.Matrix([kx * A(x,y) * kx]) , ['x']), + (sympy.Matrix([kx * A(x, y) * kx]) , ['x']), (sympy.Matrix([kx**2 + kz * B(y)]) , ['x', 'z']), ] for inp, out in test: @@ -113,7 +113,7 @@ def test_simple_derivations(commutative): kz**2 : {(0,): 2/a**2, (1,): -1/a**2}, } non_commutative_test = { - kx * A(x,y) * kx : {(1, ): -A(a/2 + x, y)/a**2, + kx * A(x, y) * kx : {(1, ): -A(a/2 + x, y)/a**2, (0, ): A(-a/2 + x, y)/a**2 + A(a/2 + x, y)/a**2}, kx**2 + kz * B(y) : {(1, 0): -1/a**2, (0, 1): -I*B(y)/(2*a), (0, 0): 2/a**2}, @@ -160,7 +160,7 @@ def test_simple_derivations_matrix(): ky**2 + kz**2 : {(0, 1): -1/a**2, (0, 0): 4/a**2, (1, 0): -1/a**2}, kz**2 : {(0,): 2/a**2, (1,): -1/a**2}, - kx * A(x,y) * kx : {(1, ): -A(a/2 + x, y)/a**2, + kx * A(x, y) * kx : {(1, ): -A(a/2 + x, y)/a**2, (0, ): A(-a/2 + x, y)/a**2 + A(a/2 + x, y)/a**2}, kx**2 + kz * B(y) : {(1, 0): -1/a**2, (0, 1): -I*B(y)/(2*a), (0, 0): 2/a**2}, @@ -195,9 +195,9 @@ def test_simple_derivations_matrix(): def test_integer_float_input(): test = { - 0: {(0,0,0): 0}, - 1: {(0,0,0): 1}, - 5: {(0,0,0): 5}, + 0: {(0, 0, 0): 0}, + 1: {(0, 0, 0): 1}, + 5: {(0, 0, 0): 5}, } for inp, out in test.items(): @@ -266,7 +266,7 @@ def test_different_discrete_coordinates(): 'z', { (0,): ky**2 + kx**2 + 2/a**2, (1,): -1/a**2 } - ) , + ), ] for inp, out in test: got, _ = discretize_symbolic(kx**2 + ky**2 + kz**2, inp) @@ -298,8 +298,8 @@ def test_matrix_with_zeros(): Matrix = sympy.Matrix symbolic, _ = discretize_symbolic("[[k_x*A(x)*k_x, 0], [0, k_x*A(x)*k_x]]") output = { - (0,) : Matrix([[A(-a/2 + x)/a**2 + A(a/2 + x)/a**2, 0], [0, A(-a/2 + x)/a**2 + A(a/2 + x)/a**2]]), - (1,) : Matrix([[-A(a/2 + x)/a**2, 0], [0, -A(a/2 + x)/a**2]]), + (0,): Matrix([[A(-a/2 + x)/a**2 + A(a/2 + x)/a**2, 0], [0, A(-a/2 + x)/a**2 + A(a/2 + x)/a**2]]), + (1,): Matrix([[-A(a/2 + x)/a**2, 0], [0, -A(a/2 + x)/a**2]]), } assert symbolic == output @@ -326,7 +326,7 @@ def test_numeric_functions_basic_symbolic(): assert +1j * p['t'] == builder[lat(1), lat(0)](None, None, **p) -@pytest.mark.parametrize('commutative', [ True, False]) +@pytest.mark.parametrize('commutative', [True, False]) def test_numeric_function_coords_from_site(commutative): tb = {(0,): sympy.symbols('x', commutative=commutative)} builder = build_discretized(tb, 'x') @@ -336,7 +336,6 @@ def test_numeric_function_coords_from_site(commutative): assert (onsite(lat(0)) == 0 and onsite(lat(1)) == 1) - def test_numeric_functions_not_discrete_coords(): builder = discretize('k_y + y', 'x') lat = next(iter(builder.sites()))[0] @@ -401,8 +400,12 @@ def test_numeric_functions_with_subs(e_to_subs, e, subs): hop_direct = builder_direct[lat(0), lat(1)](None, None, **p) hop_subs = builder_subs[lat(0), lat(1)](None, None, **p) - assert hop_direct == hop_subs + assert hop_direct == hop_subs + +def test_onsite_hopping_function_name(): + template = str(discretize('A * k_x')) + assert 'def hopping' in template def test_numeric_functions_advance():