From 5c7a50d8873f5854c98b60a34ce335d98ffa1c92 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Tue, 6 Mar 2018 14:23:57 +0100
Subject: [PATCH] Pyphasefield updates

---
 transformations/transformations.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/transformations/transformations.py b/transformations/transformations.py
index 73bc8361d..299201f0c 100644
--- a/transformations/transformations.py
+++ b/transformations/transformations.py
@@ -1,6 +1,7 @@
 from collections import defaultdict, OrderedDict
 from operator import attrgetter
 from copy import deepcopy
+import functools
 
 import sympy as sp
 from sympy.logic.boolalg import Boolean
@@ -22,6 +23,9 @@ def filteredTreeIteration(node, nodeType):
 def fastSubs(term, subsDict):
     """Similar to sympy subs function.
     This version is much faster for big substitution dictionaries than sympy version"""
+    if type(term) is sp.Matrix:
+        return term.copy().applyfunc(functools.partial(fastSubs, subsDict=subsDict))
+
     def visit(expr):
         if expr in subsDict:
             return subsDict[expr]
@@ -293,6 +297,7 @@ def substituteArrayAccessesWithConstants(astNode):
         for a in astNode.args:
             substituteArrayAccessesWithConstants(a)
 
+
 def resolveBufferAccesses(astNode, baseBufferIndex, readOnlyFieldNames=set()):
     def visitSympyExpr(expr, enclosingBlock, sympyAssignment):
         if isinstance(expr, Field.Access):
-- 
GitLab