diff --git a/grudge/function_registry.py b/grudge/function_registry.py index 2f56eba4ad26d066039f5ac373619ac4ac10a656..4d521560d8e6c83a8e9fa238b3c46955dc62e7a7 100644 --- a/grudge/function_registry.py +++ b/grudge/function_registry.py @@ -136,6 +136,7 @@ class CElementwiseBinaryFunction(Function): return func(arg0, arg1) from pymbolic.primitives import Variable + @memoize_in(self, "map_call_knl_%s" % func_name) def knl(): i = Variable("i") diff --git a/grudge/symbolic/operators.py b/grudge/symbolic/operators.py index cb88fa64a60aeea6b7abfc8ffa34c2f21d06aa38..5f5cd5c9e0d6c7cc895db68f4110ff8a74d63e15 100644 --- a/grudge/symbolic/operators.py +++ b/grudge/symbolic/operators.py @@ -152,9 +152,10 @@ class InterpolationOperator(Operator): from pytools.obj_array import with_object_array_or_scalar def interp_one(subexpr): + from pymbolic.primitives import is_constant if self.dd_in == self.dd_out: return subexpr - elif isinstance(subexpr, (int, float, complex, np.number)): + elif is_constant(subexpr): return subexpr else: from grudge.symbolic.primitives import OperatorBinding