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