Skip to content

Advanced Streaming Extensions

This patch extends lbmpy's support for advanced streaming patterns. In particular, the Push-Collide-Stream, AA-Pattern and Esoteric Twist are considered.

  • Boundary Handling: The LBM boundary implementations are overhauled completely. A new framework for defining and generating boundary kernels is introduced, which makes the symbolic definition independent of the streaming pattern. Boundaries can now be defined symbolically using the proxy fields f_out for accessing populations streaming out of a cell, and f_in for populations streaming in to a cell. Those are replaced during the code generation process according to the streaming pattern. The class BetweenTimestepsIndexing used herein can also be used to generate other kernels that run on the PDF-field in-between collision steps.

  • Periodicity Handling: The build-in periodicity synchronization of pystencil's DataHandling does not work for advanced LBM streaming. The new class LBMPeriodicityHandling extends the SerialDataHandling to handle periodicity correctly.

  • Utility: The patch introduces a few utility functions for the work with advanced streaming patterns.

Edited by Markus Holzer

Merge request reports