From 06fc3cf8a9cd00b6887efaf0fe0acb9173a86de8 Mon Sep 17 00:00:00 2001 From: Martin Bauer <martin.bauer@fau.de> Date: Wed, 26 Jul 2017 13:09:28 +0200 Subject: [PATCH] New simple Neumann boundary (copy values of next inner cell) --- boundaries/__init__.py | 2 +- boundaries/boundaryconditions.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/boundaries/__init__.py b/boundaries/__init__.py index 925579cb..a07c43c5 100644 --- a/boundaries/__init__.py +++ b/boundaries/__init__.py @@ -1,2 +1,2 @@ -from lbmpy.boundaries.boundaryconditions import NoSlip, NoSlipFullWay, UBB, FixedDensity +from lbmpy.boundaries.boundaryconditions import NoSlip, NoSlipFullWay, UBB, FixedDensity, NeumannByCopy from lbmpy.boundaries.boundaryhandling import BoundaryHandling \ No newline at end of file diff --git a/boundaries/boundaryconditions.py b/boundaries/boundaryconditions.py index 245f988c..2849747e 100644 --- a/boundaries/boundaryconditions.py +++ b/boundaries/boundaryconditions.py @@ -161,3 +161,15 @@ class FixedDensity(Boundary): for eq in symmetricEq.subexpressions] return subExprs + [sp.Eq(pdfField[neighbor](inverseDir), 2 * eq_component - pdfField(directionSymbol))] + +class NeumannByCopy(Boundary): + def __call__(self, pdfField, directionSymbol, lbMethod, **kwargs): + neighbor = offsetFromDir(directionSymbol, lbMethod.dim) + return [sp.Eq(pdfField[neighbor](directionSymbol), pdfField(directionSymbol))] + + def __hash__(self): + # All boundaries of these class behave equal -> should also be equal + return hash("NeumannByCopy") + + def __eq__(self, other): + return type(other) == NeumannByCopy -- GitLab