From 28de45b8557788ff62b784bb0da2d8bfc75de8b3 Mon Sep 17 00:00:00 2001
From: Markus Holzer <markus.holzer@fau.de>
Date: Fri, 4 Oct 2024 12:27:07 +0200
Subject: [PATCH] Fix PSM

---
 src/lbmpy/methods/abstractlbmethod.py |  5 +++--
 tests/test_psm.py                     | 23 +++++++++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)
 create mode 100644 tests/test_psm.py

diff --git a/src/lbmpy/methods/abstractlbmethod.py b/src/lbmpy/methods/abstractlbmethod.py
index 4ec0048c..17ee881d 100644
--- a/src/lbmpy/methods/abstractlbmethod.py
+++ b/src/lbmpy/methods/abstractlbmethod.py
@@ -124,7 +124,8 @@ class AbstractLbMethod(abc.ABC):
         substitutions = [Assignment(e[1], e[0]) for e in subexpressions.items()]
         if relaxation_rates_modifier is not None:
             symbolic_relaxation_rates = [r * relaxation_rates_modifier for r in symbolic_relaxation_rates]
-        for srr in symbolic_relaxation_rates:
-            assert isinstance(srr, sp.Symbol)
+        else:
+            for srr in symbolic_relaxation_rates:
+                assert isinstance(srr, sp.Symbol)
 
         return substitutions, sp.diag(*symbolic_relaxation_rates)
diff --git a/tests/test_psm.py b/tests/test_psm.py
new file mode 100644
index 00000000..02915df0
--- /dev/null
+++ b/tests/test_psm.py
@@ -0,0 +1,23 @@
+import pytest
+
+from pystencils import fields, CreateKernelConfig, Target, create_kernel, get_code_str
+from lbmpy import LBMConfig, Stencil, Method, LBStencil, create_lb_method, create_lb_collision_rule
+from lbmpy.partially_saturated_cells import PSMConfig
+
+
+@pytest.mark.parametrize('stencil', [Stencil.D2Q9, Stencil.D3Q15, Stencil.D3Q19, Stencil.D3Q27])
+def test_psm_integration(stencil):
+    stencil = LBStencil(stencil)
+
+    fraction_field = fields("fraction_field: double[66, 18, 18]", layout=(2, 1, 0))
+    object_vel = fields("object_vel(3): double[66, 18, 18]", layout=(3, 2, 1, 0))
+    psm_config = PSMConfig(fraction_field=fraction_field,object_velocity_field=object_vel)
+
+    lbm_config = LBMConfig(stencil=stencil, method=Method.SRT, relaxation_rate=1.5, psm_config=psm_config)
+    config = CreateKernelConfig(target=Target.CPU)
+
+    method = create_lb_method(lbm_config)
+    collision_rule = create_lb_collision_rule(method)
+
+    ast = create_kernel(collision_rule, config=config)
+    code_str = get_code_str(ast)
\ No newline at end of file
-- 
GitLab