diff --git a/src/walberla/codegen/__init__.py b/src/walberla/codegen/__init__.py index 50097ef8b19500c16e44a5e25622d4fbaf6889d9..bf850906eba200d7ce81976a9a3319acd8d45a3f 100644 --- a/src/walberla/codegen/__init__.py +++ b/src/walberla/codegen/__init__.py @@ -1,5 +1,4 @@ from .api import real_t, Vector3, GhostLayerFieldPtr, glfield, IBlockPtr -from .postprocessing import CaptureToClass from .sweep import Sweep from .build_config import WalberlaBuildConfig @@ -9,7 +8,6 @@ __all__ = [ "GhostLayerFieldPtr", "glfield", "IBlockPtr", - "CaptureToClass", "Sweep", "WalberlaBuildConfig", ] diff --git a/src/walberla/codegen/postprocessing.py b/src/walberla/codegen/postprocessing.py deleted file mode 100644 index d4a911f1318cca77802af0d321a0e01d89b8c8ab..0000000000000000000000000000000000000000 --- a/src/walberla/codegen/postprocessing.py +++ /dev/null @@ -1,58 +0,0 @@ -from typing import Iterable -import sympy as sp - -from pystencils.types import deconstify -from pystencilssfg.ir.postprocessing import SfgDeferredNode, PostProcessingContext -from pystencilssfg.ir import ( - SfgCallTreeNode, - SfgStatements, - SfgVisibility, - SfgVisibilityBlock, - SfgMemberVariable, - SfgSequence, - SfgConstructor, -) -from pystencilssfg.lang import AugExpr, SfgVar -from pystencilssfg.exceptions import SfgException - - -class CaptureToClass(SfgDeferredNode): - def __init__( - self, ignore: Iterable[str | SfgVar | AugExpr | sp.Symbol] = () - ) -> None: - self._ignore = set() - for ig in ignore: - if isinstance(ig, AugExpr): - self._ignore |= ig.depends - elif isinstance(ig, sp.Symbol): - self._ignore.add(ig.name) - else: - self._ignore.add(ig) - - def expand(self, ppc: PostProcessingContext) -> SfgCallTreeNode: - cls = ppc.enclosing_class - if cls is None: - raise SfgException("Cannot capture variables to class in a free function") - - statements: list[SfgStatements] = [] - captured: list[SfgVar] = [] - members_block = SfgVisibilityBlock(SfgVisibility.PRIVATE) - - for var in ppc.live_variables: - if not (var in self._ignore or var.name in self._ignore): - member = SfgMemberVariable(f"{var}_", deconstify(var.dtype)) - members_block.append_member(member) - captured.append(var) - statements.append( - SfgStatements(f"{var.dtype.c_string()} {var.name} {{ {member} }};", [var], []) - ) - - cls.append_visibility_block(members_block) - - constructor_block = SfgVisibilityBlock(SfgVisibility.PUBLIC) - constructor_block.append_member( - SfgConstructor(captured, [f"{var}_ {{ {var} }}" for var in captured]) - ) - cls.append_visibility_block(constructor_block) - - return SfgSequence(statements)