From 0befa493fd7570b473a54cc9d07e9f8498aacf08 Mon Sep 17 00:00:00 2001
From: Anton Akhmerov <anton.akhmerov@gmail.com>
Date: Thu, 2 Nov 2023 20:02:43 +0100
Subject: [PATCH] make e positive, fixes #48

---
 qsymm/kwant_continuum.py | 3 +++
 qsymm/model.py           | 6 +++---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/qsymm/kwant_continuum.py b/qsymm/kwant_continuum.py
index c2e5695..7d16e30 100644
--- a/qsymm/kwant_continuum.py
+++ b/qsymm/kwant_continuum.py
@@ -51,6 +51,7 @@ import warnings
 
 momentum_operators = sympy.symbols('k_x k_y k_z', commutative=False)
 position_operators = sympy.symbols('x y z', commutative=False)
+e = sympy.symbols('e', positive=True)
 
 pauli = [sympy.eye(2), _msigma(1), _msigma(2), _msigma(3)]
 
@@ -217,6 +218,8 @@ def sympify(expr, locals=None):
         # sympify we are getting list of sympy objects, so we call sympify
         # second time to obtain ``sympy`` matrices.
         hamiltonian = sympy.sympify(hamiltonian)
+        # A workaround for qsymm issue #48
+        hamiltonian = hamiltonian.subs(sympy.sympify('e'), e)
     finally:
         if stored_value is not None:
             converter[list] = stored_value
diff --git a/qsymm/model.py b/qsymm/model.py
index 63b1458..1cbcf49 100644
--- a/qsymm/model.py
+++ b/qsymm/model.py
@@ -19,8 +19,8 @@ from . import kwant_continuum
 _commutative_momenta = [kwant_continuum.make_commutative(k, k)
            for k in kwant_continuum.momentum_operators]
 
-e = kwant_continuum.sympify('e')
-I = kwant_continuum.sympify('I')  # noqa: E741
+e = kwant_continuum.e
+I = sympy.I  # noqa: E741
 
 
 def substitute_exponents(expr):
@@ -990,7 +990,7 @@ def _find_momenta(momenta):
 
 @lru_cache(maxsize=1000)
 def _symbol_normalizer(key):
-    return sympy.expand_power_exp(sympy.sympify(key))
+    return sympy.expand_power_exp(sympy.sympify(key, locals={'e': e}))
 
 
 @lru_cache(maxsize=1000)
-- 
GitLab