From fe94402a46e352ca4509d7d469a2e9138539ad2a Mon Sep 17 00:00:00 2001 From: Stephan Seitz <stephan.seitz@fau.de> Date: Fri, 27 Sep 2019 13:31:52 +0200 Subject: [PATCH] Bugfix: count field as accessed even if through InterpolatorAccess instead of ResolvedFieldAccess --- pystencils/astnodes.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pystencils/astnodes.py b/pystencils/astnodes.py index 5cb8c8d3d..eb5910f9c 100644 --- a/pystencils/astnodes.py +++ b/pystencils/astnodes.py @@ -211,17 +211,18 @@ class KernelFunction(Node): return self._body, @property - def fields_accessed(self) -> Set['ResolvedFieldAccess']: + def fields_accessed(self) -> Set[Field]: """Set of Field instances: fields which are accessed inside this kernel function""" - return set(o.field for o in self.atoms(ResolvedFieldAccess)) + from pystencils.interpolation_astnodes import InterpolatorAccess + return set(o.field for o in itertools.chain(self.atoms(ResolvedFieldAccess), self.atoms(InterpolatorAccess))) @property - def fields_written(self) -> Set['ResolvedFieldAccess']: + def fields_written(self) -> Set[Field]: assignments = self.atoms(SympyAssignment) return {a.lhs.field for a in assignments if isinstance(a.lhs, ResolvedFieldAccess)} @property - def fields_read(self) -> Set['ResolvedFieldAccess']: + def fields_read(self) -> Set[Field]: assignments = self.atoms(SympyAssignment) return set().union(itertools.chain.from_iterable([f.field for f in a.rhs.free_symbols if hasattr(f, 'field')] for a in assignments)) -- GitLab