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