From af898f135891962973b2f1f22094fee6dd3c98e6 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Fri, 24 Jul 2020 12:56:56 -0500 Subject: [PATCH] Let eager norm support object arrays --- grudge/eager.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/grudge/eager.py b/grudge/eager.py index a67f2b46..a1385685 100644 --- a/grudge/eager.py +++ b/grudge/eager.py @@ -166,6 +166,18 @@ class EagerDGDiscretization(DGDiscretizationWithBoundaries): return bind(self, sym.norm(p, sym.var("arg")), local_only=True) def norm(self, vec, p=2): + if (isinstance(vec, np.ndarray) + and vec.dtype.char == "O" + and not isinstance(vec, DOFArray)): + if p == 2: + return sum( + self.norm(vec[idx])**2 + for idx in np.ndindex(vec.shape))**0.5 + elif p == np.inf: + return max(self.norm(vec[idx]) for idx in np.ndindex(vec.shape)) + else: + raise ValueError("unsupported norm order") + return self._norm(p)(arg=vec) @memoize_method -- GitLab