From 53782ea8418194981e8e8dbfdde2d57793df4d39 Mon Sep 17 00:00:00 2001
From: Michael Kuron <mkuron@icp.uni-stuttgart.de>
Date: Mon, 18 Nov 2019 15:19:49 +0100
Subject: [PATCH] Disable cse_global on create_lb_collision_rule for Sympy <
 1.2

---
 lbmpy/creationfunctions.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/lbmpy/creationfunctions.py b/lbmpy/creationfunctions.py
index f7e30b3a..1dac917a 100644
--- a/lbmpy/creationfunctions.py
+++ b/lbmpy/creationfunctions.py
@@ -349,7 +349,12 @@ def create_lb_collision_rule(lb_method=None, optimization={}, **kwargs):
         collision_rule = cse_in_opposing_directions(collision_rule)
     if cse_global:
         from pystencils.simp import sympy_cse
-        collision_rule = sympy_cse(collision_rule)
+        sp_ver = sp.__version__.split('.')
+        if int(sp_ver[0]) > 1 or int(sp_ver[1]) > 1:
+            collision_rule = sympy_cse(collision_rule)
+        else:
+            import warnings
+            warnings.warn('SymPy versions below 1.2 may perform common subexpression elimination incorrectly on LB collision rules. Ignoring cse_global.')
 
     if params['output'] and params['kernel_type'] == 'stream_pull_collide':
         cqc = lb_method.conserved_quantity_computation
-- 
GitLab