Skip to content
Snippets Groups Projects
Commit 67ae36c3 authored by Markus Holzer's avatar Markus Holzer
Browse files

Implented as real WetNode BC

parent ed868e32
No related merge requests found
Pipeline #54480 failed with stages
in 15 minutes and 38 seconds
......@@ -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()
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment