From 56c44c65e0b045c3b6865ab667dc9dfc6a79382f Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 5 Sep 2017 18:07:54 -0500 Subject: [PATCH] Use xreplace over subs in sympy --- sumpy/expansion/__init__.py | 2 +- sumpy/expansion/multipole.py | 4 ++-- sumpy/kernel.py | 2 +- sumpy/symbolic.py | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sumpy/expansion/__init__.py b/sumpy/expansion/__init__.py index 6b986233..5432a54e 100644 --- a/sumpy/expansion/__init__.py +++ b/sumpy/expansion/__init__.py @@ -299,7 +299,7 @@ class LinearRecurrenceBasedDerivativeWrangler(DerivativeWrangler): return defaultdict(lambda: [], ((irow, [ (icol, - coeff.subs(self._rscale_symbol, rscale) + coeff.xreplace({self._rscale_symbol: rscale}) if isinstance(coeff, sp.Basic) else coeff) for icol, coeff in row]) diff --git a/sumpy/expansion/multipole.py b/sumpy/expansion/multipole.py index 4db9250b..8f66347b 100644 --- a/sumpy/expansion/multipole.py +++ b/sumpy/expansion/multipole.py @@ -25,7 +25,7 @@ THE SOFTWARE. from six.moves import range, zip import sumpy.symbolic as sym # noqa -from sumpy.symbolic import vector_subs +from sumpy.symbolic import vector_xreplace from sumpy.expansion import ( ExpansionBase, VolumeTaylorExpansion, LaplaceConformingVolumeTaylorExpansion, HelmholtzConformingVolumeTaylorExpansion) @@ -105,7 +105,7 @@ class VolumeTaylorMultipoleExpansionBase(MultipoleExpansionBase): if self.kernel.has_efficient_scale_adjustment: return ( self.kernel.adjust_for_kernel_scaling( - vector_subs( + vector_xreplace( expr, bvec, bvec/rscale), rscale, nderivatives) diff --git a/sumpy/kernel.py b/sumpy/kernel.py index ddfba682..15ad22a5 100644 --- a/sumpy/kernel.py +++ b/sumpy/kernel.py @@ -340,7 +340,7 @@ class ExpressionKernel(Kernel): raise ValueError("dist_vec length does not match expected dimension") from sumpy.symbolic import Symbol - expr = expr.subs(dict( + expr = expr.xreplace(dict( (Symbol("d%d" % i), dist_vec_i) for i, dist_vec_i in enumerate(scaled_dist_vec) )) diff --git a/sumpy/symbolic.py b/sumpy/symbolic.py index 55f91284..2d77a82a 100644 --- a/sumpy/symbolic.py +++ b/sumpy/symbolic.py @@ -192,14 +192,14 @@ def make_sym_vector(name, components): [sym.Symbol("%s%d" % (name, i)) for i in range(components)]) -def vector_subs(expr, from_vec, to_vec): - subs_pairs = [] +def vector_xreplace(expr, from_vec, to_vec): + substs = {} assert (from_vec.rows, from_vec.cols) == (to_vec.rows, to_vec.cols) for irow in range(from_vec.rows): for icol in range(from_vec.cols): - subs_pairs.append((from_vec[irow, icol], to_vec[irow, icol])) + substs[from_vec[irow, icol]] = to_vec[irow, icol] - return expr.subs(subs_pairs) + return expr.xreplace(substs) def find_power_of(base, prod): -- GitLab