diff --git a/src/lbmpy/boundaries/boundaryconditions.py b/src/lbmpy/boundaries/boundaryconditions.py index 701ba566a8aed2529c534a421276dfc19cf26513..6dcf9d458608b9403ab9d92d5a67df124977181b 100644 --- a/src/lbmpy/boundaries/boundaryconditions.py +++ b/src/lbmpy/boundaries/boundaryconditions.py @@ -273,7 +273,7 @@ class QuadraticBounceBack(LbBoundary): v = [TypedSymbol(f"c_{i}", self.data_type) for i in range(lb_method.stencil.D)] v_inv = [TypedSymbol(f"c_inv_{i}", self.data_type) for i in range(lb_method.stencil.D)] one = sp.Float(1.0) - half = sp.Rational(1, 3) + half = sp.Rational(1, 2) subexpressions = [Assignment(pdf_symbols[i], pdf) for i, pdf in enumerate(pdf_field_accesses)] subexpressions.append(Assignment(f_xf, f_out(dir_symbol))) @@ -296,11 +296,6 @@ class QuadraticBounceBack(LbBoundary): u = sp.Matrix(cqc.velocity_symbols) compressible = cqc.compressible zero_centered = cqc.zero_centered_pdfs - if not zero_centered and not lb_method.equilibrium_distribution.deviation_only: - raise NotImplementedError("The combination of PDFs stored in absolute form (zero_centered=False) and " - "the equilibrium in its absolute form (delta_equilibrium=False) is not yet " - "supported by the QuadraticBounceBack boundary condition. For this combination " - "the NoSlipLinearBouzidi boundary condition can be used as an alternative") cqe = cqc.equilibrium_input_equations_from_pdfs(pdf_symbols, False) subexpressions.append(cqe.all_assignments) diff --git a/tests/test_interpolation_boundaries.py b/tests/test_interpolation_boundaries.py index 5e0c3d6c79ffcf93d455127796d42670f0fbdfc2..e99e6dd24660e369140d303c1ad57aedfc95d345 100644 --- a/tests/test_interpolation_boundaries.py +++ b/tests/test_interpolation_boundaries.py @@ -76,23 +76,19 @@ def couette_flow(stencil, method_enum, zero_centered, wall_distance, compressibl check_velocity(noslip_velocity, bouzidi_velocity, wall_distance) - zero_centered = lb_step_noslip.method.conserved_quantity_computation.zero_centered_pdfs - deviation_only = lb_step_noslip.method.equilibrium_distribution.deviation_only + lb_step_quadratic_bb = LatticeBoltzmannStep(domain_size=domain_size, periodicity=(True, False), + lbm_config=lbm_config, compute_velocity_in_every_step=True) - if not (zero_centered is False and deviation_only is False): - lb_step_quadratic_bb = LatticeBoltzmannStep(domain_size=domain_size, periodicity=(True, False), - lbm_config=lbm_config, compute_velocity_in_every_step=True) + lb_step_quadratic_bb.boundary_handling.set_boundary(quadratic_bb, slice_from_direction('S', dim)) + lb_step_quadratic_bb.boundary_handling.set_boundary(moving_wall, slice_from_direction('N', dim)) + lb_step_quadratic_bb.run(timesteps) - lb_step_quadratic_bb.boundary_handling.set_boundary(quadratic_bb, slice_from_direction('S', dim)) - lb_step_quadratic_bb.boundary_handling.set_boundary(moving_wall, slice_from_direction('N', dim)) - lb_step_quadratic_bb.run(timesteps) - - if dim == 2: - quadratic_bb_velocity = lb_step_bouzidi.velocity[domain_size[0] // 2, :, 0] - else: - quadratic_bb_velocity = lb_step_bouzidi.velocity[domain_size[0] // 2, :, domain_size[2] // 2, 0] + if dim == 2: + quadratic_bb_velocity = lb_step_quadratic_bb.velocity[domain_size[0] // 2, :, 0] + else: + quadratic_bb_velocity = lb_step_quadratic_bb.velocity[domain_size[0] // 2, :, domain_size[2] // 2, 0] - check_velocity(noslip_velocity, quadratic_bb_velocity, wall_distance) + check_velocity(noslip_velocity, quadratic_bb_velocity, wall_distance) @pytest.mark.parametrize("zero_centered", [False, True])