From 89d087b35d889f5a07086ecb4ed0f3f909b6f522 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Mon, 30 Apr 2018 13:55:40 +0200
Subject: [PATCH] Test for lbmpy boundary conditions NeumannByCopy and
 StreamInConstant

---
 boundaries/__init__.py           |  4 ++--
 boundaries/boundaryconditions.py | 34 +++++++++-----------------------
 2 files changed, 11 insertions(+), 27 deletions(-)

diff --git a/boundaries/__init__.py b/boundaries/__init__.py
index 528d5878..1a3bc2a2 100644
--- a/boundaries/__init__.py
+++ b/boundaries/__init__.py
@@ -1,4 +1,4 @@
-from lbmpy.boundaries.boundaryconditions import NoSlip, UBB, FixedDensity, NeumannByCopy
+from lbmpy.boundaries.boundaryconditions import NoSlip, UBB, FixedDensity, NeumannByCopy, StreamInConstant
 from lbmpy.boundaries.boundaryhandling import LatticeBoltzmannBoundaryHandling
 
-__all__ = ['NoSlip', 'UBB', 'FixedDensity', 'NeumannByCopy', 'LatticeBoltzmannBoundaryHandling']
+__all__ = ['NoSlip', 'UBB', 'FixedDensity', 'NeumannByCopy', 'LatticeBoltzmannBoundaryHandling', 'StreamInConstant']
diff --git a/boundaries/boundaryconditions.py b/boundaries/boundaryconditions.py
index bf558664..4d191275 100644
--- a/boundaries/boundaryconditions.py
+++ b/boundaries/boundaryconditions.py
@@ -215,36 +215,20 @@ class NeumannByCopy(Boundary):
         return type(other) == NeumannByCopy
 
 
-class StreamInZero(Boundary):
-    def __call__(self, pdf_field, direction_symbol, lb_method, **kwargs):
-        neighbor = BoundaryOffsetInfo.offset_from_dir(direction_symbol, lb_method.dim)
-        inverse_dir = BoundaryOffsetInfo.inv_dir(direction_symbol)
-        return [Assignment(pdf_field[neighbor](inverse_dir), 0),
-                Assignment(pdf_field[neighbor](direction_symbol), 0)]
-
-    def __hash__(self):
-        # All boundaries of these class behave equal -> should also be equal
-        return hash("StreamInZero")
-
-    def __eq__(self, other):
-        return type(other) == StreamInZero
+class StreamInConstant(Boundary):
+    def __init__(self, constant, name=None):
+        super(StreamInConstant, self).__init__(name)
+        self._constant = constant
 
-
-class AntiBounceBack(Boundary):
-
-    """No-Slip, (half-way) simple bounce back boundary condition, enforcing zero velocity at obstacle"""
     def __call__(self, pdf_field, direction_symbol, lb_method, **kwargs):
         neighbor = BoundaryOffsetInfo.offset_from_dir(direction_symbol, lb_method.dim)
         inverse_dir = BoundaryOffsetInfo.inv_dir(direction_symbol)
-        rhs = pdf_field(direction_symbol)
-        t = -rhs
-        return [SympyAssignment(pdf_field[neighbor](inverse_dir), t)]
+        return [Assignment(pdf_field[neighbor](inverse_dir), self._constant),
+                Assignment(pdf_field[neighbor](direction_symbol), self._constant)]
 
     def __hash__(self):
-        # All boundaries of these class behave equal -> should also be equal (as long as name is equal)
-        return hash(self.name)
+        # All boundaries of these class behave equal -> should also be equal
+        return hash("StreamInConstant")
 
     def __eq__(self, other):
-        if not isinstance(other, AntiBounceBack):
-            return False
-        return self.name == other.name
+        return type(other) == StreamInConstant
-- 
GitLab