diff --git a/lbmpy/boundaries/boundaryconditions.py b/lbmpy/boundaries/boundaryconditions.py index a987af6a793f16d93293ae8c12a75eb411f365a0..e887170970bc83b64f85a7cec730baeb37b2e265 100644 --- a/lbmpy/boundaries/boundaryconditions.py +++ b/lbmpy/boundaries/boundaryconditions.py @@ -604,6 +604,8 @@ class FixedDensity(LbBoundary): # end class FixedDensity class NoslipEquilibriumReconstruction(LbBoundary): + single_link = True + inner_or_boundary = False def __init__(self, normal_direction, velocity=None, name=None): if isinstance(normal_direction, str): @@ -636,25 +638,18 @@ class NoslipEquilibriumReconstruction(LbBoundary): return [NeighbourOffsetArrays(lb_method.stencil)] def __call__(self, f_out, f_in, dir_symbol, inv_dir, lb_method, index_field): - neighbor_offset = NeighbourOffsetArrays.neighbour_offset(dir_symbol, lb_method.stencil) - tangential_offset = tuple(offset + normal for offset, normal in zip(neighbor_offset, self.normal_direction)) - cqc = lb_method.conserved_quantity_computation density_symbol = sp.Symbol("rho") - pdf_field_accesses = [f_out[tangential_offset](i) for i in range(len(lb_method.stencil))] + pdf_field_accesses = [f_out[self.normal_direction](i) for i in range(len(lb_method.stencil))] density_equations = cqc.output_equations_from_pdfs(pdf_field_accesses, {'density': density_symbol}) substitutions = {u_symbolic: u for u_symbolic, u in zip(cqc.velocity_symbols, self.velocity)} - - conditions = list() equilibrium_terms = lb_method.get_equilibrium_terms().subs(substitutions) - for i, term in enumerate(equilibrium_terms[1:]): - conditions.append((term, sp.Eq(dir_symbol, sp.Integer(i + 1)))) - - expr = sp.Piecewise(*conditions, (equilibrium_terms[0], True)) subexpressions = density_equations.all_assignments - main_assignments = [Assignment(f_in(inv_dir[dir_symbol]), expr)] + main_assignments = list() + for i in range(len(lb_method.stencil)): + main_assignments.append(Assignment(f_out(i), equilibrium_terms[i])) ac = AssignmentCollection(main_assignments, subexpressions=subexpressions) ac = ac.new_without_unused_subexpressions()