Skip to content
Snippets Groups Projects
Commit 724c9552 authored by Martin Bauer's avatar Martin Bauer
Browse files

EsoTwist field accessor

parent 8c7b7399
Branches
Tags
No related merge requests found
...@@ -4,6 +4,12 @@ from lbmpy.stencils import inverse_direction ...@@ -4,6 +4,12 @@ from lbmpy.stencils import inverse_direction
from pystencils import Field from pystencils import Field
__all__ = ['PdfFieldAccessor', 'CollideOnlyInplaceAccessor', 'StreamPullTwoFieldsAccessor',
'AAEvenTimeStepAccessor', 'AAOddTimeStepAccessor',
'EsoTwistEvenTimeStepAccessor', 'EsoTwistOddTimeStepAccessor',
'visualize_pdf_field_accessor', 'visualize_field_mapping']
# ------------------------------------------------ Interface ----------------------------------------------------------- # ------------------------------------------------ Interface -----------------------------------------------------------
from pystencils.astnodes import LoopOverCoordinate from pystencils.astnodes import LoopOverCoordinate
...@@ -121,6 +127,44 @@ class AAOddTimeStepAccessor(PdfFieldAccessor): ...@@ -121,6 +127,44 @@ class AAOddTimeStepAccessor(PdfFieldAccessor):
return [field[d](i) for i, d in enumerate(stencil)] return [field[d](i) for i, d in enumerate(stencil)]
class EsoTwistOddTimeStepAccessor(PdfFieldAccessor):
@staticmethod
def read(field, stencil):
result = []
for direction in stencil:
inv_dir = inverse_direction(direction)
spatial_offset = tuple(max(e, 0) for e in inv_dir)
result.append(field[spatial_offset](stencil.index(inv_dir)))
return result
@staticmethod
def write(field, stencil):
result = []
for i, direction in enumerate(stencil):
spatial_offset = tuple(max(e, 0) for e in direction)
result.append(field[spatial_offset](i))
return result
class EsoTwistEvenTimeStepAccessor(PdfFieldAccessor):
@staticmethod
def read(field, stencil):
result = []
for i, direction in enumerate(stencil):
spatial_offset = tuple(max(-e, 0) for e in direction)
result.append(field[spatial_offset](i))
return result
@staticmethod
def write(field, stencil):
result = []
for direction in stencil:
inv_dir = inverse_direction(direction)
spatial_offset = tuple(max(e, 0) for e in direction)
result.append(field[spatial_offset](stencil.index(inv_dir)))
return result
# -------------------------------------------- Visualization ----------------------------------------------------------- # -------------------------------------------- Visualization -----------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment