From 33c432e0a7f12f8cc9e1856aa8d5d1a0e2cc2b50 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Fri, 8 Jan 2016 14:44:37 -0600 Subject: [PATCH] Make CFunctions apply to *scalar* and array data --- grudge/execution.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/grudge/execution.py b/grudge/execution.py index 2350a9d9..04bc71d9 100644 --- a/grudge/execution.py +++ b/grudge/execution.py @@ -94,10 +94,15 @@ class ExecutionMapper(mappers.Evaluator, assert isinstance(expr.function, Variable) # FIXME: Make a way to register functions - import pyopencl.clmath as clmath - func = getattr(clmath, expr.function.name) - return func(*[self.rec(p) for p in expr.parameters]) + pars = [self.rec(p) for p in expr.parameters] + if any(isinstance(par, cl.array.Array) for par in pars): + import pyopencl.clmath as clmath + func = getattr(clmath, expr.function.name) + else: + func = getattr(np, expr.function.name) + + return func(*pars) def map_nodal_sum(self, op, field_expr): return cl.array.sum(self.rec(field_expr)) -- GitLab