From 91546a1b35c62745f97837d40d0db0f44d2085bf Mon Sep 17 00:00:00 2001
From: Markus Holzer <markus.holzer@fau.de>
Date: Wed, 25 Sep 2024 16:12:26 +0200
Subject: [PATCH] test nightly

---
 src/lbmpy/methods/abstractlbmethod.py | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/lbmpy/methods/abstractlbmethod.py b/src/lbmpy/methods/abstractlbmethod.py
index 0337d432..4ec0048c 100644
--- a/src/lbmpy/methods/abstractlbmethod.py
+++ b/src/lbmpy/methods/abstractlbmethod.py
@@ -105,27 +105,26 @@ class AbstractLbMethod(abc.ABC):
         the subexpressions, that assign the number to the newly introduced symbol
         """
         rr = relaxation_rates if relaxation_rates is not None else self.relaxation_rates
-        unique_relaxation_rates = set()
         subexpressions = {}
         symbolic_relaxation_rates = list()
         for relaxation_rate in rr:
             relaxation_rate = sp.sympify(relaxation_rate)
-            symbolic_relaxation_rate = relaxation_rate
-            if relaxation_rate not in unique_relaxation_rates:
-                # special treatment for zero, sp.Zero would be an integer.
+            if isinstance(relaxation_rate, sp.Symbol):
+                symbolic_relaxation_rate = relaxation_rate
+            else:
                 if isinstance(relaxation_rate, Zero):
                     relaxation_rate = 0.0
-                if not isinstance(relaxation_rate, sp.Symbol):
+                if relaxation_rate in subexpressions:
+                    symbolic_relaxation_rate = subexpressions[relaxation_rate]
+                else:
                     symbolic_relaxation_rate = sp.Symbol(f"rr_{len(subexpressions)}")
                     subexpressions[relaxation_rate] = symbolic_relaxation_rate
             symbolic_relaxation_rates.append(symbolic_relaxation_rate)
-            unique_relaxation_rates.add(relaxation_rate)
 
-        new_rr = [subexpressions[sp.sympify(e)] if sp.sympify(e) in subexpressions else e for e in rr]
         substitutions = [Assignment(e[1], e[0]) for e in subexpressions.items()]
         if relaxation_rates_modifier is not None:
-            new_rr = [r * relaxation_rates_modifier for r in new_rr]
-        for rr in new_rr:
-            assert isinstance(rr, sp.Symbol)
+            symbolic_relaxation_rates = [r * relaxation_rates_modifier for r in symbolic_relaxation_rates]
+        for srr in symbolic_relaxation_rates:
+            assert isinstance(srr, sp.Symbol)
 
-        return substitutions, sp.diag(*new_rr)
+        return substitutions, sp.diag(*symbolic_relaxation_rates)
-- 
GitLab