From bb265e0bbb19c0c12d100eb88f08590760d13676 Mon Sep 17 00:00:00 2001
From: Martin Bauer <martin.bauer@fau.de>
Date: Mon, 21 Nov 2016 17:52:06 +0100
Subject: [PATCH] Benchmarked compilation step - added optimizations

---
 finitedifferences.py | 12 +-----------
 transformations.py   | 11 +++++++++++
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/finitedifferences.py b/finitedifferences.py
index b81a8fa48..171260cdc 100644
--- a/finitedifferences.py
+++ b/finitedifferences.py
@@ -1,6 +1,7 @@
 import numpy as np
 import sympy as sp
 from pystencils.field import Field
+from pystencils.transformations import fastSubs
 
 
 def grad(var, dim=3):
@@ -131,14 +132,3 @@ def __upDownOffsets(d, dim):
     coord[d] = -1
     down = np.array(coord, dtype=np.int)
     return up, down
-
-
-def fastSubs(term, subsDict):
-    """Similar to sympy subs function.
-    This version is much faster for big substitution dictionaries than sympy version"""
-    def visit(expr):
-        if expr in subsDict:
-            return subsDict[expr]
-        paramList = [visit(a) for a in expr.args]
-        return expr if not paramList else expr.func(*paramList)
-    return visit(term)
diff --git a/transformations.py b/transformations.py
index e2189ace6..e2c2e2291 100644
--- a/transformations.py
+++ b/transformations.py
@@ -9,6 +9,17 @@ from pystencils.slicing import normalizeSlice
 import pystencils.ast as ast
 
 
+def fastSubs(term, subsDict):
+    """Similar to sympy subs function.
+    This version is much faster for big substitution dictionaries than sympy version"""
+    def visit(expr):
+        if expr in subsDict:
+            return subsDict[expr]
+        paramList = [visit(a) for a in expr.args]
+        return expr if not paramList else expr.func(*paramList)
+    return visit(term)
+
+
 def makeLoopOverDomain(body, functionName, iterationSlice=None, ghostLayers=None, loopOrder=None):
     """
     Uses :class:`pystencils.field.Field.Access` to create (multiple) loops around given AST.
-- 
GitLab