diff --git a/src/lbmpy/methods/abstractlbmethod.py b/src/lbmpy/methods/abstractlbmethod.py index 4ec0048ca45f0a1a87cda19b5171f1e6dde2ae65..17ee881dd4ab3f1779082d10dac6397662a3736e 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 0000000000000000000000000000000000000000..02915df058d1de7e6bb582c223e94bbe111d46cb --- /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