From 95834204951e6dcf6cb14311f76d7eb701dd7843 Mon Sep 17 00:00:00 2001
From: Markus Holzer <markus.holzer@fau.de>
Date: Sun, 26 Sep 2021 13:20:29 +0000
Subject: [PATCH] Fix smagorinsky

---
 lbmpy/creationfunctions.py      |  4 ++--
 lbmpy/turbulence_models.py      |  3 ++-
 lbmpy_tests/test_smagorinsky.py | 19 +++++++++++++++++++
 3 files changed, 23 insertions(+), 3 deletions(-)
 create mode 100644 lbmpy_tests/test_smagorinsky.py

diff --git a/lbmpy/creationfunctions.py b/lbmpy/creationfunctions.py
index 3f9947da..4a21560f 100644
--- a/lbmpy/creationfunctions.py
+++ b/lbmpy/creationfunctions.py
@@ -638,14 +638,14 @@ class LBMConfig:
     entropic_newton_iterations: int = None
     omega_output_field: Field = None
     smagorinsky: bool = False
-    fluctuating: bool = False
+    fluctuating: dict = False
     temperature: Any = None
 
     output: dict = field(default_factory=dict)
     velocity_input: Field = None
     density_input: Field = None
 
-    kernel_type: str = 'default_stream_collide'
+    kernel_type: Union[str, PdfFieldAccessor] = 'default_stream_collide'
     streaming_pattern: str = 'pull'
     timestep: lbmpy.advanced_streaming.Timestep = Timestep.BOTH
 
diff --git a/lbmpy/turbulence_models.py b/lbmpy/turbulence_models.py
index 4d955a1a..93150bf4 100644
--- a/lbmpy/turbulence_models.py
+++ b/lbmpy/turbulence_models.py
@@ -44,8 +44,9 @@ def add_smagorinsky_model(collision_rule, smagorinsky_constant, omega_output_fie
     method = collision_rule.method
     omega_s = get_shear_relaxation_rate(method)
 
-    found_symbolic_shear_relaxation = False
+    found_symbolic_shear_relaxation = True
     if isinstance(omega_s, float) or isinstance(omega_s, int):
+        found_symbolic_shear_relaxation = False
         for eq in collision_rule.all_assignments:
             if eq.rhs == omega_s:
                 found_symbolic_shear_relaxation = True
diff --git a/lbmpy_tests/test_smagorinsky.py b/lbmpy_tests/test_smagorinsky.py
new file mode 100644
index 00000000..bb5fc99b
--- /dev/null
+++ b/lbmpy_tests/test_smagorinsky.py
@@ -0,0 +1,19 @@
+import sympy as sp
+from pystencils.simp.subexpression_insertion import insert_constants
+
+from lbmpy import create_lb_collision_rule, LBMConfig, LBStencil, Stencil, Method
+
+
+def test_smagorinsky_with_constant_omega():
+    stencil = LBStencil(Stencil.D2Q9)
+
+    config = LBMConfig(stencil=stencil, method=Method.SRT, smagorinsky=True, relaxation_rate=sp.Symbol("omega"))
+    collision_rule = create_lb_collision_rule(lbm_config=config)
+
+    config = LBMConfig(stencil=stencil, method=Method.SRT, smagorinsky=True, relaxation_rate=1.5)
+    collision_rule2 = create_lb_collision_rule(lbm_config=config)
+
+    collision_rule = collision_rule.subs({sp.Symbol("omega"): 1.5})
+    collision_rule = insert_constants(collision_rule)
+
+    assert collision_rule == collision_rule2
\ No newline at end of file
-- 
GitLab