Skip to content
Snippets Groups Projects
Unverified Commit 2b7122d0 authored by Andreas Klöckner's avatar Andreas Klöckner Committed by GitHub
Browse files

Merge pull request #10 from inducer/eager-norm-improvements

Eager norm improvements
parents 5b54cc25 b5ca2829
No related branches found
No related tags found
No related merge requests found
Pipeline #61259 passed
......@@ -162,23 +162,32 @@ class EagerDGDiscretization(DGDiscretizationWithBoundaries):
return self._bound_face_mass(dd)(u=vec)
@memoize_method
def _norm(self, p):
return bind(self, sym.norm(p, sym.var("arg")), local_only=True)
def _norm(self, p, dd):
return bind(self,
sym.norm(p, sym.var("arg", dd=dd), dd=dd),
local_only=True)
def norm(self, vec, p=2, dd=None):
if dd is None:
dd = "vol"
dd = sym.as_dofdesc(dd)
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
self.norm(vec[idx], dd=dd)**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))
return max(
self.norm(vec[idx], np.inf, dd=dd)
for idx in np.ndindex(vec.shape))
else:
raise ValueError("unsupported norm order")
return self._norm(p)(arg=vec)
return self._norm(p, dd)(arg=vec)
@memoize_method
def _nodal_reduction(self, operator, dd):
......
......@@ -662,7 +662,7 @@ def mv_normal(dd, ambient_dim, dim=None):
return cse(mv, "normal", cse_scope.DISCRETIZATION)
def normal(dd, ambient_dim, dim=None, quadrature_tag=None):
def normal(dd, ambient_dim, dim=None):
return mv_normal(dd, ambient_dim, dim).as_vector()
# }}}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment