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

EsoTwist field accessor

parent 8c7b7399
No related branches found
No related tags found
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